Ich habe eine alte Sicherungskopie von Dokumenten. In meinem aktuellen Documents
Verzeichnis befinden sich viele dieser Dateienan verschiedenen Orten mit unterschiedlichen Namen. Ich versuche, einen Weg zu finden, um anzuzeigen, welche Dateien im Backup vorhanden sind, dienichtim Documents
Verzeichnis vorhanden sein, vorzugsweise schön und GUI-artig, so dass ich leicht einen Überblick übervielvon Dokumenten.
Wenn ich nach dieser Frage suche, suchen viele Leute nach Möglichkeiten, das Gegenteil zu tun. Es gibt Tools wieFSlintUndDupeGuru, aber sie zeigen Duplikate. Es gibt keinen Invertierungsmodus.
Antwort1
Wenn Sie bereit sind, die CLI zu verwenden, sollte der folgende Befehl für Sie funktionieren:
diff --brief -r backup/ documents/
Dadurch werden Ihnen die Dateien angezeigt, die für jeden Ordner eindeutig sind. Wenn Sie möchten, können Sie auch die Groß- und Kleinschreibung von Dateinamen ignorieren, indem Sie--ignore-file-name-case
Als Beispiel:
ron@ron:~/test$ ls backup/
file1 file2 file3 file4 file5
ron@ron:~/test$ ls documents/
file4 file5 file6 file7 file8
ron@ron:~/test$ diff backup/ documents/
Only in backup/: file1
Only in backup/: file2
Only in backup/: file3
Only in documents/: file6
Only in documents/: file7
Only in documents/: file8
ron@ron:~/test$ diff backup/ documents/ | grep "Only in backup"
Only in backup/: file1
Only in backup/: file2
Only in backup/: file3
Wenn Sie darüber hinaus nur dann berichten möchten, wenn die Dateien sich unterscheiden (und nicht den tatsächlichen „Unterschied“), können Sie die --brief
folgende Option verwenden:
ron@ron:~/test$ cat backup/file5
one
ron@ron:~/test$ cat documents/file5
ron@ron:~/test$ diff --brief backup/ documents/
Only in backup/: file1
Only in backup/: file2
Only in backup/: file3
Files backup/file5 and documents/file5 differ
Only in documents/: file6
Only in documents/: file7
Only in documents/: file8
Es gibt mehrere visuelle Diff-Tools, die meld
dasselbe können. Sie können es meld
aus dem Universe-Repository installieren, indem Sie:
sudo apt-get install meld
und verwenden Sie die Option „Verzeichnisvergleich“. Wählen Sie den Ordner aus, den Sie vergleichen möchten. Nach der Auswahl können Sie sie nebeneinander vergleichen:
fdupes
ist ein hervorragendes Programm zum Auffinden doppelter Dateien, listet aber nicht die nicht doppelten Dateien auf, nach denen Sie suchen. Wir können jedoch die Dateien auflisten, die nicht in der fdupes
Ausgabe enthalten sind, indem wir eine Kombination aus find
und verwenden grep
.
Das folgende Beispiel listet die Dateien auf, die eindeutig sind für backup
.
ron@ron:~$ tree backup/ documents/
backup/
├── crontab
├── dir1
│ └── du.txt
├── lo.txt
├── ls.txt
├── lu.txt
└── notes.txt
documents/
├── du.txt
├── lo-renamed.txt
├── ls.txt
└── lu.txt
1 directory, 10 files
ron@ron:~$ fdupes -r backup/ documents/ > dup.txt
ron@ron:~$ find backup/ -type f | grep -Fxvf dup.txt
backup/crontab
backup/notes.txt
Antwort2
Ich hatte das gleiche Problem mit vielen sehr großen Dateien und es gibt viele Lösungen für Duplikate, aber nicht für die invertierte Suche, und ich wollte aufgrund der großen Datenmenge auch nicht nach Inhaltsunterschieden suchen.
Also habe ich dieses Python-Skript geschrieben, um nach „isolierten Dateien“ zu suchen.
isolated-files.py --source folder1 --target folder2
Dadurch werden alle Dateien (rekursiv) in Ordner2 angezeigt, die sich nicht in Ordner1 befinden (ebenfalls rekursiv). Kann auch bei SSH-Verbindungen und mit mehreren Ordnern verwendet werden.
Antwort3
Ich habe herausgefunden, dass der beste Workflow zum Zusammenführen alter Backups mit Tausenden von Dateien, die in verschiedenen Verzeichnissen mit unterschiedlichen Namen archiviert sind, die Verwendung vondupeGuruSchließlich sieht es sehr ähnlich aus wie dasDuplikateRegisterkarte vonFSlint, aber es hat die zusätzliche wichtige Funktion der Hinzufügung von Quellen als'Referenz'.
- Fügen Sie Ihr Zielverzeichnis (z. B.
~/Documents
) alsReferenz.- AReferenzist schreibgeschützt und es werden keine Dateien entfernt
- Fügen Sie Ihr Backup-Verzeichnis hinzu alsnormal.
- Duplikate suchen. Entfernen Sie alle gefundenen Duplikate aus dem Backup.
- Im Backup-Verzeichnis verbleiben nur eindeutige Dateien. Verwenden SieKostenloseFileSyncoderMeldenum diese zusammenzuführen, oder führen Sie sie manuell zusammen.
Wenn Sie mehrere alte Backup-Verzeichnisse haben, ist es sinnvoll, zuerst das neueste Backup-Verzeichnis wie dieses zusammenzuführen und dann dieses Backup-Verzeichnis alsReferenzum die Duplikate aus den älteren Backups zu bereinigen, bevor sie in das Hauptdokumentverzeichnis eingefügt werden. Dies spart einevielder Arbeit, bei der Sie keine eindeutigen Dateien entfernen müssen, die Sie in den Papierkorb legen möchten, anstatt sie aus den Backups zusammenzuführen.
Denken Sie daran, ein neues Backup zu erstellen, nachdem Sie dabei alle alten Backups zerstört haben. :)
Antwort4
jdupes
hat hierfür zwei nützliche Optionen: -I --isolate
und -u --print-unique
.
Um beispielsweise nur eindeutige Dateien im backup
Verzeichnis aufzulisten:
jdupes -Iru Documents backup |grep '^backup