Назад | Перейти на главную страницу

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

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

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

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

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

Обновить :

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

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

Если вы хотите сделать резервную копию из Linux в Linux, я бы не стал использовать дамп, потому что это неудобно, когда вам нужно получить доступ к чему-то внутри файла резервной копии. Просто используя rsync через SSH на сделать полную резервную копию системы в большинстве случаев должно быть хорошо:

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

Это сохранит все важное и позволяют просматривать резервную копию без дополнительных действий.

Вы можете добавить rsync --delete вариант, если вы запускаете это несколько раз в одной и той же папке резервного копирования. В этом случае убедитесь, что исходный путь не заканчивается на /*, или этот параметр будет влиять только на файлы в подкаталогах исходного каталога, но не повлияет на файлы, находящиеся непосредственно внутри исходного каталога.

На каком носителе вы собираетесь хранить резервную копию? Если вы выполняете резервное копирование по сети, я бы sshfs / nfs смонтировал мое место назначения на исходном сервере и запустил что-то вроде:

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

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

Я использую описанную выше команду от 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: Утилита dump может не работать на OpenVZ VPS или некоторых других виртуальных серверах.

ты слышал о Bacula?

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