Я хочу сделать резервную копию работающего сервера. Все файлы конфигурации и все остальное, не выключая его.
Как мне это сделать? Можно ли попробовать скопировать все? Потому что у меня были проблемы с каталогом root
.
Я не хочу проводить много экспериментов еще и потому, что там есть важные конфигурации.
Я пытаюсь сделать все это через ssh
. Как мне сделать эту резервную копию?
Есть идеи?
решение1
Если вы хотите сделать резервную копию всех данных, то вы можете войти на сервер через ssh, а затем просто скопировать все файлы. Например, с помощью scp
или с помощью rsync
.
Вы даже можете скопировать все, включая файлы ОС, если используете
rsync -zvr --exclude /dev/ / destination_computer_name_or_ip
-r: Рекурсивный
-v: подробный
-z: Включает сжатие
Обратите внимание, что это не скопирует загрузочную запись. Для этого вам нужно скопировать весь диск, и вы хотите сделать это, когда диск не смонтирован. (Читайте: Выключите машину, которую вы хотите полностью_полным_резервным копированием, и загрузитесь с liveCD или загрузитесь с другого раздела.)
Затем используйте dd для чтения всего диска.
Пример кода:
ПК для хранения резервной копии:
nc -l 4242 | gunzip | cat > my_full_disk_backup_of_PC_named_foo
А на ПК для резервного копирования:
dd if=/dev/sda of=- bs=1M | gzip | nc -p 4242 name_of_the_destination
dd будет читать с диска. Весь диск, включая загрузочные сектора и пустые сектора.
В примере мы настроили его для первого диска, как указано sdа. Настройте sdb для второго диска, sdc для третьего диска и т. д. и т. п.
Мы выводим данные на стандартный вывод, обозначенный -
.
bs=1M устанавливает размер блока. Вам это не нужно, но без этого будет много мелких чтений и огромные накладные расходы. Установка этого значения больше 512 байт или 4k ускорит процесс.
Затем мы передаем |
вывод через gzip для сжатия. Это предполагает, что ваш процессор будет намного быстрее, чем ваша сеть. Вы можете пропустить gzip на источнике и gunzip на месте назначения, в этом случае вы отправите необработанные данные, а не сжатые данные по сети.
Последний — это nc
или netcat. Он принимает входные данные из предыдущего канала и помещает их в сеть, в направлении порта 4242 на компьютере с именемназвание_пункта_назначения.
На принимающей стороне мы делаем обратное:
Прослушивание через nc -l на предмет ввода на порту 4242,
распаковать gzip, если необходимо,
И наконец запишите это в файл.
Важная заметка:
Вы можете сделать это во время загрузки с диска, резервную копию которого вы делаете. Но нет гарантии, что файловая система останется прежней во время резервного копирования. Поэтому пробуйте это только в том случае, если вы можете загрузиться с диска только для чтения. (например, используя только RAM-диск)
решение2
то, что я бы сделал, очень похоже наХеннес
Я бы создал файл ISO, скачал его, записал на диск или USB-накопитель и загрузил копию в Dropbox на всякий случай.
mkisofs -V LABEL -r DIRECTORY | gzip > backup.iso.gz
Мой друг размещает свои сервера на Rackspace, и он сказал мне, что пользователи Rackspace могут автоматически создавать ISO-файлы, и если они мигрируют на новый сервер, они могут сохранить старую резервную копию на старом облачном сервере, используя rsync
или что-то еще, и отключить его, они все равно будут платить, но это дешево.
Я не знаю, предлагает ли ваш хостинг автоматизированную систему резервного копирования или вы платите за поддержку. Стоит спросить их и, возможно, позволить им сделать это, если вы делаете это впервые.