Jak wykonać kopię zapasową pełnego serwera Centos?

24

Kilka tygodni temu przestawiłem się z serwera dedykowanego na VPS. Teraz, gdy wszystko działa dobrze na VPS, chciałbym zamknąć serwer dedykowany i zamknąć moje konto w firmie hostingowej.

Dla spokoju i bezpieczeństwa, chciałbym wykonać pełną kopię zapasową serwera przed jego zatrzymaniem.

Najlepsza byłaby kopia zapasowa, którą mogłem przeglądać, jeśli stwierdzę, że potrzebuję czegoś w kopii.

Jakie byłoby najlepsze rozwiązanie z linii poleceń?

Aktualizacja :

Medium: sieć

benjisail
źródło

Odpowiedzi:

28

Najlepszym narzędziem do tego celu jest prawdopodobnie zrzut, który jest standardowym narzędziem linux i da ci cały system plików. Zrobiłbym coś takiego:

/sbin/dump -0uan -f - / | gzip -2 | ssh -c blowfish [email protected] dd of=/backup/server-full-backup-`date '+%d-%B-%Y'`.dump.gz

Spowoduje to zrzut systemu plików / (upewnij się, że nie musisz zrzucać żadnych innych montowań!), Skompresuj go za pomocą gzip i ssh na zdalnym serwerze (backupserver.example.com), przechowując go w / backup / . Jeśli później będziesz musiał przejrzeć kopię zapasową, użyj przywracania:

restore -i

Inną opcją, jeśli nie masz dostępu do zrzutu, jest użycie tar i zrobienie czegoś takiego

tar -zcvpf /backup/full-backup-`date '+%d-%B-%Y'`.tar.gz --directory / --exclude=mnt --exclude=proc --exclude=tmp .

Ale tar nie obsługuje również zmian w systemie plików.

pehrs
źródło
to polecenie zrzutu dba również o zainstalowane programy, prawda? jak nginx itp.
Thale
Zrzut jest dosłowną kopią systemu plików, w której jest wszystko. Dopóki nie masz więcej niż jednego (sprawdź uruchamiając mount), to wszystko, czego potrzebujesz.
Bill Weiss
Rozumiem-bash: /sbin/dump: No such file or directory
Lucas Bustamante
@LucasB Może być konieczne zainstalowanie zrzutu. Na Ubuntu robisz coś takiegosudo apt-get install dump
pehrs
@pehrs jak przywracasz za pomocą .gzpliku? Czy możesz to dodać w swojej odpowiedzi. To by naprawdę pomogło.
Czerwona butelka
10

Jeśli chcesz wykonać kopię zapasową z Linuksa na Linuksa, nie użyłbym zrzutu, ponieważ jest to niewygodne, gdy potrzebujesz dostępu do czegoś w pliku kopii zapasowej. Po prostu użycie rsyncSSH do wykonania pełnej kopii zapasowej systemu powinno być w większości przypadków w porządku:

rsync -aAXv --delete-after --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found"} / user@server:backup-folder

Dzięki temu wszystko będzie ważne, a przeglądanie kopii zapasowej będzie możliwe bez dodatkowych kroków.

Możesz dodać --deleteopcję rsync, jeśli uruchamiasz to wiele razy w tym samym folderze kopii zapasowej. W takim przypadku upewnij się, że ścieżka źródłowa nie kończy się /*, lub ta opcja będzie miała wpływ tylko na pliki w podkatalogach katalogu źródłowego, ale nie będzie miała wpływu na pliki znajdujące się bezpośrednio w katalogu źródłowym.

Rafael Bugajewski
źródło
3

Na jakim nośniku będziesz przechowywać kopię zapasową? Jeśli tworzysz kopię zapasową przez sieć, sshfs / nfs zamontowałbym moje miejsce docelowe na serwerze źródłowym i uruchomiłbym coś takiego:

tar cvjf /<remote_mnt>/<point>/source-030810-full.tar.bz2 /* --exclude=/proc --exclude=/dev --exclude=/sys --exclude=/tmp --exclude=/<remote_mnt>

Zauważ, że nie został przetestowany, po prostu myślę, że możesz chcieć wykluczyć mniej więcej.

d34dh0r53
źródło
3

Używam polecenia opisanego powyżej z pehrs, ale zmodyfikowanego do użycia ftp. Próbka Crontab:

30 3 1 * * sudo /sbin/dump -0uan -f server-full-backup-root-`date '+%d-%B-%Y'`.dump / && gzip -1 /<path_to_backup_file>/server-full-backup-root-`date '+%d-%B-%Y'`.dump
50 * * * * lftp -f upload.x

upload.x zawiera dane uwierzytelniające ftp i reguły przesyłania:

open -u user,password -p 21 192.168.1.1
mirror -c -e -R /<path_to_backup_folder> /<path_to_remote_folder_without_trailing_slash>
exit

Uwaga 1: lftp może powodować wysokie zużycie procesora, gdy miejsce docelowe jest nieosiągalne podczas próby ponownego połączenia. Ponieważ w takich przypadkach wiele hostów VPS może zostać zresetowanych, sugeruję monitorowanie obciążenia procesora, aby zabić proces lftp, uniemożliwiając zamknięcie serwera przez właściciela hosta. Przykład dla średniej obciążenia> 1,33 dla procesów lftp (i dropbox). Niestety nie pamiętam źródła kodu początkowego, dzięki komuś:

Crontab */5 * * * * /home/cms/cron/loadmon.sh

#!/bin/bash
FROM_EMAIL_ADDRESS=cms
  trigger=1.33
  load=`cat /proc/loadavg | awk '{print $1}'`
  response=`echo | awk -v T=$trigger -v L=$load 'BEGIN{if ( L > T){ print "greater"}}'`
if [[ $response = "greater" ]]
then
  killall dropbox lftp
  nice -n 19 sh /cms/.dropbox-dist/dropboxd
  sar -q | mailx -s "High load on server - [ $load ]" r***[email protected]
fi

Uwaga 2: narzędzie zrzutu może nie działać na OpenVZ VPS lub niektórych innych serwerach wirtualnych.

Rapekaz
źródło
2

słyszałeś o Baculi ?

Bacula to zestaw programów komputerowych typu Open Source, przystosowanych do pracy w przedsiębiorstwach, które pozwalają Tobie (lub administratorowi systemu) zarządzać tworzeniem kopii zapasowych, odzyskiwaniem i weryfikacją danych komputerowych w sieci różnego rodzaju komputerów. Bacula jest stosunkowo łatwa w użyciu i wydajna, a jednocześnie oferuje wiele zaawansowanych funkcji zarządzania pamięcią, które ułatwiają wyszukiwanie i odzyskiwanie utraconych lub uszkodzonych plików. Pod względem technicznym jest to program do tworzenia kopii zapasowych oparty na sieci Open Source, przeznaczony dla przedsiębiorstw.

dani.jtk
źródło