Как сделать резервную копию полного сервера Centos?

24

Несколько недель назад я перешел с выделенного сервера на VPS. Теперь, когда на VPS все работает хорошо, я бы хотел выключить выделенный сервер и закрыть свою учетную запись в хостинговой компании.

Для душевного спокойствия и для большей безопасности я хотел бы сделать полную резервную копию сервера перед его остановкой.

Лучшей была бы резервная копия, которую я мог бы просмотреть, если я обнаружил, что мне нужно что-то в резервной копии.

Каково было бы лучшее решение из командной строки?

Обновить :

Средний: Сеть

benjisail
источник

Ответы:

28

Лучшим инструментом для этого, вероятно, является dump, который является стандартным инструментом 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 и отправьте ssh на удаленный сервер (backupserver.example.com), сохранив его в / backup / , Если вам позже понадобится просмотреть резервную копию, вы используете восстановление:

restore -i

Другой вариант, если у вас нет доступа к дампу, это использовать tar и сделать что-то вроде

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

Но tar также не обрабатывает изменения в файловой системе.

pehrs
источник
эта команда дампа также заботится об установленных программах? как nginx, и т.д ..
Thale
Дамп - это буквальная копия файловой системы, в которой есть все. Пока у вас не более одного (проверьте, запустив mount), это все, что вам нужно.
Билл Вайс
Я понял-bash: /sbin/dump: No such file or directory
Лукас Бустаманте
@ LucasB Возможно, вам нужно установить дамп. На Ubuntu вы делаете что-то вродеsudo apt-get install dump
pehrs
@pehrs как восстановить с помощью .gzфайла? Можете ли вы добавить это в своем ответе. Это действительно помогло бы.
Красная бутылка
10

Если вы хотите сделать резервную копию из Linux в Linux, я бы не использовал dump, потому что это неудобно, когда вам нужно получить доступ к чему-то внутри файла резервной копии. В большинстве случаев хорошо использовать только 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>

Обратите внимание, что это не было проверено, просто мое общее мнение, что вы можете исключить больше или меньше этого.

d34dh0r53
источник
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). К сожалению, я не помню источник исходного кода, спасибо кому-то:

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***s@gmail.com
fi

Примечание 2: утилита дампа может не работать на OpenVZ VPS или некоторых других виртуальных серверах.

Rapekaz
источник
2

Вы слышали о Bacula ?

Bacula - это набор компьютерных программ с открытым исходным кодом, готовых к использованию на предприятии, которые позволяют вам (или системному администратору) управлять резервным копированием, восстановлением и проверкой компьютерных данных в сети компьютеров различных типов. Bacula относительно проста в использовании и эффективна, и в то же время предлагает множество продвинутых функций управления хранением, которые позволяют легко находить и восстанавливать потерянные или поврежденные файлы. С технической точки зрения, это программа резервного копирования с открытым исходным кодом, готовая к использованию на предприятии.

dani.jtk
источник