dd
파일 시스템을 만드는 데 사용하는 이미지입니다. 저는 ARM 32비트 시스템에서 Debian 8(Jessie)을 사용하고 있습니다.
내가 실행한 명령은 다음과 같습니다.
dd if=/dev/mmcblk0 bs=1M | gzip -c > /mnt/usb/<image_name.gz>
어떤 이유에서인지 내 파일 시스템은 1.3GB를 차지하지만 내가 얻는 파일은 1.9GB입니다. 온라인으로 답변을 검색하면 채워지지 않은 모든 블록을 얻으려면 dd에 동의합니다. 이 결론에 도달한 방법 몇 가지 실험을 수행했습니다. 다음 명령을 실행했습니다.
$ cat /dev/zero > /root/zero.file
$ sync
$ rm /root/zero.file
이 명령을 수행한 후 시스템을 다시 검사한 결과( df -h
) 현재 파일 시스템이 실제로 1.9GB를 차지하는 것으로 나타났습니다. 실제로 dd create가 나를 위해 뭔가를 만들었습니다.
"dd"를 사용하여 소스 코드의 원래 크기에 최대한 가까운 이미지 파일 크기를 얻으려면 어떻게 해야 합니까?
답변1
블록 장치가 무엇인지 확인하십시오. 더 간단한 파일 시스템을 사용하면 실제 크기가 표시될 수 있지만 파일 시스템은 파일에 사용할 수 있는 가상 "유효" 공간도 제공할 수 있지만 원시 장치 자체에는 로그, 체크섬 및 그 이상을 저장합니다. 또 다른. 장치는 파일 시스템이 모든 작업을 수행할 수 있는 원시 블록입니다. 중복 제거, 암호화, 압축을 수행할 수 있으며, 이 경우 보고된 파일 시스템 크기는 의미가 없습니다.
또한 gzip
이미 압축된 항목을 압축하는 경우(또는 실제로 임의의 데이터로 채워진 경우) 파일을 더 크게 만들 가능성이 높습니다. 그러나 오버헤드는 일반적으로 보이는 것보다 적습니다.