Mam plik 500 GB, którego kopię zapasową planuję zdalnie. Plik często się zmienia. Zsynchronizuję go z pulpitu na serwer. Oba mogą uruchamiać klienta lub serwer rsync.
Jakie jest właściwe polecenie? Te, których wypróbowałem sofar, trwały wiecznie lub po prostu zachowywały się dziwnie.
Przykład i wyniki:
rsync -cv --partial --inplace --no-whole-file /desktop/file1 myserver.com::module/file1
Wydaje się działać, ale tylko jeśli zrobię to dwa razy (?!). Również powoli.
Czy powyższe polecenie wykonuje sumowanie kontrolne na obu komputerach, czy tylko na jednym wysyłającym? Czy inaczej jest poprawne?
Odpowiedzi:
To nigdy nie będzie szybkie, ponieważ rsync będzie musiał odczytać / zsumować cały plik, a odczyt 500 GB zajmie dużo czasu, chyba że masz go na dyskach SSD lub coś w tym rodzaju.
Spróbować
rsync -vhz --partial --inplace <file/server stuff>
.-c
oznacza, że sumuje cały plik PRZED wykonaniem jakichkolwiek transferów, zamiast używać znacznika czasu, aby sprawdzić, czy został zmieniony, co oznacza dwukrotne odczytanie całego pliku. Jeśli znacznik czasu nie ulega zmianie (powinien), możesz po prostutouch
plik przed uruchomieniem rsync.Jeśli nie jest to napisane w skrypcie, możesz dodać,
--progress
aby zobaczyć, jak działa.źródło
--inplace
oznacza również--partial
Chociaż nie jest to rsync, w zależności od tego, co próbujesz zrobić, może to działać lepiej. Robiłem podobne zadanie tworzenia kopii zapasowej i było zdecydowanie szybsze.
Użyj netcata, aby utworzyć rurę smołową z jednej maszyny do drugiej.
Na komputerze źródłowym:
tar -cpv --atime-preserve=system . | nc -q 10 -l -p 45454
Tworzysz plik archiwalny, który zachowuje uprawnienia i czas, a następnie przekazujesz go do netcata na porcie 45454
Na komputerze kopii zapasowej
nc -w 10 X.X.X.X 45454 | tar -xpv
X.X.X.X
= lokalny adres IP komputera źródłowego.Dla mnie to działało dobrze. Działał z prędkością 25-30 MB / s przez przewodową sieć LAN, w przeciwieństwie do 2-3 MB / s z rsync. Wadą jest to: nie synchronizuje się, po prostu tworzy kopię tego, co jest w twoim źródle. Jednak w przypadku kopii zapasowej takiej jak opisana - jeden plik 500 GB - może działać bardzo dobrze.
Być może będziesz musiał to zrobić jako root, aby uniknąć problemów z uprawnieniami lub możesz mieć szczęście.
FWIW, początkowo dowiedziałem się o tym tutaj: http://www.screenage.de/blog/2007/12/30/using-netcat-and-tar-for-network-file-transfer/
źródło
tar
jest lepszy niżrsync
wtedy, gdy masz dużo małych plików do przesłania. Użycienc
poprawia także szybkość transferu w przypadku szybkiego połączenia, ponieważ nie masz narzutu szyfrowania SSH (którego nie potrzebuję w połączeniu peer-to-peer)Aby uniknąć obciążenia sieci, użyj protokołu rsync, a nie SSH. Domyślnie rsync używa SSH podczas określania adresu URL, takiego jak nazwa hosta: / ścieżka. Zamiast tego użyj szybszego protokołu rsync, używając rsync: // nazwa_hosta / ścieżka. W ten sposób nie są potrzebne żadne sztuczki z tar / netcat. Algorytm rsync delta powinien być znacznie szybszy.
Zobacz także https://gergap.wordpress.com/tag/rsync/, aby uzyskać więcej informacji.
źródło