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