5 Aug 2008

rsync / scp resume

Czasami każdy z nas zmuszony jest przesłać po zawodnym połączeniu dużą ilość danych (czy to w MB, czy w ilości plików) w sposób bezpieczny, ale jak to zrobić kiedy "Charyzjusze" sniffują hasła z ftp? Jednym ze sposobów jest wykorzystanie standardowych narzędzi systemu Linux:
  • rsync
  • ssh(d)
Rozwiązaniem problemu jest następująca komenda:
rsync -avzP --rsh=ssh uname_remote_srv@addr_remote:~/dir_to_get .
Jeśli demon ssh rezyduje na innym porcie niż standardowy (22), można zrobić to tak:
rsync -avzP --rsh="ssh -p port" uname_remote_srv@addr_remote:~/dir_to_get .
Co robią te opcje?:
        -a, --archive               archive mode; equals -rlptgoD (no -H,-A,-X)
        -v, --verbose               increase verbosity
        -z, --compress              compress file data during the transfer
        -P                          same as --partial --progress
Po dokładniejsze opcje zapraszam do zapoznania się z manualem rsynca (man rsync).

By wysłać dane na jakiś serwer wystarczy zamienić kolejnością ścieżki ;).

Największą zaletą prezentowanego rozwiązania jest wznawianie dużych transferów (nawet z klientów ftp/scp jeśli plik nie był dzielony na segmenty) - tym zajmuje się rsync. Inną zaletą jest to, że po wygenerowaniu kluczy ssh dalej nie trzeba pamiętać haseł. Taki zestaw opcji może posłużyć też do synchronizacji katalogów, ale tylko w jedną stronę ;).