sdb1
3.3GB 크기의 파티션이 있습니다 . 3.3GB에서 1.9GB만 사용하고 그 중 1.2GB가 빈 공간이다. 이 파티션의 이미지를 만들고 싶습니다. 하지만 이미지가 1.9GB의 공간만 사용하길 원합니다.
이제 dd를 사용하여 명령을 실행하면 다음과 같습니다.
dd if=/dev/sdb1 of=/home/data/Os.img bs=1M status=progress
dd가 3.3GB 이미지를 만들고 있지만 할당되지 않은 공간이 OS 이미지의 일부가 되는 것을 원하지 않습니다.
그래서 다른 해결책을 시도했습니다. 해결책을 찾았습니다.
dd if=/dev/sdb1 of=/home/data/OS.img bs=1M count=1946 status=progress
이 솔루션은 1.9GB 이미지를 생성하며, 블록 크기를 1M로 정의했으므로 개수는 1946이므로 총 1.9GB가 제공됩니다.
질문 이 dd 명령이 사용된 공간의 이미지만 생성하는지 아니면 사용된 공간과 사용되지 않은 공간이 모두 포함된 1.9GB 이미지만 생성하는지 알 수 없습니다.
사용된 공간에 대해서만 이미지를 생성하는 다른 방법이 있나요?
답변1
이 답변되었습니다여기.
먼저 파티션의 이미지를 만듭니다.
그런 다음 losstup을 사용하여 이미지를 마운트합니다. 디스크가 아니라 파티션이므로 partscan 플래그가 필요하지 않습니다.
# lsblk
# losetup --find foo.img
새로 생성된 루프 장치 찾기
# lsblk
loop1 7:1 0 4096M 0 loop
큰 빈 파일을 작성하여 남은 공간을 0으로 만듭니다.
# mount /dev/loop1 /mnt
# dd if=/dev/zero of=/mnt/filler conv=fsync bs=1M
# rm /mnt/filler
# umount /dev/loop1
이제 이미지를 압축해 보세요.
# ls -s
4096M foo.img
# gzip foo.img
# ls -s
11M foo.img.gz
이제 파티션 이미징이 완료되었습니다.
파티션에 ext4 파일 시스템이 있는 경우 다음 명령을 사용하여 크기를 조정할 수 있습니다.2fs 크기 조정최소 크기로. 그러면 모든 데이터가 첫 번째 블록으로 이동됩니다.
e2fsck -f /dev/loop1
resize2fs -M /dev/loop1
답변2
당신은 그것을 사용할 수 있습니다클론속그리고 가장 큰 파일이 압축된 파일 집합이 포함된 디렉터리인 Clonezilla 이미지를 생성합니다. Clonezilla는 파일 시스템에서 사용 중인 것으로 표시된 파티션의 블록만 복사할 만큼 똑똑하므로 dd
.
그러나 미러의 내용을 파티션에 복원하는 경우 대상은 [적어도] 동일한 크기의 파티션이어야 하므로 복원 작업 후 대상의 크기를 더 작게 하려면 다른 방법을 사용해야 합니다.
이미징 및 복구 작업 후 더 작은 파티션 크기를 원할 경우 파일 수준에서 수행해야 합니다. 당신은 할 수
전체 파일 시스템의 [압축된] tar 파일인 tarball을 만듭니다.
원하는 크기의 파일 시스템으로 새 파티션을 만듭니다.
tarball에서 모든 파일이 포함된 디렉토리 트리를 추출합니다.
다른 운영 체제에서 부팅하고, 복사할 파티션을 비활성화하고, tar
높은 권한으로 실행합니다.
복사할 파티션의 최상위 디렉터리로 변경
sudo tar -cvzf /path-to/file.tar.gz .
복원하는 경우(다른 OS에서도 부팅)
tar 파일에서 추출하려는 파티션의 맨 위로 디렉토리를 변경하십시오.
sudo tar -xvf /path-to/file.tar.gz
이 결과와 복제 작업 결과 사이의 중요한 차이점에 유의하세요.
- 파티션의 UUID는 다릅니다. 복사된 파티션에 시스템 파티션이 포함된 경우 UUID를 원래 파티션의 UUID로 변경하거나 및에서 UUID에 대한 참조를 변경하여 새 UUID와 일치해야 합니다
/etc/fstab
./boot/grub/grub.cfg