OS X의 스파 스 번들에서 모든 / 대부분의 여유 공간을 회수하는 방법


30

스파 스 번들 이미지를 "조각 모음"하고 여유 공간을 대부분 회수 할 가능성이 있습니까?

여기에 배경이 있습니다 : 나는 희소 번들을 사용하고 있습니다.

hdiutil compact image.sparsebundle

그러나 매뉴얼 페이지에서 설명했듯이 완전히 사용되지 않은 밴드 파일 만 회수하므로 제 경우에는 다음과 같이 말합니다.

Reclaimed 0 bytes out of 90.4 GB possible.

물론이 이미지의 내용을 새로운 스파 스 번들로 복사하여 대신 사용할 수 있지만 번거롭고이 작업을위한 충분한 여유 공간이 필요합니다.

한편, 압축 명령의 출력 이 하드의 이미지 번들이 현재 차지하는 크기보다 더 큰 크기를 때때로 나열하기 때문에 다소 오해의 소지가 있습니다 (현재 OS X 10.5.7을 실행하고 있음). 드라이브. 자세히 보지는 않았지만 출력은 최대 크기 또는 "최대 크기"- "사용 된 크기"인 것 같습니다.


1
나는 이것에 문제가 있었지만 sparsebundle fs가 EXFAT이기 때문에 그것이 깨달았다. 맨 페이지를 읽은 후 컴팩트 동사는 "HFS 파일 시스템을 포함하는 디스크 이미지"에서만 작동한다는 것을 깨달았습니다.
jsejcksn

@jsejcksn 명심하십시오. 맨 페이지에는 이제 APFS 및 HFS +가 지원된다고 나와 있습니다.
GDP2

AskDifferent 관련 질문 : apple.stackexchange.com/questions/54607/…
GDP 2

답변:


20

흥미 롭습니다!

내가 들었던 내용에서 스파 스 번들은 데이터를 8Mb 대역으로 나눕니다. 운이 좋으면 밴드 크기를 변경하면 도움이 될 수 있습니다. 내 말은, 당신은 결코 100 % 재생 공간을 얻지 못할 것이지만, 아마도 지금 얻는 것보다 나을 것입니다. (이미지 등의 데이터에 따라 다름)

두 개의 500Mb 스파 스 번들, 하나는 8Mb (기본) 밴드 크기, 하나는 1Mb (내가 말할 수있는 것 중에서 가장 작은 크기)로 더티 간단한 테스트를 수행했습니다. 400mb 이상의 mp3 파일을 복사 한 다음 다른 모든 파일을 제거한 다음 hdiutil compact엉덩이에서 실행 했습니다.

Size after compact
8Mb bands: 271Mb
1Mb bands: 215Mb

스파 스 번들을 변환하는 명령은

hdiutil convert src.sparsebundle -format UDSB -tgtimagekey sparse-band-size=2048 -o dst.sparsebundle

밴드 크기는 512byte 단위입니다. 위의 예는 대역 크기를 512 * 2048 = 1Mb로 설정합니다. TimeMachine 이미지 또는 사용자 홈 폴더 이미지 등을 다루는 경우주의하십시오. Apple 경로에서 벗어난 경우 :) 안전 백업을 유지하십시오!

조각 모음에 관해서는 : 나는 hdiutil을 사용하여 sparsefile을 동일한 형식의 새로운 sparse 파일로 변환하는 것만큼이나 빠릅니다. 나는 그것이 똑똑하다고 생각합니다. 그러나 나는 모른다.

스파 스 번들 조각 모음은 스파 스 번들 인식 조각 모음이 아닌 한 스파 스 번들 밴드가 아닌 디스크 데이터 조각 모음을 수행한다는 점에 유의하십시오 hdiutil convert.


명령 줄 인수가 잘못된 순서로 있습니다 -o직접 이전해야한다 dst.sparsebundle,하지 src.sparsebundle( -o의미 '출력').
Nick Forge

또한이 방법은 암호화를 유지하지 않습니다. 아마도 그것을 가능하게하는 플래그가있을 것입니다. 그러나이 시점에서 디스크 유틸리티에서 새로운 스파 스 번들을 만들고 파일을 복사하는 것이 더 쉽다는 것을 알았습니다.
Justin Searls

2
암호화를 위해서는 -encryption스위치를 명령에 추가하십시오 .
fideli

고마워 스파 스 밴드 크기를 줄이는 것은 Dropbox 호스팅 스파 스 번들에 매우 유용합니다
Max Ried

