/SCP czy RSYNC?

SCP czy RSYNC?

Podziel się

Odkąd ludzie zeszli z drzew zaczęli szukać sposobów na przesyłanie plików, poprzez siec, pomiędzy urządzeniami, działającymi na systemie Linuks. Scp i rsync są dwoma najpopularniejszymi programami, pozwalającymi to właśnie zadanie wykonać. Często spotykam się z tym, że ludzie w moim otoczeniu używają głównie programu scp, a o rsyncu słyszeli, ale jak to mówią, po co go używać skoro scp przecież działa?

So what’s the deal?

Różnica pomiędzy nimi jest dosyć prosta do wytłumaczenia. Scp tworzy binarną kopię i przesyła ją do miejsca docelowego. Scp nie sprawdza czy taki plik już istnieje, czy zmieniła się jedna z tysiąca linijek etc.. Scp ma za zadanie, tak samo jak komenda cp, skopiować i zapisać plik pod określoną przez nas nazwą. Podrzucę przykład komendy, dla osób, które nie są z nią zapoznane.

scp Plik user@domain.com:/remotepath/Kopiapliku

Powyższy przykład przewiduje wysłanie pliku z naszego lokalnego folderu, w którym się znajdujemy, do miejsca na serwerze, ale możemy tej komendy użyć również w drugą stronę:

scp user@domain.com:/remotepath/Plik Kopiapliku

W odróżnieniu od scp, rsync jest bardziej zaawansowany. Rsync zanim zacznie wysyłać plik na serwer sprawdzi czy jest on obecny na serwerze, sprawdzi jego wagę oraz ostatnią modyfikację. Jeśli plik już istnieje i nie różni się od pliku wysyłanego przez nas na serwer (tzn. ich checksum’y są identyczne), rsync nie rozpocznie wysyłania. Jest to przydatny feature gdy kopiujemy całymi folderami i nie wiemy, które pliki zostały wyedytowane, a chcemy z update’ować w szybki sposób zmiany. Rsync używa specjalnego algorytmu do przesyłania danych dzięki czemu przesyłanie jest szybsze niż za pomocą scp. Ciekawostką jest również tworzenie plików tymczasowych przez rsynca, np. w przypadku, gdy plik, który chcemy update’ować jest zlockowany przez jakiś proces, to rsync nadpisze go plikiem tymczasowym „atomicznie”, by nie przerwać dostępu aplikacji do danych znajdujących się w nim. Rsync można uruchomić jednorazowo albo uruchomić jako usługę, która będzie się zachowywać w wyznaczony przez nas sposób. Przykład rsync’a:

rsync -zvh plik user@domain.com:/filetosync

A więc co jest lepsze, SCP CZY RSYNC?

Uważam, że do zadań codziennych, gdy wykonujemy ręcznie pracę, przez wpisanie komendy w terminalu, nie ma potrzeby wyciągać, kolokwialnie mówiąc, kombajnu jakim jest rsync. Powinniśmy jednak uwzględnić go w momencie prac powtarzalnych, wykonywanych z poziomu crona. Gdy potrzebujemy na szybko wysłać plik na serwer, użycie prostego scp znajduje swoje zastosowanie. Według mnie przez długi czas będzie uniwersalnym sposobem wymiany plików.


Podziel się

Wiceprezes grupy XOR, sysadmin i programista, bash'owy guru. Rodzice porzucili go w serwerowni i wychowały go patch panele. Nienawidzi powtarzalnych rzeczy więc jego hobby to automatyzacja i pisanie skryptów.