Ich benutze rsnapshot für Backups, die eine Reihe von Ordnern mit gleichnamigen Dateien erzeugen. Einige der Dateien sind fest miteinander verbunden, während andere getrennt sind. Beispielsweise hourly.1/file1
und hourly.2/file1
möglicherweise fest mit derselben Datei verknüpft, während hourly.1/file2
und hourly.2/file2
vollständig separate Dateien sind.
Ich möchte den vom Ordner hourly.2
belegten Speicherplatz ermitteln, indem ich alle Dateien ignoriere , die feste Links zu Dateien in sind hourly.1
. Im obigen Beispiel möchte ich also die Größe von Datei2 erhalten, aber Datei1 ignorieren.
Ich verwende bash unter Linux und möchte dies so einfach wie möglich über die Befehlszeile tun. Bitte keine großen grafischen oder nur für Betriebssysteme geeigneten Lösungen.
quelle
hourly2
, wird Ihr Befehl eine falsche Antwort ausführen.hourly.2
. Wenn sie dort kopiert werden, haben sie keine zusätzlichen Links und mein Befehl funktioniert. Wenn sie fest miteinander verbunden sind, wird es offensichtlich scheitern. Ich gehe davon aus, dass neue Backup-Dateien kopiert werden.Wenn Sie speziell die Größe der Dateien, die unter,
hourly.2
aber nicht unter vorhanden sindhourly.1
, möchten , können Sie es ein wenig indirekt mit erhaltendu
. Wenndu
dieselbe Datei mehr als einmal verarbeitet wird (auch unter verschiedenen Namen, dh festen Verknüpfungen), wird die Datei nur beim ersten Mal gezählt. Also, worauf esdu hourly.1 hourly.2
ankommt,hourly.2
ist die Größe, nach der Sie suchen. Somit:(Funktioniert auf jedem POSIX-System und den meisten anderen Unix-Varianten. Vorausgesetzt, der Verzeichnisname
hourly.1
enthält keine Zeilenumbrüche.)quelle
Wie @Gilles sagt,
du
können Sie ihm Verzeichnisse in einer Reihe geben , da nur die ersten Hardlinks gezählt werden, die auf denselben Inode verweisen, auf den er stößt:Dh jede Datei in 'hourly.2', die auf eine Inode verweist (auch als "echte" Datei bezeichnet), auf die bereits in 'hourly.1' verwiesen wird, wird nicht gezählt.
quelle
$ du -hcs dirA dirB
Die Builds von BusyBox werden
find
ohne-printf
Unterstützung ausgeliefert. Hier ist eine Änderung der Antwort von @ grebneke :quelle
Einfacher
Beispiel
quelle