Wpisy Mogę bezpiecznie wykluczyć tworzenie kopii zapasowych

10

Planuję strategię tworzenia kopii zapasowych opartą na rsnapshot .

Chcę wykonać pełną kopię zapasową systemu, wyłączając pliki i katalogi, które byłyby bezużyteczne, aby przywracanie miało znów działający system. Już wykluczyłem:

# System:
exclude /dev/*
exclude /proc/*
exclude /sys/*
exclude /tmp/*
exclude /run/*
exclude /mnt/*
exclude /media/*
exclude /lost+found

# Application:
exclude /*.pyc
exclude /*.pyo

Zastanawiam się, które inne wpisy mogę dodać do listy wykluczeń bez narażania przywróconego systemu. Mówiąc o „ogólnym” systemie Linux, czy możesz zasugerować dalsze globalne rozszerzenia, tymczasowe katalogi, pamięci podręczne itp. Mogę bezpiecznie wykluczyć?

Paolo
źródło

Odpowiedzi:

11

Po pierwsze, powinieneś przeczytać trochę o składni włączania / wyłączania rsync. Mam wrażenie, że to, co chcesz zrobić, lepiej zrobić przy użyciu **globów niż *globusów. ( **Rozwija się do dowolnej liczby wpisów, natomiast *rozszerza się tylko do jednego wejścia ewentualnie dopasowanie wielu katalogów wpisy. Szczegóły są w man rsyncramach włączeń / wykluczeń reguł wzorców ).

To powiedziawszy, jeśli chcesz móc przywrócić system do znanego stanu roboczego z kopii zapasowej przy minimalnym wysiłku, powinieneś zachować ostrożność, wykluczając pliki lub katalogi. Sam używam rsnapshot i faktycznie przyjąłem odwrotne podejście: uwzględnij wszystko oprócz kilku starannie wybranych katalogów.

Więc mój plik rsnapshot.conf faktycznie stwierdza (z tabulatorami, aby parser plików konfiguracyjnych rsnapshot był szczęśliwy):

interval backup NNN # pick your poison
one_fs 0
exclude /backup/**
exclude /dev/**
exclude /proc/**
exclude /run/**
exclude /sys/**
exclude /tmp/**
backup / ./

i bardzo niewiele więcej. Tak, oznacza to, że mogę skopiować nieco więcej niż to, co jest ściśle potrzebne, ale gwarantuje, że skopiowane zostanie wszystko, co nie jest zamierzone jako ephermal. Z powodu rsnapshot wykorzystującego zachowanie rsync w dowiązaniu do deduplikacji, jedyny realny koszt tego jest podczas pierwszego uruchomienia; po tym, zakładając, że masz miejsce docelowe kopii zapasowej w rozsądnej wielkości (w porównaniu z całkowitym rozmiarem zestawu danych), zajmuje to niewiele czasu lub miejsca na dysku. Wykluczam zawartość / backup, ponieważ tam montuję docelowy system plików kopii zapasowej; nie wykluczając, prowadziłoby to do kopiowania kopii zapasowej do siebie. Jednak dla uproszczenia, jeśli kiedykolwiek będę musiał przywrócić do stanu surowego, chcę zachować punkt montowania!

W moim przypadku również nie mogę rozsądnie wykorzystać one_fs 1; Używam ZFS z obecnie ~ 40 systemami plików. Wymienienie wszystkich z nich stanowiłoby koszmar konserwacji i spowodowałoby, że praca z systemami plików ZFS byłaby o wiele bardziej zaangażowana niż powinna.

Prawie wszystko, co chcesz wykluczyć powyżej i powyżej, będzie zależało od dystrybucji, więc udzielenie ogólnej odpowiedzi jest praktycznie niemożliwe. To powiedziawszy, prawdopodobnie znajdziesz kandydatów w / var.

CVn
źródło
1
exclude /somepath/*w tym przypadku jest całkowicie w porządku; wyklucza wszystko /somepath/, zgodnie z oczekiwaniami. Nie potrzebujesz, **ponieważ nie musisz szukać głębiej, gdy wszystko w środku /somepath/jest już wykluczone.
Martin von Wittich,
Lub po prostu użyj exclude /somepathi całkowicie zignoruj ​​te katalogi - nie tylko ich zawartość.
Frank Kusters
4
@spaceknarf To przerywa montowanie podczas przywracania do czystego metalu, ponieważ wtedy punkt montowania nie istnieje.
CVn
4

Większość tego, co próbujesz zrobić, można prawdopodobnie osiągnąć po prostu za pomocą tego one_fsustawienia. Ustaw systemów plików, które chcesz umieścić w kopii zapasowych, a następnie użyć tego ustawienia, aby zignorować resztę ( proc, sys, dev, itd.). Uwzględnię, /lost+foundponieważ ten katalog powinien być zawsze pusty, chyba że utworzono kopię zapasową uszkodzonego systemu plików, w którym to przypadku prawdopodobnie potrzebujesz kopii zapasowej wszystkiego, co zostało fsckodzyskane. Również, .pyci .pyonie powinien być naprawdę w katalogu głównym na pierwszym miejscu, więc ja też usunąć te linie. /tmpi /var/tmpdotyczą jedynych pozostałych ścieżek w „ogólnym” systemie, które zawierają dane, które można niezawodnie wykluczyć z kopii zapasowych. Więc może spróbuj czegoś takiego:

one_fs 1

exclude /tmp/
exclude /var/tmp/
depquid
źródło
I tak naprawdę nie znaczy, /*.pyca /*.pycjednak układ szeroki *.pyci *.pyo, naprawiłem to. Nie jestem jednak pewien, czy one_fsustawione na 1może wykluczać wszystko, czego chcę.
Paolo,
1
Co jeśli pakiet systemowy używa takich plików?
depquid
masz rację, ale jestem prawie pewien, że każdy plik .py zostanie wcześniej lub później ponownie skompilowany automatycznie.
Paolo,
3
Być może, ale w moim systemie takie pliki są instalowane przez pakiety dostawców. Co oznacza, że ​​jeśli system zostanie przywrócony z kopii zapasowej, pliki, które według menedżera pakietów będą tam brakować. Pytałeś o rozwiązanie dla „ogólnego” systemu Linux i nie sądzę, że zawsze można bezpiecznie zakładać, że takie pliki można utracić bez powodowania problemów.
depquid
rzeczą wartą odnotowania, o której zapomniałem powiedzieć w Q. jest to, że montowania powiązań należy również wykluczyć, aby uniknąć powielania danych.
Paolo,
1

Uważam, że lepiej jest mieć listę pakietów, zawartość / etc, / home i dowolne dane użytkownika / systemu z / var i gdzie indziej. Zwykle szybsza jest ponowna instalacja pakietów i skopiowanie działającej konfiguracji.

Sean Perry
źródło
Dlaczego instalowanie pakietów, które obejmuje zapisywanie wszystkich plików systemowych, a także przetwarzanie konfiguracji i metadanych, byłoby szybsze niż zwykłe kopiowanie plików?
depquid
Z mojego doświadczenia wynika, że ​​kiedy potrzebna jest prawdziwa kopia zapasowa, dowiadujesz się również, że nie zapisałeś poprawnie i nie udokumentowałem wszystkich elementów systemu. Zamiast tego skupienie się na rekreacji zamiast na odtwarzaniu sprawia, że ​​jest to łatwiejsze, szybsze i częściej wykonywane. Oczywiście YMMV.
Sean Perry,