Як створити резервну копію повного сервера Centos?


24

Я перейшов кілька тижнів тому з виділеного сервера на VPS. Тепер, коли все працює на VPS, я хотів би вимкнути виділений сервер і закрити свій рахунок в хостинговій компанії.

Для душевного спокою і для того, щоб бути більш безпечним, я хотів би зробити повну резервну копію сервера, перш ніж зупиняти його.

Найкраще було б зробити резервну копію, яку я міг би переглядати, якщо виявлю, що мені щось потрібне в резервній копії.

Що було б найкращим рішенням з командного рядка?

Оновлення:

Середній: мережа

Відповіді:


28

Найкращий інструмент, який можна використовувати для цього, - це, мабуть, дамп, який є стандартним інструментом Linux і надасть вам всю файлову систему. Я б зробив щось подібне:

/sbin/dump -0uan -f - / | gzip -2 | ssh -c blowfish user@backupserver.example.com dd of=/backup/server-full-backup-`date '+%d-%B-%Y'`.dump.gz

Це зробить дамп файлової системи / (переконайтеся, що вам не потрібно скидати будь-які інші кріплення!), Стисне його за допомогою gzip та перенести на віддалений сервер (backupserver.example.com), зберігаючи його в / backup / . Якщо пізніше вам потрібно переглянути резервну копію, ви використовуєте відновлення:

restore -i

Інший варіант, якщо у вас немає доступу до дампа - це використовувати дьоготь і робити щось подібне

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

Але tar також не обробляє зміни у файловій системі.


ця команда dump також піклується про встановлені програми? як nginx та ін ..
Thale

Дамп - це буквальна копія файлової системи, у якій все є. Поки у вас немає більше (перевірити бігом mount), це все, що вам потрібно.
Білл Вайс

Я розумію це-bash: /sbin/dump: No such file or directory
Лукас Бустаманте

@LucasB Можливо, вам доведеться встановити дамп. У Ubuntu ви робите щось на кшталтsudo apt-get install dump
pehrs

@pehrs як відновити .gzфайли? Чи можете ви додати це у своїй відповіді. Це дійсно допоможе.
Червона пляшка

10

Якщо ви хочете зробити резервну копію з Linux на Linux, я б не використовував дамп, тому що це незручно, коли вам потрібно отримати доступ до чогось у файлі резервної копії. Просто використання rsyncSSH для повного резервного копіювання системи у більшості випадків має бути добре:

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

Це збереже все важливе і дозволить переглядати резервну копію без додаткових кроків.

Ви можете додати --deleteпараметр rsync, якщо ви запускаєте це кілька разів до однієї папки резервного копіювання. У цьому випадку переконайтеся, що шлях до джерела не закінчується /*, або цей параметр матиме вплив лише на файли всередині підкаталогів вихідного каталогу, але це не матиме впливу на файли, що знаходяться безпосередньо всередині вихідного каталогу.


3

На якому носії ви збираєтеся зберігати резервну копію? Якщо ви створюєте резервну копію по мережі, я б sshfs / nfs змонтував своє призначення на вихідному сервері і запускав щось на кшталт:

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

Зауважте, що не було випробувано, просто моє загальне мислення ви можете виключити більше чи менше.


3

Я використовую описану вище команду від pehrs, але модифіковану для використання ftp. Зразок 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 містить ftp облікові дані та правила для завантаження:

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

Примітка 1: lftp може спричинити велике використання процесора, коли призначення недоступне, намагаючись знову підключитися. Оскільки в багатьох випадках багато VPS-серверів, що розміщують хостинг, можуть бути скинуті, я пропоную відстежувати завантаження процесора, щоб знищити процес lftp, щоб уникнути вимкнення сервера власником хоста. Приклад для середнього завантаження> 1,33 для процесів lftp (і dropbox). На жаль, я не пам’ятаю джерела початкового коду, дякую комусь:

Кронтаб */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***s@gmail.com
fi

Примітка 2: утиліта дампа може не працювати на OpenVZ VPS або деяких інших віртуальних серверах.


2

ви чули про Бакулу ?

Bacula - це набір відкритих джерел, готових до підприємств, комп’ютерних програм, які дозволяють вам (або системному адміністратору) керувати резервним копією, відновленням та верифікацією комп'ютерних даних через мережу комп'ютерів різного типу. Bacula порівняно простий у використанні та ефективний, при цьому пропонує багато розширених функцій управління сховищем, які полегшують пошук і відновлення втрачених або пошкоджених файлів. У технічному плані це відкрите джерело резервного копіювання з відкритим кодом.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.