Определенно есть "лучшие" способы сделать это, но то, как вы это делаете, зависит от того, какие ресурсы у вас есть. Я перечислю несколько разных способов, и вы сможете решить, какой из них лучше для вас.
Начать копировать данные в /home в тарболл бессмысленно. Вы не можете сохранить его локально, а это значит, что для этого потребуется удаленный сервер, на который вы можете отправить данные. Предпочтительно, чтобы сервер в той же сети, что и этот компьютер, был доступен через SSH. Честно говоря, создание тарболов из других разделов и размещение их в /home - пустая трата времени.
Если вы хотите дублировать этот сервер, я бы использовал dd
для создания образа /dev /sda и отправки данных по SSH на другой сервер. Два лучших способа сделать это - одновременно создать образ другого жесткого диска или сохранить изображение в виде файла.
dd if=/dev/sda bs=4096 conv=notrunc,noerror,sync | ssh user@machine "dd of=/dev/sdX"
Это клонирует весь диск, включая MBR (и, следовательно, загрузчик), все разделы, UUID и данные, отправляя его по SSH на другую машину и создавая образ диска по вашему выбору. Варианты, которые я предложил, делают следующее:
- notrunc или 'not truncate' поддерживает целостность данных, давая команду dd не обрезать никакие данные.
- noerror указывает dd продолжить работу, игнорируя все ошибки чтения.
Поведение по умолчанию для dd - остановка при любой ошибке.
- sync записывает нули для ошибок чтения, поэтому смещения данных остаются синхронизированными.
- bs = 4096 устанавливает размер блока в 4 КБ, оптимальный размер для эффективности чтения / записи жесткого диска и, следовательно, скорости клонирования.
Чтобы это работало, пользователь, которого вы используете, входит в систему с SSH, так как он должен быть либо пользователем root, либо частью группы disk
. /dev /sdaX должен быть в режиме 660, предоставляя группе доступ для чтения / записи. Владельцем группы по умолчанию должен быть disk
.
Кроме того, вы можете создать образ, который вы можете использовать для записи непосредственно на диск.
dd if=/dev/sda bs=4096 conv=notrunc,noerror,sync | ssh user@machine "dd of=/path/to/wherever/server.img"
Чтобы записать образ на жесткий диск с компьютера, на котором он сохранен, вы можете использовать следующую команду.
dd if=/path/to/server.img bs=4096 conv=notrunc,noerror,sync of=/dev/sdX
И наконец, если вас беспокоит пространство, вы можете сжать изображение перед его отправкой по SSH.
dd if=/dev/hda conv=sync,noerror bs=4096 | gzip -c | ssh user@machine "of=/path/to/wherever/server.img.gz"
и писать это
gunzip -c /path/to/server.img.gz | dd of=/dev/sdX
Наконец, если вы хотите извлечь отдельные файлы из образа, не записывая его на другой диск, вы можете смонтировать его. Тем не менее, это не будет работать, если он сжат.
Вам потребуется fdisk -lu /path/to/server.img
чтобы получить смещение отдельных разделов. Как только вы это сделаете, вам нужен начальный сектор раздела, который вы хотите смонтировать. В качестве аргумента, скажем, раздел, к которому мы хотим получить доступ, начинается в секторе 122441728.
$ fdisk -lu server.img
Disk server.img: 320.1 GB, 320072933376 bytes
255 heads, 63 sectors/track, 38913 cylinders, total 625142448 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x86308630
Device Boot Start End Blocks Id System
/dev/sda1 * 63 114441469 57220703+ 83 Linux
/dev/sda2 114442240 122441727 3999744 82 Linux swap / Solaris
/dev/sda3 122441728 625141759 251350016 83 Linux
Затем вы должны использовать mount -o ro,loop,offset=$((122441728 * 512)) server.img /mnt
для монтирования третьего раздела в /mnt.
Источники: