重複ファインダーが Mac をスキャンし、すぐに削除できる 40 GB の重複ファイルを提供します。これらを削除して「この Mac について」を開くと、空き容量が 2 GB 移動しました。
何も失敗しませんでした。ファイルが重複していました。 APFS では 2 つのファイルが同じ容量のストレージを保持しなくても、同じバイトを保持できるため、この見積もりは依然として間違っていました。
短いバージョン: 複製スキャナはファイル サイズを測定します。空き容量はブロックによって異なります。 APFS では、クローンまたはハード リンクが関係するとすぐに、これら 2 つの番号の一致が停止します。
簡単な答え
- クローンはオリジナルとブロックを共有する別個のファイルであるため、一方を削除すると分岐した部分のみが解放されます。
- ハード リンクは 1 つの i ノードの 2 番目の名前であるため、1 つの名前を削除しても何も解放されません。
lsFinder はすべての名前のフル サイズをレポートします。これは、サイズ ベースのスキャナーが合計したものとまったく同じです。ls -liリンク数を通じてハードリンクを公開します。クローンは標準ツールには表示されません。- 正直な測定値は、削除前後の空き容量です。
df -h /System/Volumes/Data。 - Time Machine のローカル スナップショットには、すでに削除したファイルのブロックを保持できるため、スペースはすぐにではなく後で戻ります。
重複スキャナーが実際に測定するもの
すべての重複ファインダーは 2 段階で機能します。一致する可能性のあるファイルを通常はサイズごとにグループ化し、内容を読み取るかハッシュを比較することで一致を確認します。どちらのステージでも、ファイル内のバイトが考慮されます。
ストレージは 1 レベル下で機能します。ファイル名は inode を指し、inode はブロックを指し、空き領域カウンターはブロックを追跡します。 2 つの名前が同じブロックを共有すると、ファイル サイズの合計はディスクを表すことができなくなります。
スキャナーと同じように見える 3 つの配置
本物のコピー。 2 つのファイル、2 つの i ノード、2 セットのブロック。どちらかを削除すると、ディスクはフルサイズに戻ります。これは誰もが見ていると想定しているものです。
クローン。 APFS は、Finder で [複製] を押したとき、または実行したときにクローンを作成します。cp -c、そしてアプリが呼び出すときclonefile。クローンは独自の i ノードを持つ実際のファイルですが、そのデータ ポインターは元のブロックを参照します。どちらの側でも書き込みはコピーオンライトです。変更されたブロックは個別に書き込まれ、変更されていないブロックは共有されたままになります。編集されていないクローンにはほとんどコストがかからず、削除してもほとんど何も返されません。
ハード リンク。 2 つのディレクトリ エントリを持つ 1 つの i ノード。 2 番目のファイルはまったくなく、2 番目の名前があるだけです。 1 つの名前を削除すると、リンク数が減り、データはそのまま残ります。姓が消えると、ディスクにはスペースが戻ります。
コンテンツベースのスキャナは、3 つのケースすべてで同じバイトを認識します。ファイル システム レイヤーをチェックしない限り、3 つすべてについて同じ保存が報告されます。
見積もりが高くなる理由
問題はレポート層であり、APFS よりも古いものです。 Finder には、クローンと各ハード リンクのフル サイズが表示されます。ls -l。どちらも、ストレージが共有されているとは言えません。ファイル サイズを合計するスキャナーはそのエラーを直接継承し、ワークフローが Finder の複製やクローン認識コピーに依存するほど、ギャップは大きくなります。
duある特定の方法でより良く動作します。 1 回の実行内で i ノードを 1 回カウントするため、ハード リンクでいっぱいのフォルダーでは現実的な合計が報告されます。クローンは別個の i ノードであるため、クローンは依然として 2 回カウントされます。
その結果、ビデオ プロジェクト、エクスポートされたレンダリング、または仮想マシン イメージ (まさにコピーではなくクローンを作成するファイル) を保持する Mac では、推定が桁違いに間違っている可能性があります。
信頼する前に確認してください
ハードリンクを検索します。 の 2 番目の列ls -li リンク数です。
ls -li ~/Movies/big.mov
# 12345678 -rw-r--r-- 2 chama staff 4294967296 Aug 18 09:12 big.mov
# ^ link count 2: another name points at the same data
上記のすべて1 この名前を削除しても、他の名前も削除されるまで何も解放されないことを意味します。
実際の節約量を測定します。 データ ボリュームの前後に空き領域を確保します。
df -h /System/Volumes/Data # before
# delete the duplicates
df -h /System/Volumes/Data # after
違いは、ディスクを表す唯一の数字です。削除前に出力されたものはすべて予測です。
クローンは非表示のままであることを期待してください。 標準の macOS システムでは、「このファイルはクローンですか」に答えるサポートされているコマンドはありません。まさにこれが、貯蓄額の見積もりが信頼できる総額ではなく信頼レベルに値する理由です。
削除されましたが、スペースはまだ戻っていません
2 つのメカニズムにより、重複が本物である場合でも結果が遅れます。
Time Machine はローカル スナップショットを起動ディスクに保持し、スナップショットには作成時に存在していたファイルのブロックが保持されます。 20 GB の重複を削除すると、それらのブロックはスナップショットが期限切れになるまでスナップショットに割り当てられたままになります。 macOS はそれをパージ可能な領域として報告し、ディスクが狭くなると自動的に再利用します。存在するものをリストします:
tmutil listlocalsnapshots /
ゴミ箱はより単純なケースであり、より頻繁に人々を捕らえます。ゴミ箱内のファイルは依然としてブロックを占有しています。空にしてから測定してください。
正直な重複レポートはどのようなものですか
StorageRadar は見積もりをレビューに耐える必要がある請求として扱うため、ワークフローは 3 つのルールに基づいて構築されます。
バイトとバイトの一致を確認します。 候補はサイズごとにグループ化され、3 つのチャンクにわたる部分的な SHA-256 でスクリーニングされ、その後、完全な SHA-256 と比較されます。 i ノード、デバイス、サイズはアクションの前に再検証されるため、スキャン中に変更されたファイルは古い証拠から削除できません。
数値には不確実性を付加してください。 物理的な節約量の推定値はヌル可能であり、信頼値が含まれており、APFS クローンやハード リンクなど、それが低くなる可能性がある理由がリストされています。ブロックを共有する重複グループは、見た目よりも解放される量が少ないグループとして報告されます。
キーパーなしでグループを離れないでください。 選択内容がすべてのコピーを削除する場合、適用ステップはブロックされ、削除は何も移動する前にドライランとプリフライトで実行されます。デフォルトでは、ゴミ箱と短い元に戻すウィンドウが使用されます。
クラウド専用ファイルもそのまま残ります。 200 GB の iCloud アーカイブを実体化して比較することはクリーンアップではないため、許可しない限り、データのないファイルはダウンロードされてハッシュ化されません。
本物の重複はどこから来るのか
クローン対応ツールは、最新の Mac 上の本物の無駄の量を静かに削減するため、完全なコピーとして重複がまだ表示されている場所を探すのに役立ちます。
- 2 回届いたダウンロード
file.zipそしてfile (1).zip。 - エクスポートとレンダリングはプロジェクトの隣に書き込まれ、配信フォルダーにコピーされます。
- 異なるライブラリに 2 回実行されたカメラと電話のインポート。
- プロジェクト フォルダーが同じディスク上のバックアップ ディレクトリにコピーされます。これはバックアップではなくコピーです。
- アーカイブが異なる宛先に 2 回解凍されました。
これらは独自のブロックを持つ通常のコピーであり、余分なブロックを削除するとフルサイズが返されます。
機能する順序
- スキャンして、ツールに名前やサイズではなく内容によって重複を確認させます。
- 節約の見積もりを範囲として読み取り、ツールが共有ストレージを許可するかどうかを確認します。
- 空きスペースを記録します
df -h /System/Volumes/Data。 - ゴミ箱から削除し、グループごとに 1 つのコピーを保持し、ゴミ箱を空にします。
- 再度測定し、その差を真実として扱います。
2 回目の測定結果が残念だったとしても、ファイルは共有ストレージであり、無駄ではありませんでした。何も失われておらず、ディスクはすでにレポートで示唆されているよりも小さくなっていました。
よくある質問
重複を削除すると Mac 上の空きスペースがほとんどなくなったのはなぜですか?
コピーはおそらくクローンまたはハードリンクでした。 APFS では 2 つのファイルが同じストレージ ブロックを共有できるため、そのうちの 1 つを削除すると、異なるブロックのみが解放されます。スキャナーは両方のファイルのフル サイズをカウントしました。これは、ファイル システムが各名前について報告するものであるためです。
APFS クローン ファイルとは何ですか?
クローンは、オリジナルと同じデータを指す独自の i ノードを持つ別個のファイルです。どちらの側への書き込みもコピーオンライトであるため、内容が分岐するまで、ペアにはストレージの 1 コピーがかかります。 Finder の Duplicate コマンドと cp -c はクローンを作成します。
ハードリンクはクローンとどう違うのですか?
ハード リンクは同じ i ノードの別名であるため、2 つのディレクトリ エントリを持つ 1 つのファイル オブジェクトが存在します。 1 つの名前を削除しても、別の名前がそのストレージを指している間は、ストレージが解放されることはありません。 ls -li はリンク数を示し、1 を超える場合は他の名前が存在することを意味します。
APFS はファイルを自動的に重複排除しますか?
いいえ。APFS は、Finder、cp -c、または clonefile を呼び出すアプリによってクローンが明示的に作成された場合にのみブロックを共有します。偶然同じバイトを保持する 2 つのファイルは、依然としてストレージの 2 つのコピーを占有します。
クリーンアップによって実際に解放されたスペースの量を測定するにはどうすればよいですか?
df -h /System/Volumes/Data を使用して削除の前後の空きスペースを記録し、比較します。重複ファインダーによって出力される推定値は予測であり、APFS では予測が双方向で間違っている可能性があります。
実際の重複を削除しても空き領域が戻らないのはなぜですか?
Time Machine のローカル スナップショットでは、削除されたファイルのブロックが間引かれるまで保持されるため、スペースは空き領域ではなく消去可能として表示されます。 tmutil listlocalsnapshots / を使用してそれらをリストし、自動的に間引きされるか、スペースが明示的に解放されるまで待ちます。