사례상상하다:
$ sudo fdisk -l
Disk /dev/sda: 223,6 GiB, 240057409536 bytes, 468862128 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
Disklabel type: dos
Disk identifier: 0x13a30a5a
Device Boot Start Final Sectors Size Id Type
/dev/sda1 * 2048 1333247 1331200 650M 27 WinRE NTFS hidden
/dev/sda2 1333248 264058879 262725632 125,3G 7 HPFS/NTFS/exFAT
/dev/sda3 264060926 468860927 204800002 97,7G 5 Extended
/dev/sda5 264060928 434049023 169988096 81,1G 7 HPFS/NTFS/exFAT
/dev/sda6 434051072 464771775 30720704 14,7G 83 Linux
/dev/sda7 464773120 468860927 4087808 2G 82 Linux swap / Solaris
윈도우 10에 설치되었으며 동일한 Windows 시스템의 숨겨진 파티션이라고 /dev/sda2
가정합니다 ./dev/sda1
내가 어떻게 할 수있는내 Windows 10 백업설치하다리눅스에서나중에 복원할까요?
요청 시 추가 데이터 제공:
- "설치"란 Windows를 복제 당시로 되돌리는 데 필요한 "전체 파티션"(또는 파티션)을 의미합니다.
- 동일한 시스템(컴퓨터, 하드웨어) 또는 하드 드라이브로 복원할 수 있으면 충분합니다. 즉, Windows 10을 설치하고 백업을 만들었으며 몇 달 전에 Windows 10 전체 설치(드라이버, 프린터, 프로그램 등)를 다시 수행할 필요가 없도록 만든 백업을 복원하고 싶었습니다. .).
테스트됨지금까지(모든 테스트는 동일한 파티션 레이아웃을 사용하는 동일한 머신에서 수행되었습니다):
답변1
pv
방법
당신이 사용할 수있는pv
(맨 페이지)다음과 같은 유틸리티:
sudo sh -c 'pv < /dev/sda > /destination'
물론 먼저 루트가 될 수 있습니다.
sudo -i
그럼 해라지원:
pv < /dev/sda > /BackupDestination
그런 다음 필요할 때 실행합니다.다시 덮다:
pv < /BackupDestination > /dev/sda
노트
dd
이것은 기본적으로 다른 답변과 동일한 작업이지만 더 빠르고 개선되었습니다.이 방법은 속도가 느릴 수 있지만
rsync
파일을 복사할 뿐이므로 의도한 바는 아닙니다.모든 것을 1:1 방식으로 복제하므로 완벽한 재현이라고 할 수 있습니다.
나중에 부팅하려면 부팅 섹터도 필요합니다. 가장 쉬운 방법은 전체 드라이브를 백업하는 것입니다.
진행 상황 표시
dd
(맨 페이지), 명령에 다음을 추가할 수 있습니다.status=progress
힌트
나중에 이미지를 효율적으로 압축하려면 여유 공간을 0으로 만드는 것을 잊지 마십시오.
답변2
Linux에서 Windows 10을 파일로 백업하고 새 드라이브에 복원하는 설명된 시나리오를 성공적으로 완료했습니다.
사용삭제사용하지 않는 공간을 0으로 채우기
sdelete -z c:
이는 그 자체로는 필요하지 않지만 생성된 파일의 압축을 향상시킬 수 있습니다. 삭제된 파일은 실제로 디스크에서 0으로 바뀌지 않으며, 해당 파일이 차지한 공간은 다시 사용 가능한 것으로 표시되지만 데이터는 여전히 남아 있습니다. dd는 또한 이 데이터를 복구하므로 여유 공간으로 표시된 모든 공간을 0으로 채우면 압축이 더 효율적이 됩니다.
MBR 및 파티션 테이블을 부팅하고 예비 드라이브에 백업하려면 라이브 Linux USB를 구하세요.
dd if=/dev/sda of=/somewhere/file.mbr bs=512 count=63
부팅 파티션을 파일에 복사
dd if=/dev/sda1 bs=1M status=progress | lz4 > /somewhere/sda1.lz4
시스템 파티션을 파일로 복사
dd if=/dev/sda2 bs=1M status=progress | lz4 > /somewhere/sda2.lz4
새 디스크를 컴퓨터에 넣고 라이브 Linux를 다시 시작한 다음 디스크의 시작 부분을 복원하십시오.
dd of=/dev/sda if=/somewhere/file.mbr
이렇게 하면 동일한 기본 파티션 레이아웃이 제공됩니다(확장 파티션 내부의 파티션은 다른 곳에 저장되며 이렇게 해도 복원되지 않습니다).
이제 두 Windows 파티션을 모두 복원하십시오.
dd of=/dev/sda1 bs=1M status=progress < lz4cat /somewhere/sda1.lz4
dd of=/dev/sda2 bs=1M status=progress < lz4cat /somewhere/sda2.lz4
이 단계에서는 드라이브가 부팅되지 않습니다(grub이 불평함). 따라서 Windows 복구 디스크 또는 설치 미디어를 실행하고 "복구"를 선택하십시오. 문제 해결 시 cmd 프롬프트를 시작하고 실행합니다.
bootrec /fixmbr
이 단계에서는 더 큰 새 드라이브에서 원래 Windows 시스템을 부팅하도록 했습니다. gzip과 lz4를 사용하여 50% 압축(70% 전체 드라이브)을 얻었지만 gzip은 CPU 속도(제 경우 27MB/s)로 제한되는 반면 lz4는 그렇지 않습니다(480MB/s CPU 제한, 180MB/s My Backup) 드라이버 한계).
첫 번째 시도는 를 사용하는 것이 ntfsclone
었지만 부팅 가능한 Windows를 생성하지 못했습니다(\Windows\System32에 일부 파일이 누락되었다고 불평함). 왜 작동하지 않는지 모르겠습니다. 마지막으로 dd
+ lz4
솔루션은 자신보다 작은 이미지를 생성합니다 ntfsclone
. 마일리지는 디스크 용량 및 오류 계수에 따라 달라질 수 있습니다 ntfsclone
. dd
올바른 계산이 더 쉬워 보입니다. :-)
답변3
예, 가장 간단한 해결책은 다음과 같습니다.
dd if=/dev/sda of="/media/usb/$(date).img"
속도가 느리고 공간을 많이 차지하므로
- 원하는 파티션 + 부트 섹터를 복사하세요.
- 여유 공간을 제로화하고 압축합니다.
- 블록 기반 백업이 아닌 파일
- 역방향 diff를 위한 rdiff-backup(처음 이후 크기가 크게 감소함)
- rsync(느린 네트워크에서 상당한 속도 향상)
- Windows를 VM에 설치하는 경우 rsync/diff 백업보다 빠르거나 작은 ox FS(btrfs/zfs)는 단지 옵션일 뿐이며 해당 시나리오에 적합한지 잘 모르겠습니다.
부트 섹터, UUID를 놓쳤을 수 있으므로 grub 및 https://en.m.wikipedia.org/wiki/Windows_Vista_startup_process
답변4
아래와 같이 새로 설치된 Windows 시스템을 백업했습니다.Zbinek Winkler의 답변이상. lzma
SSD와 SSD를 모두 시도했지만 gzip --fast
병목 현상이 발생했습니다(두 SSD 모두 압축 없이 2GB/s의 전송 속도를 관리했습니다). 실제 명령줄:
$ sudo dd if=/dev/nvme0n1 bs=1M status=progress | pzstd -o /tmp/windows-disk.zst
이 과정은 약 8분 정도 소요되며 1TB SSD가 8GB 파일로 압축됩니다. 이것은 새로 설치하는 것이므로 Windows일 뿐이며 사용자 데이터나 응용 프로그램은 없습니다.
다시 덮다:
$ pzstd -d /tmp/windows-disk.zst -c | sudo dd of=/dev/nvme0n1 bs=1M status=progress