큰 파일을 수정 한 다음 변경 사항을 롤백 할 수 있습니다 (거의) inplace 소요됩니다. 그래서

손상된 500GB 디스크 드라이브에서 데이터를 복구하고 있습니다. 데이터 (ext4 파티션)를 500GB 이미지 파일에 복사하고 있습니다. 이 과정은 총 3 개월의 복사 (예, 몇 달)가 소요됩니다. 그래서 나는 dd 참을성있게 이미지 파일을 채우기 위해. 먼저 임시 파일에 덩어리를 넣은 다음 백업 파일에 덩어리를 넣으십시오. 그래서 …

문제는 백업 프로세스가 끝나기 전에 부분적으로 채워진 이미지에 액세스하고 일부 데이터를 복구하려고한다는 것입니다. 나는 그것을 읽기 전용으로 마운트하고 사용했다. photorectestdisk 그리고 괜찮아. 그러나 나는 또한 시도하고 싶다. fsck 파티션을 복구하려고합니다. 데이터를 살펴본 후 fsck 변경 사항을 롤백하고 복사를 다시 시작합니다.

나는 같은 도구를 안다. rsync, rdiffgit 파생 상품 bup, git-annex…) 도움이 될 수 있습니다. 하지만 이걸 만들 수있는 방법이 있는지 궁금해. 제자리에서 . 500Gb의 색인 된 원본 데이터를 가져 가지 않습니다.

나는 버전 기능을 원하지 않는다. 나는 내 파일의 백업을 원하지 않는다. 워크 플로우는 다음과 같습니다.

  1. 나는 가지고있다 original_500GB_file.img & gt; 500GB의 데이터
  2. 파일의 2GB를 수정합니다. 지금 말해봐. modified_500GB_file.img 및 기타 보조 파일 – & gt; 600GB 미만의 데이터 (원본 500 개 + 수정 된 2 개 + 일부 메타 데이터)
  3. 내가 행복 할 때, 변경하고, 롤백하고, 다시 1 점을 얻는다.

어떻게 이것을 달성 할 수 있습니까? BTRFS 스냅 샷 기능으로 가능합니까 ?? (불행히도 NTFS 파티션에 파일이 있습니다.)

감사.



답변

가장 쉬운 방법은 BTRFS 또는 ZFS와 스냅 샷 기능을 실제로 사용하는 것입니다. BTRFS (지금은 ZFS 만)에서는 너무 많이 작동하지 않았지만 롤백은 문제가되지 않습니다.

(ZFS 기반으로 작성 하겠지만 BTRFS에서는 비슷하게 작동합니다)

복구 프로세스를 시작하기 전에 500GB 이미지를 보유하고있는 현재 파일 시스템의 “스냅 샷”을 가져옵니다.

그런 다음 복구 중에 얻은 모든 데이터를 다른 위치 (동일한 파일 시스템이 아닌 다른 위치)에 복사 할 수 있습니다. 그렇지 않으면 롤백 중에 데이터가 손상됩니다! 500GB 이미지의 변경 사항 만 공간을 차지합니다. 따라서 50GB 만 변경하면 파일 시스템 내부에 총 550GB가 필요합니다.

이 부분적 복구가 끝나면 “롤백”을 수행하고 파일 시스템을 “스냅 샷”을 수행 한 시점의 상태로 재설정 할 수 있습니다.

스냅 샷 / 롤백 메커니즘은 단일 파일뿐만 아니라 전체 파일 시스템에서 항상 작동합니다.

편집하다:

NTFS의 일부 버전에도 스냅 샷 기능이 있다고 생각합니다. Windows 7에서 재생할 수 있어야하지만 Windows 8에서 제거되었다고 들었습니다. 파일 (500GB 이미지)을 마우스 오른쪽 단추로 클릭하면 “이전 버전의이 파일 “.

다소 복잡한 옵션 : 가상 머신을 설정하고 500GB 파일을 저장하십시오. VMware, Virtualbox, VirtualPC와 같은 가상 시스템 소프트웨어를 사용하면 500GB를 포함한 전체 운영 체제 이미지의 스냅 샷을 만들어 롤백 할 수 있습니다. 그러나 이것은 당신이 가상 머신 안에 또 다른 OS를 설치해야한다는 것을 의미합니다.


답변

내 문제에 대한 좋은 솔루션을 발견했다. 가상 머신에 관한 Slizzered의 마지막 단락은 나에게 힌트를주었습니다. 당신이 사용할 수있는 qemu 가상 컴퓨터를 실제로로드 할 필요가 없습니다. 관련 정보를 찾았습니다. 이리 이리 .

먼저 이미지의 COW 파일을 만들어야합니다. 이것은 당신의 original_500GB_file.img 그 기지로. 큰 파일은 읽기 전용으로 사용되므로 편집되지 않습니다. COW는 크기가 최소화되어 있으며 변경이있을 때만 커집니다. 내가 필요한 것 :

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

‘disposable.qcow2’포맷, fmt = qcow2 크기 = 498000000000 backing_file = ‘original_500GB_file.img’암호화 = 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


답변