Używanie rsync do tworzenia kopii zapasowych

14

Obecnie tworzę kopię zapasową zawartości zewnętrznego dysku twardego A, usuwając wszystko z docelowego zewnętrznego dysku twardego B i (2) kopiując wszystko od A do B (w Finderze). Zewnętrzny dysk twardy zawiera tylko „podstawowe dane” (foldery, obrazy, filmy, dokumenty itp.), Nic szczególnego / dziwnego.

Ale przy wszystkich niesamowitych darmowych narzędziach, które istnieją, nie mogłem znaleźć przyzwoitego narzędzia do tworzenia kopii zapasowych (sugestie zaakceptowane).

Chcę to zautomatyzować. Po kilku wyszukiwaniach wydaje się, że mogę użyć rsync. Chcę następnie zautomatyzować to za pomocą, rsyncaby uniknąć kopiowania plików, które są już na docelowym dysku twardym (oczywiście, jeśli dokonano zmiany, chcę zaktualizować plik / folder; to samo z usuniętymi plikami / folderami lub nowymi plikami / foldery; chodzi o naśladowanie tego, co zwykle robię ręcznie za pomocą Findera).

Dotarłem do tego punktu

rsync -av --progress --delete /Volumes/A/ /Volumes/B

Teraz dziennik jest pełen plików, którego nazwa zaczyna się .lub ._nawet ._.. Czy są potrzebne?

Pytanie

Jak mogę skopiować tylko te pliki, które są ważne, pozostawiając te, które nie mają znaczenia. Na przykład, jeśli photo.pngtak, spodziewam się skopiować photo.png, nie ._photo.pngwiele plików.

Co --excludeczy --exclude-frommożna bezpiecznie stosować na Mac? Dobrą regułą może być „po prostu skopiuj wszystko, co pokazuje Finder”, co skopiowałbym, gdybym ręcznie przeszedł przez wszystkie foldery.

 Dodatkowe pytanie

Czy -av --progress --deletewystarczy? Czy popełniam przestępstwo lub ryzykuję niektóre dane? Jakich opcji byś użył.

Proszę o odpowiedź z kilkoma argumentami, byłbym wdzięczny.

Szukam sposobu automatyzacji, rsyncktóry wydaje się dość potężny i darmowy.

Manuel
źródło
Komentarze nie są przeznaczone do rozszerzonej dyskusji; ta rozmowa została przeniesiona do czatu .
bmike
Co do strategii opisanej w pierwszym akapicie, co się stanie, jeśli po (1) - usunięciu wszystkiego w B - poważnym problemem stanie się A? Możesz utracić dostęp do danych w A i poprzedniej kopii zapasowej. Jeśli w magazynie kopii zapasowych jest wystarczająca ilość miejsca, co powiesz na usunięcie kopii zapasowej dopiero po pomyślnym ukończeniu nowej kopii zapasowej?
Ricardo
1
Link @ bmike do rozmowy przeniesionej na czat jest uszkodzony.
Merchako

Odpowiedzi:

17

Aby uzyskać maksymalne bezpieczeństwo, skopiuj wszystko

Najbezpieczniejszym rozwiązaniem jest skopiować wszystko , łącznie niewidocznych plików meta-danych.

Pliki zwykle istnieją z jakiegoś powodu i wraz ze zmianami oprogramowania, podobnie będzie z istnieniem, celem i zawartością tych plików metadanych. Kopiowanie wszystkiego zmniejszy obciążenie związane z konserwacją i zapewni spokój umysłu, że nic nie zostanie utracone.

Plik dziennika utworzony przez rsyncbędzie technicznie związany z samą naturą rsyncbycia narzędziem wiersza poleceń. Rozważ przedstawienie uporządkowanego, przefiltrowanego metadanych, a może nawet kodowanego kolorowo wyjścia, które użytkownik może sprawdzić. Możesz to zrobić za pomocą szerokiej gamy narzędzi skryptowych i języków. Jeśli potrzebujesz pomocy z tym podejściem, zadaj więcej pytań tutaj na Ask Different i StackOverflow .

Usuń ostatnie i skopiuj zasoby OS X

Jeśli chodzi o rsyncflagi, spójrz na pytanie Najszybszy i najbezpieczniejszy sposób kopiowania ogromnych danych z jednego dysku zewnętrznego na inny . W tym pytaniu zastosowano kilka dodatkowych flag i wyjaśniono:

sudo rsync -vaE --progress --delete-after /Volumes/SourceName /Volumes/DestinationName

W tej sytuacji Ezapewnią skopiowanie widelców zasobów i innych właściwości specyficznych dla komputerów Mac.

