Измените большой файл, затем сможете выполнять откаты, делая это (почти) на месте

Я восстанавливаю данные с поврежденного накопителя на 500 ГБ. Я копирую данные (раздел ext4) в файл изображения 500 ГБ. Процесс занимает около 3 месяцев копирования (да, месяцев). Поэтому я использую dd для терпеливого заполнения файла изображения. Сначала я отложил кусок временного файла, а затем поместил кусок в файл резервной копии и так …

Проблема в том, что я хочу получить доступ к частично заполненному изображению и восстановить некоторые данные до завершения процесса резервного копирования. Я установил его только для чтения и использовал testdisk и testdisk и все в порядке. Но я также хочу попробовать fsck (попытаться) восстановить раздел. После просмотра данных я хотел бы отменить изменения fsck и возобновить копирование.

Я знаю такие инструменты, как rsync , rdiff и git производные ( bup , git-annex bup …), которые могут помочь. Но мне интересно, есть ли способ сделать это на месте . Не брать еще 500 ГБ индексированных исходных данных.

Мне не нужны возможности управления версиями. Мне не нужна резервная копия моего файла. Рабочий процесс будет примерно таким:

  1. У меня есть original_500GB_file.img -> 500 ГБ данных
  2. Я изменяю 2 ГБ файла. Скажем, теперь у меня есть modified_500GB_file.img и другие вспомогательные файлы -> менее 600 ГБ данных (500 оригинальных + 2 модифицированных + некоторых метаданных)
  3. Когда я буду счастлив вносить изменения, откатываться и снова перейти к пункту 1.

Как это можно достичь? Возможно ли это с возможностями моментального снимка BTRFS? (К сожалению, у меня есть файл в разделе NTFS)

Благодарю.

2 Solutions collect form web for “Измените большой файл, затем сможете выполнять откаты, делая это (почти) на месте”

Самый простой способ – фактически использовать BTRFS или ZFS и их возможности моментального снимка, да. Я не слишком много работал с BTRFS (теперь только ZFS), но откат должен быть без проблем.

(Я собираюсь писать ZFS-based, но он должен работать аналогично для BTRFS)

Прежде чем приступить к процессу восстановления, вы берете «моментальный снимок» вашей текущей файловой системы, в которой содержится 500-гигабайтное изображение.

Затем вы можете скопировать все данные, полученные во время восстановления, в другое место (не внутри одной и той же файловой системы, иначе они будут уничтожены во время отката!). Только изменения на 500GB-изображении занимают место. Поэтому, если вы измените только 50 ГБ, вам потребуется в общей сложности ~ 550 ГБ внутри файловой системы.

Если вы закончили это частичное восстановление, вы можете выполнить «откат» и сбросить файловую систему до состояния, которое было, когда вы сделали «моментальный снимок».

Обратите внимание, что механизм моментального снимка / отката всегда работает для полной файловой системы, а не только для одиночных файлов.

Редактировать:

Я думаю, что некоторые версии NTFS также имеют что-то вроде возможности моментального снимка. Windows 7 должна позволить вам играть с этим, но, как я слышал, он был удален в Windows 8 …. если вы щелкните правой кнопкой мыши файл (изображение 500 ГБ), тогда должен быть какой-то вариант, говорящий «предыдущие версии этого файла ».

Еще один довольно сложный вариант: настроить виртуальную машину, поместить там файл на 500 ГБ. Программное обеспечение виртуальной машины (например, VMware, Virtualbox, VirtualPC) также позволяет делать снимки (всего изображения операционной системы, включая 500 ГБ), и откатывать их обратно. Но для этого потребуется установка другой ОС внутри виртуальной машины и все такое …

Я нашел хорошее и легкое решение для своей проблемы. Последний абзац Slizzered о виртуальных машинах дал мне подсказку. Вы можете использовать программное обеспечение qemu без фактической загрузки виртуальной машины. Я нашел соответствующую информацию здесь и здесь .

Сначала вам нужно создать копию файла записи (COW) вашего изображения. Это будет использовать ваш original_500GB_file.img качестве базы. Большой файл не будет редактироваться, потому что он используется как только для чтения. COW один минимальный по размеру и будет расти только тогда, когда будут сделаны изменения. Только то, что мне нужно:

$ Qemu-img create -f qcow2 -b original_500GB_file.img disposable.qcow2

Форматирование 'disposable.qcow2', fmt = qcow2 size = 498000000000 backing_file = 'original_500GB_file.img' encryption = off cluster_size = 65536 lazy_refcounts = off

$ Ls -l disposable.qcow2

-rw-r-r– 1 пользователи dertalai 204288 abr 15 20:01 disposable.qcow2

Теперь вам просто нужно виртуализировать парную версию original_read-only + cow_writable в одно полезное блочное устройство:

# Modprobe nbd

# Qemu-nbd -c / dev / nbd0 disposable.qcow2

/dev/nbd0 готов к использованию. Вы можете fsck его или даже монтировать и делать все, что вам нужно. Когда вы закончите и хотите отменить изменения, просто освободите блок-устройство от любого процесса, который его использует, и удалите файл COW, если хотите:

# Qemu-nbd -d / dev / nbd0

# Rmmod nbd

$ Rm disposable.qcow2

  • Повторение псевдонимов в .bashrc
  • ПК в качестве динамиков Bluetooth
  • Различия между Спиннинг 3,5 "HDD против спиннинга 2,5" HDD?
  • Получать цвета меньше или больше
  • Установка полного образа диска, спасенного ddrescue
  • Как я могу узнать абсолютный путь запущенного процесса?
  • Chainload не-EFI Linux от EFI Linux
  • Как загрузить файлы Dropbox с помощью команды wget?
  • Предотвращение «сохранения сна» из окон и перезапись разделяемого раздела
  • Клавиатура больше не работает при входе в BIOS
  • Бесплатный инструмент для восстановления данных для Linux?
  • Давайте будем гением компьютера.