Im więcej używam, rsync
tym bardziej zdaję sobie sprawę, że to szwajcarski scyzoryk do przesyłania plików. Jest tak wiele opcji. Niedawno dowiedziałem się, że możesz przejść --remove-source-files
i usunie on plik ze źródła po skopiowaniu, co sprawia, że jest to bardziej ruch, niż kopiowanie programu. :)
Jakie są twoje ulubione małe porady i wskazówki dotyczące rsync?
--delete-before
na przykład), zostanie użyte stare zachowanie „najpierw buduj listę”, ponieważ jest to wymagane do prawidłowego działania tych opcji - więc jeśli nie widzisz tego zachowania, sprawdź, czy znane są inne opcje, których używasz. Może to być przydatne, jeśli używasz rsync interaktywnie na dużym drzewie i chcesz wymusić skanowanie początkowe, aby wynik--progress
był dokładny (tzn. Liczba „obiektów do porównania” nigdy nie wzrośnie, ponieważ po pierwszym skanie nie zostaną znalezione żadne nowe obiekty ).Używanie
--link-dest
do tworzenia oszczędnych przestrzennie kopii zapasowych opartych na migawkach, przy czym wydaje się, że masz wiele kompletnych kopii danych kopii zapasowej (po jednym dla każdego uruchomienia kopii zapasowej), ale pliki, które nie zmieniają się między uruchomieniami, są połączone na stałe zamiast tworzenia nowych kopii, oszczędzając miejsce.(właściwie nadal używam metody
rysnc
-followed-by-cp -al
, która osiąga to samo, zobacz http://www.mikerubel.org/computers/rsync_snapshots/, aby zapoznać się z starymi, ale wciąż bardzo dobrymi ocenami obu technik i powiązane problemy)Jedną z głównych wad tej techniki jest to, że jeśli plik jest uszkodzony z powodu błędu dysku, jest tak samo uszkodzony we wszystkich migawkach, które prowadzą do tego pliku, ale mam również kopie zapasowe offline, które chroniłyby przed tym w przyzwoitym stopniu. Inną rzeczą, na którą należy zwrócić uwagę, jest to, że twój system plików ma wystarczającą liczbę i-węzłów lub zabraknie ich zanim faktycznie zabraknie miejsca na dysku (chociaż nigdy nie miałem problemu z domyślnymi ustawieniami ext2 / 3).
Nigdy też nie zapominaj o bardzo bardzo przydatnej
--dry-run
dla trochę zdrowej paranoi, szczególnie gdy korzystasz z--delete*
opcji.źródło
Jeśli chcesz zaktualizować witrynę internetową o duże pliki za pomocą powolnego łącza, możesz przenieść małe pliki w ten sposób:
rsync -a --max-size = 100K / var / www / there: / var / www /
następnie zrób to dla dużych plików:
rsync -a --min-size = 100K --bwlimit = 100 / var / www / there: / var / www /
rsync ma wiele opcji przydatnych na stronach internetowych. Niestety nie ma wbudowanego sposobu wykrywania równoczesnych aktualizacji, więc musisz dodać logikę do skryptów cron, aby uniknąć nakładania się zapisów dużych plików.
źródło
Korzystam z opcji --existing, gdy próbuję zachować mały podzbiór plików z jednego katalogu zsynchronizowanego z innym miejscem.
źródło
--rsh
jest moje.Użyłem go, aby zmienić szyfr na ssh na coś szybszego (
--rsh="ssh -c arcfour"
), a także skonfigurować łańcuchssh
s (zalecane użycie z nimssh-agent
) do synchronizacji plików między hostami, które nie mogą rozmawiać bezpośrednio. (rsync -av --rsh="ssh -TA userA@hostA ssh -TA -l userB" /tmp/foobar/ hostB:/tmp/foobar/
).źródło
Gdy ta opcja zostanie użyta, rsync zatrzyma się po upływie T minut i zakończy działanie. Myślę, że ta opcja jest przydatna podczas rsynchronizacji dużej ilości danych w nocy (godziny bezczynne), a następnie zatrzymania, gdy nadszedł czas, aby ludzie zaczęli korzystać z sieci w ciągu dnia (godziny intensywne).
Ta opcja pozwala określić, o której godzinie zatrzymać rsync.
Trybu wsadowego można użyć do zastosowania tego samego zestawu aktualizacji do wielu identycznych systemów.
źródło
at
ten proces do zabicia?Jeśli zastanawiasz się, jak daleko się posunął wolno działający program rsync i nie użyłeś opcji -v, aby wyświetlić listę plików podczas ich przesyłania, możesz dowiedzieć się, które pliki on otworzył:
w systemie, który ma / proc
Np. Rsync został właśnie dla mnie zawieszony, mimo że zdalny system wydawał się mieć sporo miejsca. Ta sztuczka pomogła mi znaleźć nieoczekiwanie ogromny plik, którego nie pamiętałem i który nie zmieściłby się na drugim końcu.
Podał mi także trochę ciekawszą informację - drugi koniec najwyraźniej się poddał, ponieważ nastąpiło również przerwane łącze do gniazda:
źródło
--archive
jest standardowym wyborem (choć nie domyślnym) dla zadań przypominających kopie zapasowe, co zapewnia kopiowanie większości metadanych z plików źródłowych (uprawnień, własności itp.).Jeśli jednak nie chcesz tego używać, często będziesz nadal chciał uwzględnić
--times
, który będzie kopiowany w czasie modyfikacji plików. To sprawia, że kolejny rsync, który działa (zakładając, że robisz to wielokrotnie), jest znacznie szybszy, ponieważ rsync porównuje czasy modyfikacji i pomija plik, jeśli jest niezmieniony. Zaskakujące (przynajmniej dla mnie) ta opcja nie jest domyślna.źródło
Ten, którego najczęściej używam to zdecydowanie,
--exclude-from
który pozwala określić plik zawierający rzeczy, które mają zostać wykluczone.Uważam również za
--chmod
bardzo przydatny, ponieważ pozwala upewnić się, że uprawnienia kończą się pożądanym stanem, nawet jeśli twoje źródło jest popsute.źródło
--backup-dir =
date +%Y.%m.%d
--delete Usuwamy, ale tworzymy kopię ... na wszelki wypadekźródło
Mój jest
--inplace
. Działa cuda, gdy na serwerze kopii zapasowych działa ZFS lub btrfs i tworzone są rodzime migawki.źródło
Oczywiście jest też
--delete
coś, co usuwa z celu elementy, których nie można znaleźć w źródle.źródło
cwrsync - Rsync dla Windows http://www.itefix.no/i2/node/10650
Ta wersja zawiera OpenSSH, dzięki czemu możesz przesyłać pliki bezpiecznym kanałem.
źródło
W przypadku przerw
Aby ograniczyć przepustowość - dobre do kopiowania dużych plików, katalogów
źródło
bwlimit
? bitów na sekundę, bajtów na sekundę?Jeśli masz skonfigurowany rsync jako demon na serwerze, możesz po prostu przeglądać współdzielone moduły jak każda inna lista katalogów. Następnie możesz zobaczyć, które ścieżki są dostępne, a jakie nie.
źródło
gdy korzystam z GlusterFs, mamy wąskie gardło z plikami T o zerowym rozmiarze, do synchronizacji między uszkodzoną cegłą lub repliką musimy użyć,
--min-size=1
aby nie synchronizować pustego pliku z uszkodzonego serweraźródło