Làm cách nào để lấy lại tất cả / hầu hết dung lượng trống từ một thưa thớt trên OS X


30

Có khả năng "chống phân mảnh" một hình ảnh bó thưa thớt và lấy lại (hầu hết) không gian trống?

Đây là nền tảng: Tôi đang sử dụng các gói thưa thớt và thỉnh thoảng tôi muốn lấy lại không gian từ chúng để tôi chạy:

hdiutil compact image.sparsebundle

Tuy nhiên, như được giải thích trong trang man, nó chỉ lấy lại các tập tin băng tần hoàn toàn không sử dụng, vì vậy trong trường hợp của tôi, nó nói:

Reclaimed 0 bytes out of 90.4 GB possible.

Tất nhiên, có khả năng sao chép nội dung của hình ảnh này sang một gói thưa thớt mới sau đó được sử dụng thay thế, nhưng điều đó vừa cồng kềnh vừa cần đủ không gian trống cho thao tác này.

Trong khi đó, tôi phát hiện ra rằng đầu ra của lệnh compact có phần sai lệch (tôi hiện đang chạy OS X 10.5.7) vì đôi khi nó liệt kê một kích thước có thể lớn hơn kích thước hiện tại được gói bởi hình ảnh cứng lái xe. Tôi không nhìn gần hơn nhưng đầu ra dường như là kích thước tối đa hoặc "kích thước tối đa" - "kích thước được sử dụng".


1
Tôi đã có một vấn đề với điều này, nhưng sau đó nhận ra đó là vì fs thưa thớt của tôi là EXFAT. Sau khi đọc manpage , tôi nhận ra rằng động từ nhỏ gọn chỉ hoạt động trên "hình ảnh đĩa chứa hệ thống tập tin HFS".
jsejcksn

@jsejcksn Đó là một điểm tốt để ghi nhớ. Trang man bây giờ nói rằng APFS và HFS + được hỗ trợ.
GDP2

Câu hỏi liên quan trên AskDifferent: apple.stackexchange.com/questions/54607/iêu
GDP2

Câu trả lời:


20

Hấp dẫn!

Từ những gì tôi đã nghe, gói thưa thớt chia dữ liệu thành các dải 8Mb. Thay đổi kích thước ban nhạc có thể chỉ giúp ích, nếu bạn may mắn. Ý tôi là, bạn sẽ không bao giờ có được không gian khai hoang 100%, nhưng có thể tốt hơn so với những gì bạn nhận được bây giờ. (Tùy thuộc vào dữ liệu trên hình ảnh, v.v.)

Tôi đã thực hiện một thử nghiệm đơn giản bẩn với hai bó thưa thớt 500Mb, một bó có kích thước băng tần 8Mb (mặc định) và một bó có kích thước 1Mb (kích thước nhỏ nhất cho phép từ những gì tôi có thể nói). Tôi đã sao chép hơn 400mb tệp mp3 và sau đó xóa mọi tệp khác và sau đó chạy hdiutil compacttrên lừa của họ.

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

Lệnh để chuyển đổi gói thưa thớt của bạn là

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

Kích thước băng tần nằm trong đơn vị 512byte. Vì vậy, ví dụ trên đặt kích thước băng tần thành 512 * 2048 = 1Mb. Hãy cẩn thận nếu bạn đang xử lý hình ảnh TimeMachine hoặc hình ảnh thư mục nhà của người dùng, v.v. Bạn đang đi chệch khỏi đường dẫn của Apple :) Giữ một bản sao lưu an toàn thất bại!

Về chống phân mảnh: Tôi có một cảm giác buồn cười là nó chỉ nhanh (hoặc nhanh hơn!) Khi chỉ sử dụng hdiutil để chuyển đổi tệp thưa thớt thành một tệp thưa thớt mới có cùng định dạng. Tôi nghĩ rằng nó cố gắng để thông minh về nó. Nhưng tôi không biết.

(Lưu ý rằng chống phân mảnh một bó thưa thớt chỉ chống phân mảnh đĩa dữ liệu, không phải là ban nhạc bó thưa thớt, trừ khi đó là một thưa thớt bó defragmentor biết. hdiutil convertHiện một ban nhạc 'chống phân mảnh' Tôi tin.)


Đối số dòng lệnh của bạn theo thứ tự sai: -onên trực tiếp trước dst.sparsebundle, không src.sparsebundle( -obiểu thị 'đầu ra').
Nick Forge

