Linux - jakie katalogi należy wykluczyć podczas tworzenia kopii zapasowej serwera?

37

Tworzę kopię zapasową serwera Linux i przechowuję go na innym serwerze.

Zacząłem od prostego

rsync -aPh --del server.example.com:/ /mnt/backup

Następnie ktoś zauważył, że nie powinienem wykonywać kopii zapasowej /proc, ponieważ nie chcesz przywracać /procjednego serwera na drugim.

Czy jest coś jeszcze, co powinienem / nie powinienem uwzględnić?

Na przykład o czym /sys?

Rory
źródło

Odpowiedzi:

24

To naprawdę zależy od tego, jak przywrócisz system. Jeśli przebudujesz, potrzebujesz tylko plików konfiguracyjnych / danych dla swoich usług (np .: / etc, / opt, / var, / home)

Jeśli szukasz pełnego przywracania systemu, możesz pominąć / proc, / boot & / dev. Następnie możesz zainstalować minimalny system operacyjny z nośnika rozruchowego, a następnie przywrócić system za pomocą kopii zapasowej.

Oczywiście najlepsza kopia zapasowa to taka, która została przetestowana i zweryfikowana .

Pomiń więc to, czego nie potrzebujesz, spróbuj przywrócić na maszynie wirtualnej i sprawdź, czy możesz odzyskać system za pomocą tych danych.

Wayne
źródło
5
Nie pomijaj /bootcałkowicie - może być konieczne porównanie starej konfiguracji rozruchowej z nową konfiguracją rozruchową. Pamiętaj tylko, aby nie przywracać /boot inaczej niż ręcznie.
quack quixote
5
I także / sys ... I aby przywrócić do czystego metalu, lepiej też /etc/udev/rules.d/.
wazoox
2
również zgubiłem + znaleziono, które dla systemu plików / mnt i / media nie kopiują żadnego zamontowanego urządzenia
ostrze
29

Zarówno /proci /syssą wirtualne systemy plików, które odzwierciedlają stan systemu i pozwalają na zmianę kilku parametrów uruchomieniowe (a czasem zrobić bardziej niebezpieczne rzeczy, jak pisanie bezpośrednio do pamięci lub do urządzenia). Nigdy nie należy ich tworzyć kopii zapasowych ani przywracać.

W większości współczesnych dystrybucji /devjest dynamicznie tworzony przy rozruchu (jest to system plików pamięci wypełniony przez udevi znajomych). Tworzenie kopii zapasowej nie ma sensu, a próba przywrócenia go jest daremna. Jeśli jednak twoja dystrybucja jest skonfigurowana do używania statycznego /dev, nie ma to zastosowania (sprawdź /proc/mounts, czy /devjest tmpfsto system plików pamięci).

Istnieją inne systemy plików, których nie powinieneś tworzyć kopii zapasowej; usbfs(zwykle co /proc/bus/usb, jeśli zamontowany w ogóle), debugfs(miało być w /sys/kernel/debugprzypadku zamontowania w ogóle, ale niektórzy ludzie umieścić go gdzieś indziej, to prawdopodobnie nie ma tego jednego), devpts(montowane w /dev/pts), inne tmpfsprzypadki (często spotykane w /dev/shm, /var/run, /var/locki innych miejscach; tworzenie kopii zapasowych i przywracanie ich powinno być nieszkodliwe, ale bezcelowe, ponieważ ich zawartość jest tracona podczas zamykania), a wszelkie zdalne systemy plików lub magiczne katalogi automounterów (próby ich tworzenia lub przywracania mogą zakończyć się katastrofą, jak to możliwe) kopie zapasowe / przywracanie na innym komputerze ). Powinieneś także uważać na /mediai/mnt, ponieważ można tam znaleźć urządzenia zewnętrzne (takie jak dysk CD, którego zapomniałeś w napędzie), ale mogłeś również użyć ich celowo, aby zamontować coś, co powinno zostać zarchiwizowane.

Należy zauważyć, że inne niż w większości nieszkodliwe tmpfsprzypadkach, sieciowych systemów plików / automounters i nośników wymiennych, systemy plików nie należy z powrotem wszystkie są potomkami /dev, /procalbo /sys. Jeśli nie masz sieciowych systemów plików (lub automounters) i nie wyłączając nośników wymiennych, /sysa /proci restartu po restore (przetrzeć tmpfsinstancji) powinno wystarczyć.

CesarB
źródło
8

Niektóre pliki specjalne w / proc i / sys mylą rsync. Zazwyczaj nie chcesz również tworzyć kopii zapasowych zamontowanych sieciowych systemów plików. Pliki rzadkie mogą również powodować problemy.

Dodaj -x, aby ograniczyć go do jednego systemu plików. Pozwala to uniknąć wszystkich sieciowych systemów plików i / proc itp. Jednak musisz uruchomić jeden program rsync dla każdego zamontowanego systemu plików.

Dodaj -S, aby rozsądnie obsługiwać rzadkie pliki.

pjc50
źródło
4

