it-swarm-id.com

Cara mendapatkan kembali semua / sebagian besar ruang kosong dari sparsebundle di OS X

Apakah ada kemungkinan untuk "mendefragmentasi" gambar bundel yang jarang dan mendapatkan kembali (sebagian besar) ruang kosong?

Inilah latar belakangnya: Saya menggunakan bundel yang jarang dan kadang-kadang saya ingin mendapatkan kembali ruang dari mereka jadi saya jalankan:

hdiutil compact image.sparsebundle

Namun, seperti yang dijelaskan di halaman manual, itu hanya mendapatkan kembali file band yang sama sekali tidak digunakan, jadi dalam kasus saya dikatakan:

Reclaimed 0 bytes out of 90.4 GB possible.

Tentu saja ada kemungkinan untuk menyalin isi gambar ini ke bundel baru yang jarang yang kemudian digunakan sebagai pengganti, tetapi keduanya rumit dan membutuhkan ruang kosong yang cukup untuk operasi ini.

Sementara itu, saya menemukan bahwa output dari perintah kompak agak menyesatkan (saya saat ini menjalankan OS X 10.5.7) karena kadang-kadang daftar ukuran mungkin --- lebih besar daripada ukuran saat ini diambil oleh bundel gambar pada hard drive. Saya tidak melihat lebih dekat tetapi output tampaknya menjadi ukuran maksimum atau "ukuran maksimum" - "ukuran yang digunakan".

33
user4854

Menarik!

Dari apa yang saya dengar, bundel jarang membagi data menjadi 8MB band. Mengubah ukuran band mungkin hanya membantu, jika Anda beruntung. Maksud saya, Anda tidak akan pernah mendapatkan 100% ruang reklamasi, tapi mungkin lebih baik daripada yang Anda dapatkan sekarang. (Tergantung pada data pada gambar dll.)

Saya melakukan tes sederhana kotor dengan dua bundel 500MB jarang, satu dengan band 8MB (default), dan satu dengan 1 MB (ukuran terkecil yang diizinkan dari apa yang saya tahu). Saya menyalin lebih dari 400mb file mp3 dan kemudian menghapus setiap file lainnya dan kemudian menjalankan hdiutil compact pada keledai mereka.

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

Perintah untuk mengonversi bundel jarang Anda adalah

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

Ukuran band di unit 512byte. Jadi contoh di atas menetapkan ukuran band ke 512 * 2048 = 1Mb. Berhati-hatilah jika Anda berurusan dengan gambar TimeMachine atau gambar folder rumah pengguna dll. Anda menyimpang dari jalur Apple :) Simpan cadangan aman yang gagal!

Sedangkan untuk defragmentasi: Saya punya perasaan lucu, sama cepat (atau lebih cepat!) Dengan menggunakan hdiutil untuk mengonversi sparsefile menjadi file jarang baru dengan format yang sama. Saya pikir itu mencoba untuk menjadi pintar tentang hal itu. Tapi saya tidak tahu.

(Perhatikan bahwa mendefragmentasi bundel jarang hanya mendefrag data disk, bukan bundel bundel jarang, kecuali jika defragment bundel yang disadari jarang. hdiutil convert saya percaya dengan 'defragmentasi' band.)

20
0scar

Saya pikir 90,4 GB mungkin salah. Ketika saya berlari:

hdiutil compact *.sparsebundle

... itu membebaskan ruang 16 GB, yang kira-kira seperti yang saya harapkan. Lucunya dikatakan kira-kira "800 GB mungkin" yang jauh lebih dari kapasitas HD saya. Jadi saya menganggap angka kedua hanyalah beberapa angka teoritis (cacat).

8
till

@Oscar menunjuk kami ke arah yang benar. Tetapi Anda tidak perlu mengkonversi ke 1 MB dan kompak, berharap untuk mendapatkan kembali ruang.

Sebagai gantinya, cukup salin sparsebundle Anda ke sparsebundle baru. Ini, pada gilirannya, mendefrag gambar untuk Anda. Dan pada saat yang sama Anda dapat mengubah sistem file, ukuran dan bahkan band.

Berikut adalah contoh yang saya lakukan baru-baru ini, mengonversi gambar "kode" 20GB yang saya selaraskan di seluruh perangkat.

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

Lihat semua opsi dengan hdiutil create -help.

Perintah ini menghasilkan:

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

Kamu dapat melihat -attach opsi memasangnya di bawah /Volumes/code.

Catatan: Saya menggunakan HSFX untuk HFS + peka huruf besar-kecil karena saya juga menyinkronkan gambar saya ke Linux dan memasangnya. Anda kemungkinan besar ingin menggunakan HFS+ sebagai gantinya, karena macOS biasanya tidak case-sensitive.

Sekarang yang harus saya lakukan adalah menyalin semuanya ke sparsebundle baru saya:

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

Dan sekarang untuk membandingkan:

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

Yay. Sparsebundle 15GB saya sekarang 3GB, didefrag, dan band berubah!

2
Eric Duncan

Saya tidak tahu cara gratis untuk melakukannya, tetapi saya percaya Prosoft Drive Genius akan melakukan apa yang Anda butuhkan di sini:

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

Anda memasang sparsebundle, defrag menggunakan Drive Genius, lalu

hdiutil compact

perintah harus bekerja.

0
palmer

Saya memiliki bundel bermasalah bermasalah yang diklaim memiliki 950 GiB ditempati dari 1024 GiB (SSD saya hanya 320 GiB = dalam ukuran, jadi itu tidak mungkin terjadi). hdi compact tidak membantu.

Saya telah menjalankan "Pertolongan Pertama" dari Disk Utility pada bundel DAN partisi, dan meter ruang bebas - membantu itu mulai menunjukkan 20 nyata GiB sebagaimana mestinya, dan kemudian hdi compact berlari tanpa masalah.

0
toriningen

Reklamasi 0 byte dari 90,4 GB mungkin.

Saya yakin drive yang memegang bundel jarang memiliki ruang kosong sekitar 90 GB? Karena bundel jarang dapat tumbuh hingga disk penuh, ruang ini hanya dilaporkan sebagai ruang kosong yang tersedia ... Anda akan melihat angka yang sama di Utilitas Disk. Memang sangat menyesatkan.

Berikut ini mungkin memberi Anda wawasan:

hdiutil imageinfo image.sparsebundle
0
Arjan