Możesz rozważyć --delete-afteruniknięcie usuwania, dopóki kopia nie zostanie ukończona; należy pamiętać, że takie podejście może potencjalnie wymagać dysku docelowego dwa razy większego niż źródło.

Możliwe wyłączenia

Odpowiedź na powiązane pytanie: Jak pominąć pliki renderowania FCPX z kopii zapasowej Time Machine? , podał przydatne łącze plików i folderów systemu OS X, które można wykluczyć z większości kopii zapasowych . Ten link zawiera praktyczną listę wzorców plików, folderów i ścieżek, które można wykluczyć.

Dołącz pliki kropek

Istnieją dobre powody, aby wykonać kopię zapasową plików zaczynających się od kropek, .*pasujących plików.

Niektóre programy przechowują preferencje, ustawienia i inne informacje o wartości w folderach na górze folderu użytkownika w folderach z niewidocznymi kropkami. Uruchomienie ls -la ~/ujawni te foldery i pliki.

Jeśli jakikolwiek użytkownik używa lub ma oprogramowanie, które z kolei korzysta z oprogramowania do kontroli wersji, należy wykonać kopię zapasową plików kropek. Programy takie jak subversion i git przechowują krytyczne informacje w swoich folderach kropek. Te ukryte foldery można rozrzucać po całym systemie plików, w którym projekt jest sprawdzany.

Reflektor i dostęp do dysku

Spotlight to usługa wyszukiwania OS X. Spotlight wykorzystuje ten mdworkerproces do indeksowania i aktualizowania katalogu wyszukiwania. Jeśli obawiasz się możliwego uszkodzenia dysku lub powolnych kopii, wyłączeniemdworker podczas działania rsyncmoże pomóc. Osobiście zostawiam Spotlight działający podczas dużych rsynctransferów.

Graham Miln
źródło
3
Najbezpieczniejszą opcją jest skopiowanie wszystkiego, w tym niewidocznych plików metadanych. Ale ten sam link z Carbon Copy Cloner mówi, że niektóre pliki są automatycznie budowane, więc może nawet je uszkodzić, jeśli skopiujesz rsync.
Manuel
1
Możesz dodać pełny przykład dla przyszłych czytelników. Znalazłem dwa źródła, jedno i dwa (plus trzecie , które połączyłeś); Zostawiam je tutaj na przyszłość.
Manuel
1
„Istnieją dobre powody, aby wykonać kopię zapasową plików zaczynających się od kropek”: tak! Te pliki są ukryte (przed Finderem dla manekinów), ale przez większość czasu są to bardzo ważne pliki.
dan
1
EI --delete-aftersą kluczowe punkty, które czynią z tego odebrać wygraną jednej.
dan
1
@danielAzuelos W -Enowszych wersjach jest coś, -Xco według mnie jest zalecane w niektórych miejscach, który z nich jest poprawny? Czy oboje? Chciałbym zaktualizować, pseudo-kompletny, który obejmuje większość ogólnych zmartwień. Czy kopiowanie plików Spotlight byłoby łatwiejsze i szybsze niż ich generowanie? Jak mogę zatrzymać Spotlight, aby tymczasem nie zadziałał? A co caffeinatez procesem? A może jest tak, jeśli jest to tylko lista kopii zapasowych, która uniemożliwia indeksowanie przez Spotlight, a tym bardziej zmartwień itp. Na wiele z tych pytań na pewno odpowiedziano.
Manuel
5

Jeśli używasz rsyncwersji 3.0.6 zgodnie z Carbon Copy Cloner lub 3.1.2 zgodnie z Homebrew, możesz wziąć pod uwagę argumenty Carbon Copy Cloner:

rsync -A -X -H -p --fileflags --force-change -l -N -rtx --protect-decmpfs --numeric-ids -go --delete-during --backup --backup-dir=</PATH/TO/STICK/BACKUP_when_using_delete> --protect-args <SRC>/ <DEST>

iluminować
źródło
--protect-decmpfsnie jest już dostępny od wersji 3.1.3, patrz github.com/Homebrew/homebrew-core/pull/23415 .
user74686,
4

Odradzam czyszczenie metadanych podczas tworzenia kopii zapasowej, szczególnie plików kropek, np ._$filename. Jeśli jednak naprawdę chcesz wykluczyć pliki kropek z rsyncpolecenia, dodaj --exclude '.*'je.

