Po tym, jak byłem rozczarowany wydajnością zewnętrznego napędu USB z moim Synology DS251j, przeprowadziłem kilka testów transferu na powłoce.
Co ciekawe, stwierdziłem, że skopiowanie pliku testowego 1 GB zajmuje trzy razy dłużej przy użyciu rsync
niż za pomocą prostej cp
komendy.
Nie mogłem potwierdzić tego zachowania w stacjonarnym systemie Linux. Czy ktoś miał podobne doświadczenie? Czy coś jest nie tak z rsync
DS?
Testcript:
#!/bin/bash
sync
echo `date +%M:%S`
cp /volume1/a.tmp /volumeUSB1/usbshare
sync
echo `date +%M%S`
rsync /volume1/b.tmp /volumeUSB1/usbshare
sync
echo `date +%M:%S`
Pliki a.tmp
i b.tmp
każdy ma 1 GB, volume1
jest punktem montowania dla dysku wewnętrznego /volumeUSB1/usbshare
jest punktem montowania dysku USB 3.
Kolejnym potwierdzeniem tego zachowania jest fakt, że mogłem z łatwością wykonać kopię zapasową całego dysku przez noc, cp
gdy nie było to możliwe rsync
.
W
wydaje się, że przesyłanie całych plików nieco poprawia wydajność - nawet jeśli jest tylko jeden plik, który nie jest obecny w celu.Odpowiedzi:
Można się spodziewać , że rsync będzie wolniejszy niż cp dla pierwszej kopii, ponieważ robi to nieco więcej „do” wracania i „przewijania”. Być może nie potrwa to jednak 3 razy.
Można oczekiwać , że rsync będzie działał wolniej przy kolejnych kopiach „aktualizacji”, jeśli zostanie użyta opcja -c, a suma kontrolna odczytu i kontroli jest kosztowną operacją na komputerze docelowym (wolny dysk, wolny procesor lub niewystarczająca pamięć). Podobnie może być powolne bez -c, jeśli są duże pliki i wiele z nich jest zmienionych.
Jeśli zapomniałeś użyć -t zarówno podczas pierwszego, jak i kolejnego uruchomienia, spowodowałoby to również, że rsync musiałby odczytać i zsumować cały plik.
Zasadniczo, za każdym razem, gdy rsync musi napisać wszystko (lub prawie tak), cp wygra, więc powinieneś uważać, aby ustawić opcje tak, aby mógł wykonać jak najmniej pracy.
Jeśli rsync z całkowicie niezmienionymi plikami nie zostanie ukończony w czasie potrzebnym do „stat” każdego pliku w drzewie (na wolniejszym dysku), oznacza to, że zrobiłeś coś złego.
Inne problemy z używaniem rsync na wolnych komputerach to koszty kompresji i szyfrowania. Powinieneś wyłączyć te opcje (lub ustawić je tak, aby pasowały do tego, czego używasz dla cp) zarówno w rsync, jak i SSH, w miarę możliwości. Oczywiście SSH nie całkowicie wyłącza szyfrowania, ale możesz dostosować szyfrowanie w
~/.ssh/config
(na drugiej maszynie); oto, czego używam do mojej Synology:gdzie „stacja dyskowa” to adres IP twojego serwera NAS.
źródło