Мне нравится клонировать весь раздел или весь жесткий диск на больший внешний диск, но мне нравится создавать разреженный файл. Я часто использую dd
для клонирования, но он не поддерживает разреженные файлы. В качестве обходного пути я использовал что-то вроде:
cp --sparse=always <(dd if=/dev/sda1 bs=8M) /mount/external/backup/sda1.raw
Однако, на мой вкус, это слишком сложно и не позволяет мне возобновить процесс, если его прервать. Забавно, что для этого есть инструмент NTFS ( ntfsclone
), но для родных файловых систем Linux (EXT2-4) такого инструмента не существует.
Есть ли лучший инструмент для этого, например, dd
вариант с разреженной поддержкой? Я не ищу какое-то проприетарное программное обеспечение для резервного копирования дисков, а просто хочу сделать разреженную копию клона, которую я могу при необходимости смонтировать как устройство зацикливания.
источник
cp
, мне никогда не приходило в голову, что вы можете копировать образ диска. Я всегда просто сжимал их, если мне нужно было сэкономить место. Теперь, почему это в вопросе не ответ?Ответы:
Вы хотите
dd_rescue
.источник
dd_rescue
онлайн, я обнаружил, что есть также другой инструмент, названныйddrescue
(без подчеркивания), который был разработан независимо от,dd_rescue
но, кажется, делает в основном то же самое. Я просто упомянул это здесь как общее замечание.dd_rescue
иddrescue
это не одно и то же. Теоретически они выполняют ту же работу, но в целом мне повезло больше со старым / оригинальнымdd_rescue
.-s
и позицию к исходной команде. (Так бы это выгляделоdd_rescue -a -b 8M -s 42000k /dev/sda1 /mount/external/backup/sda1.raw
.)Просто для полноты призыва к спасению .
--sparse
Или-S
флаг позволяет назначения быть написаны редко:Или с длинным вариантом:
Или, если вы предпочитаете MiBs :
Чтобы аварийное восстановление было прервано и возобновлено, вы также можете использовать файл журнала:
Обратите внимание, что GNU
ddrescue
иdd_rescue
есть разные программы. Но GNUddrescue
кажется более распространенным. Например, он уже упакован с GRML .источник
dd if=sda1.raw of=/dev/sdb1
. Однако, чтобы использовать ddrescue для восстановления, вы просто меняете источник / место назначения, которое вы использовали для восстановления, на новый источник / место назначения, предпочтительно с новым файлом журнала. Если возможно (часто нет), вы можете, конечно, использовать ddrescue для копирования данных непосредственно с диска с плохим исходным кодом на диск для замены.В 2007 году был предложен патч для обеспечения поддержки разреженных файлов в GNU dd, но, похоже, он не превратил его в coreutils (по крайней мере, не в 8.4). Я сомневаюсь, что dd сильно изменился с тех пор, патч может быть применен к текущей версии без особой работы.
Я также очень впечатлен творческим использованием
cp
в вашем вопросе, и это заставило меня принять решение использовать его для возобновления (здесь возобновление с ~ 80M в источник):Изменить: поцарапать это. Второй
dd
, конечно, будет искать неправильную позицию в выходном файле, так как он не совпадает с длиной ввода.источник
cp
- спасибо!Просто добавляю мои 2 цента. Другой способ создать разреженный файл с необработанного диска - использовать qemu-img, используя что-то вроде:
Вы также можете использовать это на одном разделе. Кроме того, у вас есть возможность преобразовать необработанный диск / раздел в любой другой формат, поддерживаемый qemu-img (QCOW2, VHD [x], vmdk и т. Д.)
источник
Другой вариант rsync . Например:
Объяснение:
-S
/--sparse
пропустить разреженные блоки при записи-P
/--partial --progress
показать прогресс и сохранить частично переданные файлы--copy-devices
скопировать содержимое устройстваВы можете добавить,
--append
чтобы возобновить прерванную копию (или--append-verify
подтвердить контрольную сумму совпадений как новых, так и старых данных).Редактировать : я только что понял, что copy-devices.diff находится на рассмотрении и может отсутствовать во многих системах (хотя он включен в Fedora , Ubuntu , Debian и другие)
источник
Примечание: это не работает по причинам, описанным в комментариях, я оставляю это здесь для справки.
Следите за статистикой dd с помощью kill -USR1:
Возобновить с помощью skip / seek:
Без $ i_bytes было бы сложнее возобновить. Вероятно, проще всего записать статистику dd в файл в случае сбоя машины или чего-либо еще.
источник
cp
просто перезапишет существующий файл, не так ли? Я знаю своиskip
и другие вариантыdd
. Вопрос этоcp
часть.Существуют xfsdump и xfsrestore для XFS, которые долгое время были родной файловой системой Linux.
источник
Почему бы просто:
источник