Как перенести или скопировать весь диск с удаленной машины Debian на локальную машину?

Для перебора файлов (и подкаталогов) в каталоге можно использовать

for file in /Applications/*
do
    echo "$file"
done

Обратите внимание, что если не найдено ни одного совпадения, переменная file будет содержать строку /Applications/* буквально (со звездочкой), и это может вызвать ошибки, если следующие команды ожидают существующий путь. Если вы хотите ничего не делать, если ни один файл не найден, вы можете использовать опцию nullglob:

shopt -s nullglob
for file in /Applications/*
do
    echo "$file"
done
2
13.04.2017, 15:36
2 ответа

Имя устройства диска зависит от типа диска (точнее, от типа шины и контроллера, к которым подключен диск, и от того, какой драйвер их обслуживает). /dev/sda - типичное имя первого диска в ПК (в зависимости от драйвера могут использоваться другие имена, например, для некоторых старых типов дисковых контроллеров или некоторых аппаратных RAID-контроллеров). В VPS диск обычно является виртуальным, и имя устройства зависит от технологии виртуализации, например /dev/vda или /dev/xvda. Вы можете найти имена блочных устройств в вашей системе с помощью df или lsblk.

Но не используйте это для создания резервной копии из живой системы! С большой вероятностью вы получите нечитаемую резервную копию. Если содержимое диска изменится во время создания резервной копии, что неизбежно на живой системе (например, куда-то запишется журнал), то ваш образ будет непоследовательным - немного старого состояния, немного нового состояния - и может оказаться невосстановимым.

Предпочтительным способом создания резервной копии является создание моментального снимка, т.е. представления файловой системы, которое застыло и не меняется, даже если реальная система продолжает меняться. Как это сделать и возможно ли это вообще, зависит от того, как устроена ваша система. Некоторые типы файловых систем, такие как btrfs и zfs, имеют встроенную возможность создания моментальных снимков. LVM также может делать моментальные снимки тома.

Если вы не можете сделать моментальный снимок (или даже если можете), сделайте резервную копию на уровне файлов. Резервная копия на уровне файлов из изменяющейся системы будет непоследовательной, но если вы не внесете "важных" изменений, резервная копия будет пригодна для использования. Например, если вы перемещаете файлы, они могут быть пропущены из резервной копии, если они будут перемещены из каталога, который программа резервного копирования еще не обошла, в каталог, который она уже обошла. С другой стороны, если файл журнала продолжает расти, у вас будет некая промежуточная версия этого файла, но у вас не будет поврежденного образа файловой системы. Если файл удален и создан другой файл, у вас может не быть ни одного из этих файлов, ни одного из них, ни обоих, но у вас не будет записи в каталоге старого файла, указывающей на некоторые данные в новом файле.

Вы можете использовать GNU tar (как root!) для резервного копирования системы Linux вместе с важными метаданными.

ssh root@vps 'tar -cJf - --acls --selinux --one-file-system /' >vps.tar.xz
5
27.01.2020, 21:54

/ dev / sda - это соглашение, когда связь с вашим диском осуществляется напрямую через драйвер SCSI. В комментарии вы сказали, что ваш диск находится в / dev / vda : такое именование довольно часто встречается в виртуализированных решениях. Если бы я догадался, я бы сказал, что вы говорите о VPS, управляемом KVM.

Если вы хотите сделать резервную копию своего диска / dev / vda , просто воспользуйтесь предложением slm:

ssh user@remote "dd if=/dev/vda | gzip -1 -" | dd of=image.gz

Это создаст резервную копию / dev / vda полностью, и вы сможете повторно dd его на другой диск позже, если на нем достаточно места.

fdisk -l работал, и мой файл устройства - / dev / vda1 , но содержит ли он всю мою систему?

Вы прочитали это слишком быстро. / dev / vda1 - это раздел (кусок) диска / dev / vda . Обратите внимание на три вещи:

  • Если ваша система состоит исключительно из корневого раздела по адресу / dev / vda1 , тогда будет достаточно резервного копирования / dev / vda1 . Вам не нужно делать резервную копию всего диска (включая «заголовки» диска).
  • Если ваша система занимает несколько разделов на / dev / vda , то вы должны dd все из них, чтобы получить все (или только dd весь диск, как указано выше).
  • В вашей системе также может использоваться несколько дисков! Это немного реже, но, думаю, такое могло случиться. У вас могут быть разделы / и / var на / dev / vda (на / dev / vda1 и / dev / vda2 например) и домашние каталоги ( / home ) в / dev / vdb1 на другом диске ( / dev / vdb ).

В вашем случае я бы сказал, что lsblk - правильный инструмент для понимания вашей настройки. Запустите его и посмотрите на столбец MOUNTPOINT . Всякий раз, когда там что-то есть, ваша система использует раздел в этой строке. Если вы хотите сделать резервную копию всего этого, вам необходимо:

  • Загрузить все используемые разделы ( / dev / vdXY ) в файлы. Перегородка используется, когда она куда-то монтируется.
  • Загрузите все использованные диски ( / dev / vbX ) в файлы. Диск используется, если он содержит хотя бы один используемый раздел.

Другими словами, вы можете либо запустить:

ssh user@remote "dd if=/dev/vda | gzip -1 -" | dd of=disk1.gz
ssh user@remote "dd if=/dev/vdb | gzip -1 -" | dd of=disk2.gz
# ... and so on, once per used disk.

, либо (используя приведенный выше пример с двумя дисками):

ssh user@remote "dd if=/dev/vda1 | gzip -1 -" | dd of=root.gz
ssh user@remote "dd if=/dev/vda2 | gzip -1 -" | dd of=var.gz
ssh user@remote "dd if=/dev/vdb1 | gzip -1 -" | dd of=home.gz
# ... and so on, once per used partition.

Преимущество отдельного резервного копирования разделов в том, что при необходимости их будет легче исследовать локально:

$ gzip -d home.gz                        # decompress the backup
$ sudo mkdir /mnt/home_bak               # create a mount point
$ sudo mount -o loop home /mnt/home_bak  # mount the backup
$ cd /mnt/home_bak                       # explore the home backup

Наконец, помните, что lsblk перечисляет только смонтированные разделы. Если вы установили дополнительные разделы (те, которые не монтируются автоматически при загрузке), не забудьте включить их. Скорее всего, вы вспомнили, если бы делали это при установке VPS.

1
27.01.2020, 21:54

Теги

Похожие вопросы