rsync -av --exclude '.*' --progress --delete /Volumes/A/ /Volumes/B
użytkownik3439894
źródło
To jest dobre. Nie byłem pewien, czy usunięcie wszystkich plików kropek byłoby problematyczne (nawiasem mówiąc, czy jest jakaś różnica między '.*'i '/.*'?). Nie sądzę, że Finder kopiuje je wszystkie, może to być tylko niektóre powiązane. W takim przypadku wolałbym wykluczyć tylko te, które są niepotrzebne (np .DS_Store.). I tak, te, które mogą być ważne, ale których nie chcę mieć w swoim dzienniku, mogę filtrować według wyrażeń regularnych.
Manuel
1
To, co kopiuje Finder, jest nieudokumentowane i jest to źródłem problemu wszystkich osób podczas tworzenia zasad tworzenia kopii zapasowych. Powinieneś zachować kopię wszystkich plików, jeśli chcesz wykonać kopię zapasową, której można użyć dokładnie zamiast Adysku.
dan
@danielAzuelos Co nie jest tak, w przypadku śmierci głównego dysku twardego A, kupię trzeci dysk twardy C, skopiuję z dysku twardego B na dysk twardy C i prawdopodobnie zacznę używać jednego z dysków B lub C. Powtarzam ponownie: że nie jest to rodzaj kopii zapasowej, którego należy używać, podobnie jak robi to SuperDuper. Po prostu moje zdjęcia są lepsze w dwóch miejscach zamiast w jednym.
Manuel
4

Obecne odpowiedzi nie są do końca zadowolone, ale postaram się tutaj przedstawić trochę możliwości, które widziałem w Internecie, próbując znaleźć niezłą konfigurację rsync.

Nawiasem mówiąc, jeśli ktoś jest zainteresowany maszyną czasu jak kopie, jest rsnapshot. Jest też Unison do dwukierunkowej synchronizacji. Ponadto istnieje kilka GUI, takich jak Backup Utility i arRsync ; nie do końca to, czego szukałem, ale mogą dla kogoś zrobić pracę.

Po pierwsze, moim jedynym zamiarem było duplikowanie zdjęć i filmów, więc dokładna kopia nie była potrzebna, a więc nie trzeba się zbytnio przejmować . W rzeczywistości większość moich wątpliwości dotyczyła tego, czy mógłbym wszystko wykluczyć (to samo, co by się stało, gdyby na przykład pobrałem zdjęcie z Internetu, po prostu pobrałem plik .png, wszystko inne nie jest pobierane, ale jest generowane automatycznie ).

Oto nieuporządkowana lista myśli, które możesz wziąć pod uwagę

  • Chcę mieć pewność, że Twój laptop nie zasypia, możesz chcieć caffeinatetego procesu caffeinate -s rsync -av .... Zabrano stąd .

  • Jeśli robisz kopie lokalne, jak w moim przypadku, nawet jeśli połączenie internetowe nie jest zbyt powolny, należy nie używać -zopcji (kompresji) i wykorzystanie -W(przeniesienie całego pliku, raczej niż transfery delta, jest to domyślne, gdy lokalna) i prawdopodobnie służą --inplacedo szybkiego przesyłania przelewów. Zabrano stąd .

  • Możesz użyć, --delete-afteraby każdy plik został najpierw przesłany, a następnie przeniesiony do miejsca docelowego (i usunięty oryginalny) i jest bezpieczniejszy niż usunięcie przed transferem lub podczas transferu.

  • Możesz zatrzymać przesyłanie, naciskając ctrl + C, a zatrzyma się ono czysto. Zabrano stąd . To była jedna z moich obaw związanych z SuperDuper !, jeśli chcesz zatrzymać transfer, pojawi się komunikat „Opuścisz dysk twardy w nieznanym stanie…”.

  • W najnowszych wersjach jest --info=progress2jeszcze więcej szczegółów -v.

  • Istnieją -P(co równa się --partiali --progress), które pozostawiają tam przeniesione pliki, więc możesz kontynuować pracę po ponownym uruchomieniu procesu (jeśli z jakiegoś powodu nie możesz natychmiast zakończyć synchronizacji).

  • Można być zainteresowanym zatrzymaniem Spotlight lub TimeMachine przed wykonaniem kopii i ponownym włączeniem ich po przeniesieniu. A nawet wyłącz Spotlight dla dysku zewnętrznego.

  • Inne opcje stosowane we wszystkich tych odniesień zawierać -x(lub --one-file-system), -E( --executability), -H( --hard-links), -X( --xattrs), -A( --acls), i --sparse, --hfs-compression, --protect-decmpfs. Możesz na nie spojrzeć.

Dla mnie wygląda podstawowe polecenie (mogę użyć więcej opcji, ale to wystarczy na przykład):

