SFTP_Client – proste przesyłanie plików

SFTP_Client – jest to prosta aplikacja napisana w Javie, która umożliwia wygodne dla mnie przesyłanie plików DO i Z serwera. Wykorzystuję ją do przechwytywania kopii bezpieczeństwa bez konieczności uruchamiania dodatkowych usług na serwerze, ponieważ mechanizm korzysta z poświadczeń SSH.

Do uruchomienia aplikacji potrzebne są dwa pliki JSON. Pierwszy z nich to konfiguracja dostępu do SSH. Drugi powinien zawierać instrukcje do wykonania np. get_ls. W pliku może znaleźć się więcej niż jedna instrukcja oraz do instrukcji można dopisać wiele lokalizacji.

Przykładowa konfiguracja
{
 "host": "adres_hosta",
 "username": "login",
 "password": "hasło",
 "port": 22
}

Przykładowy plik z instrukcjami
{
 "get": [
   {"from": "/plik_źródłowy", "to": "/plik_docelowy"}
 ],
 "get_ls": [
   {"from": "/lokalizacja1/*201902*", "to": "/katalog_docelowy1"},
   {"from": "/lokalizacja2/*$_DATE_N*", "to": "/katalog_docelowy2"}
 ]
}

Oprócz przekopiowania plików do wskazanego miejsca program nadpisuje plik z instrukcjami wcześniej uzupełniając go takimi danymi jak data wykonania, rozmiary plików czy wynik listowania.

Dostępne są następujące instrukcje
ls – listuje serwer (tablica obiektów z polem „from” – ścieżka do wylistowania np. „/home/jacek/files/*201902*”)
put – wysyła na serwer (tablica obiektów z polami „from” i „to”)
get – pobiera z serwera (tablica obiektów z polami „from” i „to”)
get_ls – listuje serwer, a wynik przesyła do klienta (tablica obiektów z polami „from” i „to”)
put_ls – listuje klienta, a wynik przesyła na serwer (tablica obiektów z polami „from” i „to”)

Ze względu na to, że pewne operacje wykonują się z poziom CRONA i z reguły interesują mnie aktualne pliki to dołożyłem możliwość używania kluczy, które są dynamicznie zastępowane np. aktualną datą.

Klucze do formatowania danych
$_TIMESTAMP_SHN – data i czas w formacie YYYYMMDDHHMM
$_TIMESTAMP_SH – data i czas w formacie YYYY-MM-DD HH:MM
$_TIMESTAMP_N – data i czas w formacie YYYYMMDDHHMMSS
$_TIMESTAMP – data i czas w formacie YYYY-MM-DD HH:MM:SS
$_TIME_N – czas w formacie HHMM
$_TIME – czas w formacie HH:MM
$_DATE_N – data w formacie YYYYMMDD
$_DATE – data w formacie YYYY-MM-DD

PLIK DO POBRANIA »

Wykonanie aplikacji java -jar SFTP_Client.jar konfiguracja.json instrukcje.json

Biblioteki, dzięki którym aplikacja powstała w tak krótkim czasie:
JSON-java
JSch