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
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