INT 21h

Select language

Образ диска с помощью dd со сжатием на лету и передачей по ssh или netcat

№ 8232 В разделе Sysadmin от November 16th, 2016,
В подшивках: ,

Разумеется, диск или раздел, с которого снимается образ должен быть отмонтирован от ОС. Если делается бэкап корневого раздела, то его необходимо хотя бы перемонтировать в режим 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, которые уже можно подмонтировать и убедиться в работоспособности бэкапа.

Нет комментариев »

Leave a Reply

Your email address will not be published. Required fields are marked *

*

Облачная платформа
Яндекс.Метрика

Fortune cookie: Finally, Zippy drives his 1958 RAMBLER METROPOLITAN into the faculty dining room.