/ boot, / dev i / proc są dość bezużyteczne do tworzenia kopii zapasowych - jeśli jednak wiesz, co robisz, możesz wykonać kopię zapasową / boot.

Nie chciałbym również tworzyć kopii zapasowych / lib, / media, / mnt, / sbin, / bin, / srv, / sys lub / tmp.

/ usr jest opcjonalny, w zależności od tego, czy masz coś w / usr, dla którego warto wykonać kopię zapasową. Gdybym był tobą, najbardziej martwi mnie tworzenie kopii zapasowych $ HOME, / var i / etc (dla plików konfiguracyjnych) użytkownika.

Znowu jednak to wszystko zależy od rodzaju kopii zapasowej, którą chcesz wykonać. Czy to serwer WWW? Czy to komputer osobisty? Czy to serwer powłoki z mnóstwem katalogów w katalogu / home?

Michael Pobega
źródło
Chciałbym przywrócić poprzez klonowanie kopii zapasowej na nowym komputerze
Rory
Co rozumiesz przez „klonowanie”? Zawsze możesz po prostu wykonać kopię zapasową surowych partycji za pomocą dd i sfdisk sfdisk -d> table_table.part dd if = / dev / sda1 of = dev.sda1.img (zrób to dla każdej partycji), a następnie w nowym systemie: sfdisk / dev / sda <table_table.part dd if = dev.sda1.img of = / dev / sda1 (ponownie dla każdej partycji)
Michael Pobega
Ponieważ system komentarzy nie lubi tagów kodu, opublikowałem inną odpowiedź.
Michael Pobega
@MichaelPobega Jeśli tworzysz kopię zapasową surowych partycji, tak jak mówisz, będziesz musiał skopiować cały rozmiar dysku. Po co kopiować 512 GB, skoro użyłeś tylko 80 GB dysku? Dzięki rsyncniemu skopiujesz nie tylko to, czego użyłeś, ale także umożliwisz synchronizację w przyszłości, abyś mógł bezpiecznie uruchomić dla niego zadanie cron.
Maks.
Wracając do tych lat później, moja dekada doświadczeń nauczyła mnie, że masz rację @Max.
Michael Pobega
3

Możesz osiągnąć całkowitą kopię zapasową za pomocą sfdisk i dd.


Aby wykonać kopię zapasową schematu partycji każdego dysku twardego, użyj sfdisk w następujący sposób:

sfdisk -d /dev/sda  > parttable_sda.part

Aby wykonać kopię zapasową każdej partycji, możesz użyć dd:

dd if=/dev/sda1 of=devsda1.img

Gdzie /dev/sda1jest odmontowany, na przykład przy rozruchu z płyty CD na żywo.

(pamiętaj, że będziesz musiał mieć dużo wolnego miejsca, aby zapisać ten plik; więc możesz chcieć zapisać go na zewnętrznym nośniku) Zrób to dla każdej partycji, pojedynczo i wykonaj kopię zapasową wszystkiego.


Następnie, aby przywrócić na innym komputerze, możesz:

sfdisk /dev/sda < parttable_sda.part
dd if=devsda1.img of=/dev/sda1    # do this for each partition
Michael Pobega
źródło
3
OSTRZEŻENIE: rób to tylko wtedy, gdy partycja jest odmontowana lub zamontowana tylko do odczytu. Zrzut surowej zawartości partycji podczas jej zapisywania może zakończyć się bardzo niespójnym systemem plików na kopii zapasowej (ponieważ bloki na początku systemu plików są kopiowane „wcześniej” niż bloki na końcu, a algorytmy systemu plików nie spodziewaj się tego; możesz uniknąć tego problemu, jeśli możesz wykonać atomową migawkę systemu plików). fsck ci nie pomoże, ponieważ jego algorytmy zależą również od kolejności zapisywania systemu plików na dysku.
CesarB
dd jest właściwą drogą. Oczywiście bootuje się na LiveCD. Ważne jest, dd if=/dev/urandom of=/dev/sdb bs=512 count=12aby wyczyścić MBR i tablicę partycji dysku docelowego.
SDsolar
2

Zamiast wykluczać, zwykle tworzę kopię zapasową tylko tego, czego chcę. W tym: /home /etc /var(oprócz /var/log)

DennyHalim.com
źródło
1

Zasadniczo nie trzeba tworzyć kopii zapasowych pseudo-systemów plików (/ proc, / sys, / dev / shm ...).

sendmoreinfo
źródło
1

Jak wskazała ta wspaniała społeczność:

/ dev / proc / sys / tmp / run / media / lost + found / boot (/ boot jest opcjonalny, patrz inne komentarze)

Dla odniesienia moja ostatnia komenda rsync (w Arch z zewnętrznym nośnikiem zamontowanym w '/ run / media / fred / INTENSO /' i tworzenia kopii zapasowej do folderu o nazwie 'fred') to:

$ sudo rsync -Pazhmxv --exclude / run / media --exclude / dev --exclude / lost + found --exclude / tmp --exclude / proc --exclude / boot --exclude / sys / / run / media / fred / INTENSO / fred /.

