Dlaczego nie zawsze używać rsync?

17

Chciałem zapytać, czy jest jakiś powód, aby nie używać rsyncwszystkiego i porzucić cp?
Nie wiedziałem o tym, rsynca teraz nie wiem, dlaczego cpkiedykolwiek jest potrzebny.

Jim
źródło
9
rsyncnie wszędzie cpjest dostępne .
Mat
3
Która instalacja? Linux? Który? Unix? tak samo. BSD? Nigdy nie wiesz, co jest domyślnie.
terdon
5
Naprawdę nie ma „domyślnej instalacji” dla Linuksa. Każda dystrybucja ma swój zestaw podstawowych pakietów i wiele ich odmian. Również wtedy, gdy trzeba pracować na wielu systemach, korzystanie z narzędzi dostępnych wszędzie sprawia, że ​​wszystko jest prostsze.
Mat
4
@Mat: Istnieje domyślna (lub podstawowa) instalacja w zakresie, w jakim dystrybucje linuksowe są zgodne, poprzez podstawowy obszar użytkownika GNU, z POSIX, który wymaga (i określa funkcjonowanie), cpale nie rsync: pubs.opengroup.org/onlinepubs/007904875 /utilities/contents.htm
goldilocks 15.09.13
1
Jestem prawie pewien, że Debian GNU / Linux domyślnie instaluje rsync. To jednak nie dostępne w środowisku instalacyjnym i ratowniczej. (Użyłem tego wcześnie dzisiaj, aby przenieść zawartość mojej partycji głównej z jednego dysku na drugi. Użyłem instalacyjnego DVD 7.1.0 amd64.)
CVn

Odpowiedzi:

24

Ściśle mówiąc tak, zawsze możesz użyć rsync. Od man rsync(moje podkreślenie):

Rsync to szybkie i niezwykle wszechstronne narzędzie do kopiowania plików. Może kopiować lokalnie, do / z innego hosta przez dowolną zdalną powłokę lub do / z zdalnego demona rsync. Oferuje dużą liczbę opcji, które kontrolują każdy aspekt jego zachowania i pozwalają na bardzo elastyczną specyfikację zestawu plików do
skopiowania. Słynie z algorytmu transferu delta, który zmniejsza ilość danych przesyłanych przez sieć, wysyłając tylko różnice między plikami źródłowymi a istniejącymi plikami w miejscu docelowym. Rsync jest szeroko stosowany do tworzenia kopii zapasowych i kopii lustrzanych oraz jako ulepszone polecenie kopiowania do codziennego użytku.

Teraz czasami nie warto wpisywać tych kilku dodatkowych postaci, aby użyć czołgu do zabicia muchy. Ponadto rsyncczęsto nie jest instalowany domyślnie, więc cpdobrze jest mieć.

terdon
źródło
Masz na myśli, że nie jest dostępny w ramach instalacji domyślnej, ale jako osobny plik do pobrania?
Jim
1
@Jim tak, czasami musisz się zainstalować w rsynczależności od systemu, w którym się znajdujesz. Jeśli nie masz rootdostępu, może to być trudne. cpjest POSIX i zawsze tam będzie.
terdon
9
cpjest częścią jądra GNU, więc zawsze jest instalowany na każdym systemie Linux, podczas gdy rsyncnie jest.
Martin von Wittich,
1
sometimes it is just not worth typing those few extra characters- Alias pcp(dla „kopii postępu”) do tego;)
Izkata
19

Rsync może być wolniejszy niż cpw niektórych sytuacjach. Na przykład, gdy miejsce docelowe istnieje i rsync kończy kilka drogich porównań dla każdego bloku, nie znajduje równych bloków i kopiuje pełny plik źródłowy.

Również gdy pliki docelowe nie istnieją, rsync nie zapewnia żadnej przewagi nad cp.

maxschlepzig
źródło
1
Poniżej metodologia kopiowania rsync jest znacznie wolniejsza. Zobacz unix.stackexchange.com/questions/374071/… . Ciąg cp pokazuje (od tego zapisu), prostą sekwencję operacji odczytu 32 KB / 32 KB zapisu. Tymczasem Rsync wykonuje odczyt / 4092-bajtowy + 4-bajtowy zapis do gniazda / odczyt z gniazda / 250KB zapis do pliku. Robię rsync 36T plików o mieszanym rozmiarze przy przepustowości 130 MB / s. Potrafię potroić to za pomocą cp -a. rsync wygrywa, jak mówisz, gdy chcesz „sprawić, aby” wyglądało to „tak” w katalogach, które są już podobne.
Mike S
7

Myślę, że rsyncnie radzi sobie z kopiowaniem rzadkich plików w prosty sposób. cpdomyślnie obsługuje to bardzo dobrze.

wcang
źródło
6
To robi z -Sflagą.
terdon
2
@terdon, no cóż, zapoznaj się z tym artykułem: barricane.com/rsync-vm-sparse-inplace-kvm-vmware .
wcang
Ach, dziękuję, powinieneś dodać to do swojej odpowiedzi. Właśnie szybko przeszukałem stronę man sparse.
terdon
4

Ponieważ cpw rsync brakuje tej flagi:

-i, --interactive
       prompt before overwrite (overrides a previous -n option)
Dalker
źródło
Nie, chociaż istnieje -nrsync (tryb próbny), który może być swego rodzaju substytutem tej funkcji.
Niloct