Ngoài ra, lưu ý rằng phương pháp này không bảo toàn mã hóa. Có thể có một cờ để kích hoạt nó, nhưng tại thời điểm này, tôi thấy việc tạo cho mình một bản sao mới trong Disk Utility và sao chép các tệp của mình vào đó dễ dàng hơn.
Justin Searls

2
Để mã hóa, chỉ cần thêm công -encryptiontắc vào lệnh.
fideli

Cảm ơn rất nhiều. Giảm kích thước băng tần thưa thớt rất hữu ích cho Dropbox được lưu trữ các gói thưa thớt
Max Ried

Ok điều này không có ý nghĩa gì ... khi tôi chuyển đổi để chống phân mảnh hình ảnh, bó thưa thớt kết quả lớn hơn 16% so với ban đầu.
Michael

7

Tôi nghĩ rằng 90,4 GB có thể là hoàn toàn sai. Khi tôi chạy:

hdiutil compact *.sparsebundle

... nó giải phóng 16 GB dung lượng, gần như là những gì tôi mong đợi. Thật thú vị, nó nói khoảng "800 GB có thể", nhiều hơn dung lượng HD của tôi. Vì vậy, tôi giả sử con số thứ hai chỉ là một số (lý thuyết) thiếu sót.


2

@Oscar chỉ chúng tôi đi đúng hướng. Nhưng bạn không cần phải chuyển đổi thành 1 MB và nhỏ gọn, hy vọng lấy lại không gian.

Thay vào đó, chỉ cần sao chép thưa thớt của bạn sang một thưa thớt mới khác. Điều này, lần lượt, phân mảnh hình ảnh cho bạn. Và đồng thời bạn có thể thay đổi hệ thống tập tin, kích thước và thậm chí các băng tần.

Đây là một ví dụ tôi đã làm gần đây, chuyển đổi hình ảnh "mã" 20GB mà tôi đồng bộ hóa trên các thiết bị.

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

Xem tất cả các tùy chọn với hdiutil create -help.

Lệnh này xuất ra:

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

Bạn có thể thấy -attachtùy chọn gắn nó bên dưới /Volumes/code.

Lưu ý: Tôi sử dụng HSFXcho HFS + phân biệt chữ hoa chữ thường vì tôi cũng đồng bộ hóa hình ảnh của mình với Linux và gắn kết chúng. Bạn rất có thể muốn sử dụng HFS+thay thế, vì macOS thường không phân biệt chữ hoa chữ thường.

Bây giờ tất cả những gì tôi phải làm là sao chép mọi thứ vào phần thưa thớt mới của mình:

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

Và bây giờ để so sánh:

# 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. Số lượng thưa thớt 15 GB của tôi hiện là 3 GB, được phân mảnh và các băng tần đã thay đổi!


Phương pháp này đã được thừa nhận trong câu hỏi ban đầu ... Tôi sẽ không đưa ra câu trả lời vì nó được viết tốt và "nhiều thông tin", nhưng .. xin chào ..
adfaklsdjf

0

Tôi không biết một cách miễn phí để làm điều đó, nhưng tôi tin Prosoft Drive Genius sẽ làm những gì bạn cần ở đây:

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

Bạn gắn kết thưa thớt, chống phân mảnh bằng Drive Genius và sau đó

hdiutil compact

lệnh nên hoạt động.


0

Có thể lấy lại 0 byte trong số 90,4 GB.

Tôi đặt cược ổ đĩa chứa gói thưa thớt có dung lượng trống khoảng 90 GB? Vì các gói thưa thớt thường có thể phát triển cho đến khi đĩa đầy, không gian này được báo cáo đơn giản là có sẵn dung lượng trống ... Bạn sẽ thấy các số liệu tương tự trong Disk Utility. Thực sự rất sai lệch.

Sau đây có thể cung cấp cho bạn một số cái nhìn sâu sắc:

hdiutil imageinfo image.sparsebundle

0

Tôi đã có một gói thưa thớt có vấn đề khi tuyên bố có 950 GiB chiếm hết 1024 GiB (SSD của tôi chỉ có kích thước 320 GiB, vì vậy điều đó không thể xảy ra). hdi compactđã không giúp đỡ.

Tôi đã chạy "Sơ cứu" từ Disk Utility trên cả hai phân vùng AND và điều đó đã giúp - máy đo không gian trống bắt đầu hiển thị 20 GiB thực sự như mong muốn, và sau đó hdi compactchạy mà không gặp vấn đề gì.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.