Używanie Rsync do tworzenia kopii zapasowych na dysku zewnętrznym


17

Kupuję zewnętrzny dysk twardy, aby wykonać kopię zapasową komputerów w moim domu (wreszcie !!). Mam nadzieję użyć rsync. Widziałem przykład, który robi (lub wydaje się, że robi) dokładnie to, czego chcę. Coś takiego:

rsync -aE --delete /path/to/what/I/want/to/backup /Volumes/FW200/Backups

Jednak patrząc na dokumentację i przykłady rsync itp., Sprawy zaczęły wyglądać DUŻO bardziej skomplikowane. Networking, demony i żargon, o mój!

Zakładam, że żadne z tych rzeczy nie jest konieczne, dopóki tylko synchronizuję komputer z dyskiem zewnętrznym podłączonym do FireWire. Mylę się zakładając, że? Czy rzeczy naprawdę będą bardziej skomplikowane niż to niewinne polecenie?


Odpowiedzi:


10

Rsync działa dobrze na dyskach lokalnych. Jeśli jednak wykryje ścieżki lokalne, automatycznie przejdzie w tryb - cały plik, który nie kopiuje różnic, a jedynie kopiuje plik źródłowy nad plikiem docelowym. Rsync nadal ignoruje pliki, które w ogóle się nie zmieniły. Gdy przepustowość między źródłem a miejscem docelowym jest wysoka (jak dwa dyski lokalne), jest to znacznie szybsze niż czytanie obu plików, a następnie kopiowanie tylko zmienionych bitów.


2
s / Jednak / Na szczęście / gdy pliki są lokalne, czytanie obu i robienie całej magii różnicowej, aby pisać nowe z częściami obu (ponowne czytanie ich), to o wiele więcej pracy niż tylko czytanie źródła, pisanie miejsca docelowego.
— Javier

nie wiedziałem, czy powinienem w to wniknąć. Dodam to teraz.
— kbyrd

31

Używam rsync z następującymi flagami, które łatwo zapamiętują jako „glop” i „trunc” i „v”.

rsync -gloptrunc $srcdir $dstdir

Krótki przewodnik:

  • g - zachowaj informacje o własności grupy
  • l - kopiuj dowiązania symboliczne jako dowiązania symboliczne
  • o - zachowaj informacje o właścicielu
  • p - zachowaj uprawnienia
  • t - zachowaj znaczniki czasu
  • r - przeglądaj katalogi
  • u - aktualizuj, pomiń wszystkie nowsze pliki
  • [n] - nie, nie rób tego, zamiast tego wykonaj próbę
  • c - suma kontrolna, w miarę możliwości próbuj sum kontrolnych na blokach plików (*)
    Uwaga: w lokalnych systemach plików zostanie to zastąpione i zamiast tego zostaną skopiowane całe pliki.
  • v - pełny

Zawsze uruchamiam powyższe, aby upewnić się, że działa, a następnie usuwam flagę „n”, że gdy będę zadowolony z wyników.

Kluczowe cechy powyższych kombinacji:

  • Pracuję w OBYDWYM kierunku między dwoma (lub więcej) serwerami, synchronizując w ten sposób OBU obiema stronami. Aktualizujesz, co uważasz za mistrza w tym czasie.
  • Pozwala to być mistrzem, ze znaczącym zastrzeżeniem, że jeśli chcesz coś usunąć, musisz usunąć to jedno i drugie, aby upewnić się, że naprawdę zniknęło, w przeciwnym razie wróci.

Używam tego do synchronizacji dwóch komputerów lub synchronizacji podkatalogów (takich jak tworzenie kopii zapasowych na dysku USB).

Jak wspomniano wcześniej w jednym z innych postów, „suma kontrolna” może faktycznie zostać WYŁĄCZONA, jeśli masz do czynienia z dyskami lokalnymi.

W niektórych rzadkich przypadkach musiałem dodać dodatkowe parametry, aby uwzględnić zmiany w kontach logowania na zdalnych komputerach, zmianę portów, a nawet określenie, gdzie „rsync” mieszka na zdalnym hoście ... ale nie mają one bezpośredniego zastosowania do twojego pytanie.


3
Czy flaga -a do rsync nie spełnia powyższych wymagań?
— Rory

2
Nie jestem wielkim fanem używania flag „meta”, kiedy nie wiem na pewno, co oni robią. Manapage dla rsync wskazuje, że „-a” to w rzeczywistości -rlptgoD na moim urządzeniu, które pomija „u” i „v”, ale zawiera „D”. spośród nich wydaje się, że dla mnie dodanie „u” jest jedyną kluczową różnicą.
— ericslaw

Jak zmusić go do wykonania kopii lustrzanej od źródła do miejsca docelowego (usuwanie wszystkiego w miejscu docelowym, którego nie ma w źródle), zamiast kopiowania dwukierunkowego?
— Gabriel Staples

1
Wygląda na to, że będziesz musiał użyć rsync -gloptrunc --delete --delete-excluded $srcdir $dstdir. --deleteMówi usunąć coś w okolicy, który nie jest w źródle, a --delete-excludedmówi się również usuwać wykluczone pliki w miejscu docelowym, które normalnie nie są śledzone lub skopiowane. Jeśli używasz --delete-excluded, technicznie nie musisz go również używać --delete, ale i tak możesz używać obu z nich. Szczegóły znajdują się na stronach podręcznika : linux.die.net/man/1/rsync .
— Gabriel Staples

