it-swarm.asia

OS X'te seyrek bir alandan tüm / en çok boş alan nasıl geri kazanılır

Seyrek bir demet resmi "birleştirme" ve boş alanın (çoğunu) geri kazanma olasılığı var mı?

İşte arka plan: Ben seyrek demetleri kullanıyorum ve her zaman ve sonra ben onlardan alan geri almak istiyorum, böylece ben çalıştırmak:

hdiutil compact image.sparsebundle

Ancak, man sayfasında açıklandığı gibi, sadece tamamen kullanılmayan bant dosyalarını geri alır, bu yüzden benim durumumda şöyle diyor:

Reclaimed 0 bytes out of 90.4 GB possible.

Elbette, bu görüntünün içeriğini daha sonra yerine kullanılan yeni bir seyrek pakete kopyalama olasılığı vardır, ancak bu hem hantal hem de bu işlem için yeterli boş alan gerektirir.

Bu arada, kompakt komutun çıktısının bazen yanıltıcı olduğunu (şu anda OS X 10.5.7 kullanıyorum) bazen şu anda alınan boyuttan daha büyük bir boyut listelediğini öğrendim sabit diskteki görüntü paketiyle. Yakından bakmadım ama çıktı ya maksimum boyut ya da "maksimum boyut" - "kullanılmış boyut" gibi görünüyor.

33
user4854

İlginç!

Duyduğum kadarıyla, seyrek paket verileri 8Mb bantlara böler. Şanslıysanız, bant boyutunu değiştirmek yardımcı olabilir. Yani, hiçbir zaman% 100 geri kazanılmış alan elde edemezsiniz, ama şimdi elde ettiğinizden daha iyi olabilir. (Resimdeki verilere bağlı olarak vs.)

8Mb (varsayılan) bant boyutu ve 1Mb (söyleyebileceğimden izin verilen en küçük boyut) ile iki 500Mb seyrek paketlerle kirli basit bir test yaptım. 400mb'den fazla mp3 dosyasını kopyaladım ve sonra diğer tüm dosyaları kaldırdım ve ardından hdiutil compact kıçına.

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

Seyrek paketinizi dönüştürme komutu

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

Bant boyutu 512 bayt birimindedir. Yukarıdaki örnek, bant boyutunu 512 * 2048 = 1Mb olarak ayarlar. TimeMachine görüntüleri veya kullanıcı ana klasör görüntüleri vb. İle uğraşıyorsanız dikkatli olun. Apple yol :) sapma Güvenli bir yedek tutun!

Birleştirme gelince: Sparsefile aynı formatta yeni bir seyrek dosyaya dönüştürmek için hdiutil kullanmak kadar hızlı (veya daha hızlı!) Komik bir duygu var. Bence bu konuda akıllı olmaya çalışıyor. Ama bilmiyorum.

(Seyrek bir paket birleştirmenin, seyrek bir paket bilinçli birleştirici olmadığı sürece, seyrek paket bantlarını değil, disk verilerini birleştirdiğini unutmayın. hdiutil convert bir grup 'inanıyorum' birleştirme yapar.)

20
0scar

Bence 90.4 GB mümkün değil. Koştuğumda:

hdiutil compact *.sparsebundle

... 16 GB'a kadar yer açmıştı. Ne kadar tuhaf ki, HD kapasitemden çok daha fazla olan "800 GB mümkün" dedi. İkinci figürün sadece (kusurlu) teorik bir sayı olduğunu varsayıyorum.

8
till

@Oscar bizi doğru yöne çekti. Ancak yer kazanmak için 1 MB ve kompakt boyutlara dönüştürmeniz gerekmez.

Bunun yerine, seyrek vuruşunuzu başka bir seyrek kısma kopyalayın. Bu da görüntüyü sizin için birleştirir. Aynı zamanda dosya sistemini, boyutu ve hatta bantları değiştirebilirsiniz.

İşte son zamanlarda yaptığım bir örnek, cihazlar arasında senkronize ettiğim 20GB "kod" resmimi dönüştürüyorum.

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

hdiutil create -help İle tüm seçeneklere bakın.

Bu komutun çıktısı:

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

-attach Seçeneğinin /Volumes/code Altına monte edildiğini görebilirsiniz.

Not: Büyük/küçük harfe duyarlı HFS + için HSFX kullanıyorum çünkü görüntülerimi Linux ile de senkronize ediyorum ve bağlarım. MacOS normalde büyük/küçük harfe duyarlı olmadığından büyük olasılıkla HFS+ Kullanmak isteyeceksiniz.

Şimdi tek yapmam gereken her şeyi yeni serçeğime kopyalamak:

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

Ve şimdi karşılaştırmak için:

# 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/

Yaşasın. 15 GB'lık seyrek parça artık 3 GB, birleştirildi ve gruplar değişti!

2
Eric Duncan

Bunu yapmanın ücretsiz bir yolunu bilmiyorum, ancak Prosoft Drive Genius'un burada ihtiyacınız olanı yapacağına inanıyorum:

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

Seyrek diziyi monte edin, Drive Genius'u kullanarak birleştirin ve ardından

hdiutil compact

komut çalışmalıdır.

0
palmer

950 GiB 1024 GiB (işgal SSD sadece 320 GiB)) işgal iddia iddia sorunlu seyrek bir paket vardı = boyutunda, bu olamazdı). hdi compact yardımcı olmadı.

Disk paketinden "İlk Yardım" ı hem paket hem de disk bölümünde çalıştırdım ve bu yardımcı oldu - boş alan ölçer gerçek 20 GiB olması gerektiği gibi göstermeye başladı ve sonra hdi compact sorunsuz koştu.

0
toriningen

90,4 GB'den 0 bayt geri alındı.

Bahse girerim seyrek paketi tutan diskte yaklaşık 90 GB boş alan var mı? Seyrek paketler genellikle disk dolana kadar büyüyebildiğinden, bu alanın kullanılabilir boş alan olduğu bildirilir ... Disk İzlencesi'nde aynı rakamları görürsünüz. Gerçekten çok yanıltıcı.

Aşağıdakiler size bir fikir verebilir:

hdiutil imageinfo image.sparsebundle
0
Arjan