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?

czerstwypretzel
źródło

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.

kbyrd
źródło
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.

ericslaw
źródło
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ąć.

OldJim
źródło
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.

Steve Folly
źródło
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.

znak
źródło
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.

jldugger
źródło
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.

Catherine MacInnes
źródło
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

Raman Kathpalia
źródło
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ć.

chmeee
źródło
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.

Michèle
źródło
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


źródło