caffeinate -s rsync -av --delete-after --progress --stats --exclude-from 'excludefile.txt' \
  "/Volumes/SrcHDD/" "/Volumes/DstHDD" # note the trailing slash / after the source

Teraz w moim przypadku mógłbym po prostu dołączyć {*.jpg,*.png,*.mp4,*.txt,*.pdf,…}i nikt nie powiedziałby „potrzebujesz także plików systemowych”, ale ponieważ nie chcę szukać, aby uzyskać wszystkie możliwe typy plików, które mam, wolę wykluczyć. Są rzeczy, które nie tylko mogą być, ale wydają się wygodne do wykluczenia.

Znalazłem kilka linków, weź co chcesz:

  1. https://bombich.com/kb/ccc4/some-files-and-folders-are-automatically-excluded-from-backup-task

  2. https://gist.github.com/tvwerkhoven/4541989

  3. https://github.com/necolas/dotfiles

  4. https://gist.github.com/shkm/5531679

  5. http://www.hackurmac.com/2014/08/backing-up-and-restoring-your-hackintosh.html

  6. https://github.com/jedda/Counterpart

  7. http://alanwsmith.com/rsync-exclude-list-for-mac-osx

Stamtąd możesz prawdopodobnie zignorować to, co bezpieczne lub rozsądne. Oto pełna lista (właśnie usunąłem duplikaty)

.HFS+ Private Directory Data*
/.journal
/.journal_info_block
.AppleDouble
.AppleDB
/lost+found

.metadata_never_index
.metadata_never_index_unless_rootfs
/.com.apple.timemachine.donotpresent
.VolumeIcon.icns
/System/Library/CoreServices/.disk_label*
/TheVolumeSettingsFolder

.DocumentRevisions-V100*
.Spotlight-V100
/.fseventsd
/.hotfiles.btree
/private/var/db/systemstats

/private/var/db/dyld/dyld_*
/System/Library/Caches/com.apple.bootstamps/*
/System/Library/Caches/com.apple.corestorage/*
/System/Library/Caches/com.apple.kext.caches/*

/.com.apple.NetBootX

/Volumes/*
/dev/*
/automount/*
/Network/*
/.vol/*
/net

/private/var/folders/zz/*
/private/var/vm/*
/private/tmp/*
/cores/*

.Trash
.Trashes

/Backups.backupdb
/.MobileBackups
/.MobileBackups.trash
/.MobileBackups.trash

Library/Mobile Documents.*
.webtmp

/Library/Caches/CrashPlan
/PGPWDE01
/PGPWDE02
/.bzvol
/Library/Application Support/Comodo/AntiVirus/Quarantine
/private/var/spool/qmaster
$Recycle.Bin
Saved Application State
Library/Preferences/ByHost/com.apple.loginwindow*

.AppleDesktop
.com.apple.timemachine.supported
Network Trash Folder
/Library/Caches/*
/private/var/spool/postfix/*
$RECYCLE.BIN
/stuff/*
/afs/*
/private/var/run/*
/Previous Systems.localized
/tmp/*
.dbfseventsd
.DS_Store
.PKInstallSandboxManager
.SymAV*
.symSchedScanLockxz
.TemporaryItems
Desktop DB
Desktop DF
hiberfil.sys
pagefile.sys
Recycled
RECYCLER
System Volume Information
Temporary Items
Thumbs.db
AUTORUN.INF
Autorun.inf
autorun.inf
Manuel
źródło
3

Użyłem rsync do tworzenia kopii zapasowych w kilku zadaniach i używam go w domu.

Bardzo go polecam, ale z pewnymi modyfikacjami. Jako narzędzie do tworzenia kopii zapasowych jest świetne, ale jako narzędzie do archiwizacji jest trochę płaskie. Tak, kopiuje wszystko, ale nie dostajesz wersji wszystkiego, zawsze otrzymujesz tylko najnowsze wersje.

Użyłem tego przewodnika http://www.mikerubel.org/computers/rsync_snapshots/ jako punktu wyjścia. Przeczytaj całą stronę. Doskonale objaśnia opcje i opisuje, w jaki sposób można wdrożyć przyrostowe kopie zapasowe. I, co zadziwiające, artykuł ma ponad 10 lat, ale nadal obowiązuje. Kocham unix.

sevis127
źródło
1
Dzięki. W każdym razie chciałem omówić specjalne względy, które można wziąć pod Mac OS X. Tak naprawdę nie chciałem tylko przewodnika rsync. W każdym razie, dobre połączenie, obejmuje ona wiele rsync, ale nie ma na dzień dzisiejszy to narzędzie zrobić dokładnie, że: rsnapshot.
Manuel