Uwaga: do ogólnego użycia rsync też napisałem ten samouczek dla siebie, więc w razie potrzeby mogę odwołać się do niego: Jak korzystać z rsync
— Gabriel Staples

4

Nie jest to konieczne, możesz używać rsync bez żadnych demonów lub innej konfiguracji JUST FINE!

Wystarczy użyć polecenia rsync i możesz zacząć.


2

Sądząc po ścieżce w poleceniu rsync, czy miałbym rację sądząc, że używasz systemu Mac OS X?

Osobiście wolałbym używać Time Machine (jeśli używasz Leoparda) lub Carbon Copy Cloner ( http://www.bombich.com/software/ccc.html ), który używa rsync.

Znacznie łatwiejsze niż poprawianie własnego skryptu. Jedną z zalet jest to, że Time Machine i CCC zapewniają przyrostowe kopie zapasowe.


2

Użyty przykład wygląda na to, że będzie działał dobrze w przypadku kopii zapasowych.

Jedną z rzeczy, które warto rozważyć podczas korzystania z rsync, jest skorzystanie z opcji --link-dest. Umożliwia to przechowywanie wielu kopii zapasowych, ale używanie twardych łączy do niezmienionych plików, skutecznie powodując, że wszystkie kopie zapasowe zajmują miejsce przyrostowe. Przykładem może być:

rsync -aE --link-dest=/mnt/external_disk/backup_20090612 dir_to_backup \
    /mnt/external_disk/backup_20090613

Zakłada się, że masz datowaną kopię zapasową na 12 czerwca i chcesz utworzyć nową kopię 13 czerwca. Możesz pominąć opcję -v, jeśli nie chcesz wydrukować każdego pliku.


1
rsnapshot to system do tworzenia kopii zapasowych, który wykorzystuje link-dest, jak opisano, do przechowywania pełnych wersji kopii zapasowych w sposób zapewniający oszczędność miejsca.
— Rory

1

To zależy od tego, czy korzystasz z baz danych, czy nie. Rsync pobierze migawkę każdego pliku i zignoruje wszelkie interweniujące zapisy. Jeśli chcesz wykonać kopię zapasową bazy danych, powinieneś rozważyć skonfigurowanie filtra ignorowania i uruchomienie narzędzi zrzutu DB przed rsync.


1

Twoje polecenie w formie pisemnej powinno działać, ale możesz chcieć spojrzeć na program o nazwie rsnapshot, który jest zbudowany na rsync i przechowuje wiele wersji plików, abyś mógł wrócić i spojrzeć na to, co było w zeszłym tygodniu lub w zeszłym miesiącu. Konfiguracja jest dość łatwa i bardzo dobrze optymalizuje przestrzeń, więc jeśli nie masz dużo rezygnacji, nie zajmuje ona dużo więcej miejsca niż pojedyncza kopia zapasowa.


1

Nie wspomniałeś o swoim systemie operacyjnym. Przyjmując założenie, że jest to system operacyjny oparty na * nix, twoje polecenie jest dobre.

Jeśli jednak jeden lub oba dyski są sformatowane w systemie NTFS, dostęp do nich jest uzyskiwany z * nix lub nawet z poziomu systemu Windows za pomocą Mobaxterm / cygwin, wówczas funkcja przyrostowa rsync nie działałaby dobrze z rsync -a (archive flag)

Jeśli dyski NTFS są / są zaangażowane, możesz użyć:

rsync -rvh --size-only --delete /path/to/what/I/want/to/backup /Volumes/FW200/Backups

Pobierz klienta sob Mobaxterm, aby mieć funkcjonalność rsync w systemie Windows.

Oto więcej informacji na temat używania rsync z dyskami NTFS


0

Próbowałem użyć rsync do tworzenia kopii zapasowych, ale skończyło się to bałaganem. rsync lepiej nadaje się do „synchronizacji” niż do tworzenia kopii zapasowych. Porównywanie dużych plików trwa wieczność.

Przeszukałem trochę i wypróbowałem kilka (w zasadzie testuję wszystkich z kopii zapasowej wyszukiwania apt-cache w Ubuntu).

Wreszcie skończyłem z „ backup2l - bezobsługowym narzędziem do tworzenia kopii zapasowych / przywracania”, to proste. Podoba mi się sposób, w jaki zarządza planowaniem i rotacją (w poziomach). Uruchamiam go za każdym razem, gdy mam zewnętrzny dysk USB podłączony z wiersza poleceń, ale można go również zautomatyzować.


0

Spróbuj wykonać kopię zapasową w programie dirvish. http://www.dirvish.org/
Wykorzystuje twarde linki z rsync w tak zwanych skarbcach. Możesz zachować tyle starszych zrzutów, ile może pomieścić dysk USB. Lub skonfiguruj to w sposób zautomatyzowany.

Kiedy zrozumiesz pomysł na dirvish, korzystanie z niego będzie wygodniejsze niż rsync ze wszystkimi jego opcjami.


rsnapshot działa podobnie do dirvish
— Rory

0

Znajduję rozwiązanie dla komputera z systemem Windows: http://www.itefix.no/i2/node/10650

Aby skopiować partycję D: \ na dysk zewnętrzny K: \

rsync -aE --delete --progress /cygdrive/d/* /cygdrive/k

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.