이미지가 조각 모음으로 변환되면 결과 희소 번들이 원본보다 16 % 더 큽니다 .
Michael

7

가능한 90.4GB가 잘못되었다고 생각합니다. 내가 달릴 때 :

hdiutil compact *.sparsebundle

... 16GB의 공간을 확보했습니다. 놀랍게도 그것은 대략 "800GB 가능"이라고 말했는데 이는 내 HD 용량보다 훨씬 큽니다. 그래서 두 번째 수치는 (이론적 인) 이론적 수치에 불과하다고 가정합니다.


2

@Oscar는 올바른 방향으로 우리를 가리 켰습니다. 그러나 공간을 확보하기 위해 1MB로 작고 컴팩트하게 변환 할 필요는 없습니다.

대신, sparsebundle을 다른 새 sparsebundle로 복사하십시오. 차례로 이미지를 조각 모음합니다. 동시에 파일 시스템, 크기 및 밴드를 변경할 수 있습니다.

다음은 최근에 수행 한 예이며 장치간에 동기화되는 20GB "코드"이미지를 변환합니다.

$ hdiutil create -size 20g -type SPARSEBUNDLE \
-imagekey sparse-band-size=2048 -fs HFSX \
-volname code -attach ~/sync/images/code.sparsebundle

로 모든 옵션을 참조하십시오 hdiutil create -help.

이 명령은 다음을 출력합니다.

/dev/disk3              GUID_partition_scheme
/dev/disk3s1            EFI
/dev/disk3s2            Apple_HFS                       /Volumes/code
created: /Users/eric/sync/images/code.sparsebundle

-attach아래에 옵션이 마운트 된 것을 볼 수 있습니다 /Volumes/code.

참고 : HSFX이미지를 Linux와 동기화하고 마운트하기 때문에 대소 문자를 구분하는 HFS +에 사용 합니다. HFS+macOS는 일반적으로 대소 문자를 구분하지 않기 때문에 대신 에 사용하고 싶을 것 입니다.

이제해야 할 일은 모든 새 sparsebundle에 모든 것을 복사하는 것입니다.

$ cp -r /Volumes/IMG_CODE/ /Volumes/code/

그리고 이제 비교해보십시오.

# old sparsebundle
$ du -h ~/sync/images/IMG_CODE.sparsebundle/
15.0G   /Users/eric/sync/images/IMG_CODE.sparsebundle/bands
15.0G   /Users/eric/sync/images/IMG_CODE.sparsebundle/

# new sparsebundle
$ du -h ~/sync/images/code.sparsebundle/
3.0G    /Users/eric/sync/images/code.sparsebundle/bands
3.0G    /Users/eric/sync/images/code.sparsebundle/

예 내 15GB sparsebundle은 이제 3GB, 조각 모음 및 밴드 변경되었습니다!


이 방법이 아니라 "정보"에 기록하고 있기 때문에 내가 대답을 downvote하지 않습니다 ... 원래의 질문에 인정되었지만 .. 어서 ..
adfaklsdjf

0

나는 그것을 할 수있는 무료 방법을 모르지만 Prosoft Drive Genius가 당신이 필요로하는 것을 할 것이라고 믿습니다.

http://www.prosofteng.com/products/drive_genius.php

스파 스 번들을 마운트하고 Drive Genius를 사용하여 조각 모음을 수행 한 다음

hdiutil compact

명령이 작동해야합니다.


0

90.4GB 중 0 바이트를 교정했습니다.

스파 스 번들을 보유한 드라이브에 약 90GB의 여유 공간이 있습니까? 디스크가 가득 찰 때까지 스파 스 번들이 자주 증가 할 수 있으므로이 공간은 사용 가능한 공간으로보고됩니다. 디스크 유틸리티에 동일한 그림이 표시됩니다. 실제로 오해의 소지가 있습니다.

다음은 통찰력을 제공 할 수 있습니다.

hdiutil imageinfo image.sparsebundle

0

1024GiB에서 950GiB를 차지했다고 주장하는 문제가있는 스파 스 번들이있었습니다 (내 SSD의 크기는 320GiB이므로 그럴 수 없었습니다). hdi compact도와주지 않았다.

번들과 파티션 둘 다에서 디스크 유틸리티에서 "응급 처치"를 실행했으며 이로 인해 사용 가능한 공간 측정기가 실제 20GiB를 표시하기 시작했으며 hdi compact문제없이 실행되었습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.