(wykluczone pliki można również określić w nawiasach klamrowych (--exclude = {/ dev, / proc}) w Bash lub w pliku tekstowym (--exclude-from = 'excude.txt')).

-P: pokaż postęp -a: tryb archiwizacji -z: kompresuj podczas przesyłania -h: wypisuje liczby w formacie czytelnym dla człowieka -m: przycina puste katalogi -x: ogranicza do jednego systemu plików -v: verbose

Fred Christophe
źródło
1

Korzystam z komputera z systemem Ubuntu 18.04 i mam następujące wykluczone:

/dev/
/proc/
/sys/
/tmp/
/run/
/mnt/
/media/
/lost+found/
/cdrom/
/swapfile

Ponadto, specjalnie dla mojej konfiguracji, wykluczam te:

/home            <-- Backed up separately
/backup          <-- Mount point for backup disks
/data            <-- Mount point for data disks, which are backed up off-site
/scratch         <-- Mount point for volatile fast SSD scratch disk
użytkownik2724383
źródło
0

Zazwyczaj mam zwyczaj tworzenia kopii zapasowej wszystkiego w systemie, nawet tego, co wiem na pewno, bezużyteczne do tworzenia kopii zapasowych. Jest prostszy w konfiguracji i możesz być w 100% pewien, że dostaniesz wszystko, czego potrzebujesz, zawarte w kopii zapasowej.

Maximus Minimus
źródło
1
tak, ale kolejne pytanie brzmi: co usuwasz z kopii zapasowej jako niepotrzebne?
Rory,
Na co odpowiedziałbym: „nic”.
Maximus Minimus
Prawdziwe. Wyłączysz go z procesu przywracania, a nie z samej kopii zapasowej. Ale pewnie nadal chce opuścić /proci /devtak nie mylić biedna rsync.
TJ Crowder
1
@ mh, przywróciłbyś / proc / kcore, która jest pamięcią oryginalnego serwera? to brzmi trochę głupio ...
Rory
0

Używam Ubuntu Linux jako serwera testowego do tworzenia stron internetowych i do hostowania dokumentacji wiki. Każdej nocy crontab zrzuca bazę danych MySQL do / var / www, a następnie wszystkie pliki / var / www są archiwizowane i replikowane na serwerze kopii zapasowej. To nie jest idealne, ale wystarczy. W pewnym momencie musiałem odbudować serwer, a tak naprawdę brakowało mi tylko plików konfiguracyjnych Apache i Samba.

Nic
źródło
0

Zakładam, że nie masz Linuksa na maszynie wirtualnej. Jeśli to w ogóle możliwe, zachęcam do rozważenia przejścia na wirtualizację. Kopie zapasowe na poziomie VM to zupełnie nowy poziom spójności i łatwości użytkowania. Istnieją bezpłatne narzędzia do wirtualizacji, więc niekoniecznie musisz inwestować w VmWare lub inne drogie narzędzie potwora.

Gnudiff
źródło
0

Pytanie: Które katalogi należy wykluczyć podczas tworzenia kopii zapasowej serwera?

Oto skrypt, którego często używam, od laptopa Ubuntu 16.04 LTS do serwera Ubuntu 16.04 LTS. Wyraźnie pokazuje, które katalogi należy pominąć podczas tworzenia pełnej kopii zapasowej:

echo "EMPTYING TRASH"
rm -rf ~/.local/share/Trash/* >/dev/null 2>&1
echo "DELETING OLD LOGS"
sudo rm -f /var/tmp/* >/dev/null 2>&1
sudo rm -f /var/log/*.gz >/dev/null 2>&1
sudo rm -f /var/log/kern* >/dev/null 2>&1
sudo rm -f /var/log/messages* >/dev/null 2>&1
echo "DELETING CHROMIUM CACHE"
rm -rf /home/pi/.cache/chromium/Default/Cache/* >/dev/null 2>&1
echo "====================================================================="
echo "      BEGINNING RSYNC from PAV root to PRIME5:/mnt/full/pav"
echo "====================================================================="
time sudo rsync -aAXv \
          / \
          --bwlimit=500 \
          --delete \
          --delete-excluded \
          --ignore-errors \
          --exclude="/dev/*" \
          --exclude="/proc/*" \
          --exclude="/sys/*" \
          --exclude="/tmp/*" \
          --exclude="/run/*" \
          --exclude="/mnt/*" \
          --exclude="/media/*" \
          --exclude="/lost+found" \
          abc@prime5:/mnt/full/pav
echo "====================================================================="
df -h

Zwróć uwagę na wykluczenie opcji /mnt- gdzie każdy system Ubuntu ma zamontowany dysk do tworzenia kopii zapasowych w pełnym wymiarze godzin, umożliwiający rsync4-dniowe tworzenie kopii zapasowych na bazie cron . Te dyski są montowane według wpisów fstabi są zawsze obecne. Włączenie ich do kopii zapasowej w innym systemie byłoby powielaniem.

Podobnie /mediajest tam , gdzie montuje się dyski USB. Są one tworzone osobno.

SDsolar
źródło