У моей компании есть старая система CentOS 5, которую нам нужно продублировать для тестирования. Я запускаю dd на двух небольших разделах и сохраняю их в /home, но раздел /home не может сохранить себя или другой раздел, так как недостаточно места.

/home заполнен только на 7%, поэтому копирование всех его файлов в tarball должно быть достаточно простым, но мне интересно, есть ли лучший способ сделать это.

Я не могу перевести машину в автономный режим и не могу подключить USB-накопитель извне и копировать в файлы таким образом, поэтому мне, скорее всего, придется использовать SCP, dd или tar.

Какие-либо предложения? Вот быстрый анализ df -h

Filesystem Size Used Left usage% Mount point /dev/sda2 97G 17G 75G 19% / /dev/sda1 99M 15M 80M 16% /boot tmpfs 2.0G 0 2.0G 0% /dev/shm /dev/sda3 352G 22G 312G 7% /home

2 ответа2

1

Определенно есть "лучшие" способы сделать это, но то, как вы это делаете, зависит от того, какие ресурсы у вас есть. Я перечислю несколько разных способов, и вы сможете решить, какой из них лучше для вас.

Начать копировать данные в /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.

Источники:

0

Небольшой поиск в Google должен дать вам ответ, который вам нужен.

В принципе, если две машины могут быть объединены в сеть, то tar через scp должен сделать свое дело.

Эта страница показывает только этот тип примера. Тот факт, что пользователь использует Slackware, не должен быть проблемой для вас.

РЕДАКТИРОВАТЬ: Этот документ о сбое сервера содержит некоторые заметки о том, что вам нужно сделать / подумать до / когда вы запускаете свой дубликат сервера.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .