Ein Duplikat-Finder scannt Ihren Mac und bietet eine Anzahl von 40 GB an Duplikaten, die zum Entfernen bereit sind. Sie löschen sie, öffnen „Über diesen Mac“ und der freie Speicherplatz wurde um 2 GB verschoben.
Nichts ist fehlgeschlagen. Bei den Dateien handelte es sich um Duplikate. Die Schätzung war immer noch falsch, da auf APFS zwei Dateien dieselben Bytes enthalten können, ohne die gleiche Menge an Speicherplatz zu beanspruchen.
Die Kurzversion: Ein Duplikatscanner misst die Dateigröße. Freier Speicherplatz hängt von Blöcken ab. Bei APFS stimmen diese beiden Zahlen nicht mehr überein, sobald Klone oder Hardlinks beteiligt sind.
Schnelle Antwort
- Ein Klon ist eine separate Datei, die ihre Blöcke mit dem Original teilt, sodass durch das Löschen einer Seite nur die Abweichungen freigegeben werden.
- Ein fester Link ist ein zweiter Name für einen Inode, sodass durch das Löschen eines Namens überhaupt nichts freigegeben wird.
lsund Finder melden die volle Größe für jeden Namen, was genau das ist, was ein größenbasierter Scanner addiert.ls -limacht harte Links durch die Linkanzahl sichtbar; Klone sind für Standardtools unsichtbar.- Die ehrliche Messung ist der freie Speicherplatz vor und nach dem Löschen
df -h /System/Volumes/Data. - Lokale Snapshots von Time Machine können die Blöcke von Dateien enthalten, die Sie bereits gelöscht haben, sodass der Speicherplatz später und nicht sofort wiederhergestellt wird.
Was ein Duplikatscanner tatsächlich misst
Jeder Duplikatfinder arbeitet in zwei Schritten. Es gruppiert Dateien, die übereinstimmen könnten, normalerweise nach Größe, und bestätigt dann die Übereinstimmung durch Lesen des Inhalts oder Vergleichen von Hashes. In beiden Phasen geht es um die Bytes in der Datei.
Die Speicherung erfolgt eine Ebene tiefer. Ein Dateiname zeigt auf einen Inode, ein Inode zeigt auf Blöcke und der Zähler für freien Speicherplatz verfolgt Blöcke. Sobald zwei Namen dieselben Blöcke teilen, beschreibt die Summe der Dateigrößen die Festplatte nicht mehr.
Drei Anordnungen, die identisch mit einem Scanner aussehen
Eine echte Kopie. Zwei Dateien, zwei Inodes, zwei Blocksätze. Löschen Sie eines davon und die Festplatte hat wieder die volle Größe. Das ist es, wovon jeder annimmt, dass er es sieht.
Ein Klon. APFS erstellt Klone, wenn Sie beim Ausführen im Finder auf „Duplizieren“ klickencp -c, und wenn eine App anruftclonefile. Der Klon ist eine echte Datei mit einem eigenen Inode, dessen Datenzeiger jedoch auf die Originalblöcke verweisen. Schreibvorgänge auf beiden Seiten erfolgen beim Kopieren beim Schreiben: Geänderte Blöcke werden separat geschrieben, unberührte Blöcke bleiben gemeinsam genutzt. Ein Klon, der noch nie bearbeitet wurde, kostet fast nichts und das Löschen bringt fast nichts zurück.
Ein fester Link. Ein Inode mit zwei Verzeichniseinträgen. Es gibt überhaupt keine zweite Datei, nur einen zweiten Namen. Durch das Entfernen eines Namens verringert sich die Linkanzahl und die Daten bleiben erhalten. Die Festplatte gibt Speicherplatz zurück, wenn der Nachname verschwindet.
Ein inhaltsbasierter Scanner sieht in allen drei Fällen die gleichen Bytes. Sofern die Dateisystemschicht nicht überprüft wird, wird für alle drei die gleiche Einsparung gemeldet.
Warum die Schätzung hoch ausfällt
Die Berichtsschicht ist das Problem und sie ist älter als APFS. Der Finder zeigt die volle Größe für einen Klon und für jeden festen Link an, und das Gleiche gilt auchls -l. Keiner von beiden sagt Ihnen, dass der Speicher gemeinsam genutzt wird. Ein Scanner, der Dateigrößen addiert, erbt diesen Fehler direkt, und je mehr Ihr Workflow auf Finder-Duplikate und klonfähige Kopien basiert, desto größer wird die Lücke.
duverhält sich auf eine bestimmte Weise besser. Innerhalb eines einzigen Laufs wird ein Inode einmal gezählt, sodass ein Ordner voller Hardlinks eine realistische Gesamtzahl meldet. Klone werden immer noch doppelt gezählt, da Klone separate Inodes sind.
Das Ergebnis ist eine Schätzung, die auf einem Mac, der Videoprojekte, exportierte Renderings oder Bilder virtueller Maschinen enthält, bei denen es sich genau um die Dateien handelt, die Menschen klonen statt kopieren, um eine Größenordnung falsch sein kann.
Überprüfen Sie es, bevor Sie ihm vertrauen
Finden Sie Hardlinks. Die zweite Spalte vonls -li ist die Linkanzahl.
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
Alles oben1 Das bedeutet, dass durch das Löschen dieses Namens nichts freigegeben wird, bis auch die anderen Namen gelöscht werden.
Messen Sie die tatsächliche Einsparung. Nehmen Sie vorher und nachher freien Speicherplatz auf dem Datenvolumen.
df -h /System/Volumes/Data # before
# delete the duplicates
df -h /System/Volumes/Data # after
Der Unterschied ist die einzige Zahl, die Ihre Festplatte beschreibt. Alles, was vor dem Löschen gedruckt wird, ist eine Vorhersage.
Erwarten Sie, dass Klone unsichtbar bleiben. Es gibt keinen unterstützten Befehl, der auf einem Standard-MacOS-System antwortet: „Ist diese Datei ein Klon?“. Genau aus diesem Grund verdient eine Einsparungsschätzung ein Konfidenzniveau anstelle einer sicheren Gesamtsumme.
Gelöscht und der Platz ist immer noch nicht zurückgekehrt
Zwei Mechanismen verzögern das Ergebnis, selbst wenn die Duplikate echt wären.
Time Machine speichert lokale Snapshots auf dem Startvolume und ein Snapshot enthält die Dateiblöcke, die zum Zeitpunkt der Erstellung vorhanden waren. Löschen Sie ein 20-GB-Duplikat und diese Blöcke bleiben dem Snapshot zugeordnet, bis er veraltet ist. macOS meldet dies als löschbaren Speicherplatz und fordert ihn automatisch zurück, wenn die Festplatte knapp wird. Listen Sie auf, was vorhanden ist mit:
tmutil listlocalsnapshots /
Der Papierkorb ist der einfachere Fall und erwischt die Leute häufiger. Dateien im Papierkorb belegen weiterhin Blöcke. Leeren Sie es und messen Sie dann.
Wie ein ehrlicher Duplikatbericht aussieht
StorageRadar behandelt den Kostenvoranschlag als einen Anspruch, der einer Überprüfung standhalten muss, sodass der Arbeitsablauf auf drei Regeln basiert.
Bestätigen Sie die Übereinstimmung Byte für Byte. Kandidaten werden nach Größe gruppiert, mit einem partiellen SHA-256 über drei Blöcke überprüft und erst dann mit einem vollständigen SHA-256 verglichen. Inode, Gerät und Größe werden vor jeder Aktion erneut überprüft, sodass eine Datei, die sich während des Scans geändert hat, nicht aufgrund veralteter Beweise entfernt werden kann.
Fügen Sie der Zahl Unsicherheit hinzu. Die geschätzte physische Einsparung ist nullbar, verfügt über einen Konfidenzwert und listet die Gründe auf, warum sie niedriger sein könnte, einschließlich APFS-Klone und Hardlinks. Eine doppelte Gruppe, die Blöcke gemeinsam nutzt, wird als Gruppe gemeldet, die weniger freigibt, als es aussieht.
Verlassen Sie niemals eine Gruppe ohne einen Betreuer. Der Schritt „Anwenden“ blockiert, wenn Ihre Auswahl jede Kopie entfernen würde, und Entfernungen durchlaufen einen Probelauf und einen Preflight, bevor etwas verschoben wird, mit Papierkorb und einem kurzen Rückgängig-Fenster als Standardeinstellung.
Auch reine Cloud-Dateien bleiben davon unberührt. Eine datenlose Datei wird nicht zum Hashen heruntergeladen, es sei denn, Sie erlauben dies, da die Materialisierung von 200 GB iCloud-Archiven zum Vergleich keine Bereinigung darstellt.
Woher echte Duplikate kommen
Klonfähige Tools reduzieren stillschweigend die Menge an echtem Abfall auf einem modernen Mac, sodass es hilfreich ist, nachzuschauen, wo Duplikate noch als vollständige Kopien erscheinen:
- Downloads, die unten zweimal angekommen sind
file.zipundfile (1).zip. - Exporte und Renderings werden neben dem Projekt geschrieben und dann in einen Lieferordner kopiert.
- Kamera- und Telefonimporte, die zweimal in verschiedene Bibliotheken ausgeführt wurden. – Projektordner werden in ein Backup-Verzeichnis auf derselben Festplatte kopiert, wobei es sich um eine Kopie und nicht um ein Backup handelt.
- Archive wurden zweimal an verschiedenen Zielorten entpackt.
Dabei handelt es sich um gewöhnliche Kopien mit eigenen Blöcken. Wenn Sie den zusätzlichen Block entfernen, erhalten Sie die volle Größe zurück.
Die Reihenfolge, die funktioniert
- Scannen Sie und lassen Sie das Tool Duplikate anhand des Inhalts und nicht anhand des Namens oder der Größe bestätigen.
- Lesen Sie die Einsparungsschätzung als Spanne ab und prüfen Sie, ob das Tool gemeinsam genutzten Speicher zulässt.
- Erfassen Sie den freien Speicherplatz mit
df -h /System/Volumes/Data. - Über den Papierkorb löschen, eine Kopie pro Gruppe behalten und den Papierkorb leeren.
- Messen Sie erneut und betrachten Sie den Unterschied als Wahrheit.
Wenn Sie die zweite Messung enttäuscht, handelt es sich bei den Dateien um gemeinsam genutzten Speicher und nicht um Verschwendung. Es ging nichts verloren und die Festplatte war bereits kleiner als im Bericht angegeben.
Häufig gestellte Fragen
Warum hat das Löschen von Duplikaten fast keinen Speicherplatz auf meinem Mac freigegeben?
Bei den Kopien handelte es sich vermutlich um Klone oder Hardlinks. Bei APFS können zwei Dateien dieselben Speicherblöcke gemeinsam nutzen. Wenn Sie also eine davon entfernen, werden nur die Blöcke freigegeben, die sich unterscheiden. Der Scanner hat die volle Größe beider Dateien gezählt, da das Dateisystem diese für jeden Namen meldet.
Was ist eine APFS-Klondatei?
Ein Klon ist eine separate Datei mit einem eigenen Inode, der auf dieselben Daten wie das Original verweist. Bei Schreibvorgängen auf beiden Seiten handelt es sich um eine Kopie beim Schreiben, sodass das Paar eine Kopie des Speichers kostet, bis die Inhalte voneinander abweichen. Der Finder-Befehl „Duplicate“ und „cp -c“ erstellen Klone.
Wie unterscheidet sich ein Hardlink von einem Klon?
Ein Hardlink ist ein anderer Name für denselben Inode, sodass es ein Dateiobjekt mit zwei Verzeichniseinträgen gibt. Durch das Löschen eines Namens wird niemals Speicherplatz freigegeben, während ein anderer Name noch darauf verweist. ls -li zeigt die Linkanzahl an und alles über 1 bedeutet, dass andere Namen existieren.
Dedupliziert APFS meine Dateien automatisch?
Nein. APFS gibt Blöcke nur frei, wenn ein Klon explizit erstellt wird, vom Finder, von cp -c oder von einer App, die clonefile aufruft. Zwei Dateien, die identische Bytes enthalten, belegen dennoch zwei Kopien des Speichers.
Wie kann ich messen, wie viel Speicherplatz durch eine Bereinigung tatsächlich freigegeben wurde?
Erfassen Sie den freien Speicherplatz vor und nach dem Löschen mit df -h /System/Volumes/Data und vergleichen Sie ihn. Die von jedem Duplikatfinder ausgegebene Schätzung ist eine Vorhersage, und bei APFS kann die Vorhersage in beide Richtungen falsch sein.
Warum kehrte der freie Speicherplatz nicht zurück, selbst nachdem echte Duplikate gelöscht wurden?
Lokale Snapshots von Time Machine behalten die Blöcke gelöschter Dateien, bis sie ausgedünnt werden, sodass der Speicherplatz als löschbar und nicht als frei angezeigt wird. Listen Sie sie mit tmutil listlocalsnapshots / auf und warten Sie auf die automatische Ausdünnung oder den expliziten freien Speicherplatz.