Kaptain.
Telegram /
LinkedIn /
Email /
GIT /
RSS /
GPG /
Заказ печатных плат

№ 8232 В разделе
Sysadmin
от November 16th, 2016,
В подшивках: Backups, Linux
Разумеется, диск или раздел, с которого снимается образ должен быть отмонтирован от ОС. Если делается бэкап корневого раздела, то его необходимо хотя бы перемонтировать в режим RO или делать все действия вообще из под сторонней системы, загруженной с флешки.
Если бэкап локальный
Чтобы сделать полный бэкап жесткого диска в сжатый файл:
dd if=/dev/sda bs=1M | gzip -5 -c > /media/backups/diskimages/sda_full.image.gz
Пояснение команды:
[читаем блочное устройство с помощью dd и отправляем через пайп в gzip] | [gzip читает stdin с данными от dd и сжимает их, делая вывод в stdout] > [stdout от gzip направляется на запись в файл]
Вполне разумно не бэкапить тот же диск, куда записываешь образ бэкапа ![]()
Распаковать образ из файла и записать на диск:
gunzip -c /media/backups/diskimages/sda_full.image.gz | dd of=/dev/sda bs=1M
Пояснение команды:
[с помощью gunzip читаем файл, распаковываем и отправляем через пайп в dd] | [dd принимает распакованные данные и сразу же записывает их на диск]
С копированием образа на удаленный сервер по ssh
Данный метод гарантирует приватность, но катастрофически падает скорость. Идеально подходит для бэкапов через интернет или не доверенных сетях.
На компьютере, где происходит бэкап с копированием на бэкапный сервер:
dd if=/dev/sda | gzip -5 - | ssh root@backup.server.ru dd of=/media/backups/diskimages/sda_full.image.gz
А это если сам бэкапный сервер является инициатором бэкапа:
ssh root@client.server.ru "dd if=/dev/sda | gzip -5 -" | dd of=/media/backups/diskimages/sda_full.image.gz
Можно ssh заменить на netcat и ускорить копирование в локальной сети
В доверенной локальной сети лучше использовать данный метод.
У многих в интернетах даны примеры со сжатием на стороне бэкапного сервера и по этой причине бэкап диска на 1Тб будет по сети передавать весь 1 Тб и только потом сживаться, а это капитально тупо, ведь у нас не весь диск записан плохо сжимаемыми данными или даже пустым местом. Давайте сделаем нормально и сжимать будем там же, где мы читаем данные и передавать по сети минимально необходимое количество.
Сначала на сервере бэкапов нужно открыть порт куда будут лететь данные и сразу же записываться в файл:
nc -l -p 31337 > /media/backups/diskimages/sda_full.image.gz
На машине, которую надо бэкапить:
dd if=/dev/sda bs=1M | gzip -5 - | nc -w 5 backup.server.ru 31337
Проверить правильно ли забэкапился полный образ диска
В отличии от бэкапа раздела с полным бэкапом диска все чуть чуть сложнее
sudo losetup -Pf /media/backups/diskimages/sda_full.image.gz
sudo mkdir /mnt/test
sudo mount /dev/loop0p1 /mnt/test
После запуска losetup в файле распознаются разделы и появятся новые блочные устройства /dev/loopX, которые уже можно подмонтировать и убедиться в работоспособности бэкапа.
Fortune cookie: Sudden Death Dating: Quote, female: Am I worried about taking his last name? Forget it, at this point I'll take his first name, too.
Leave a Reply