So finden Sie Dateien, die kein Duplikat in einem separaten Verzeichnis haben

So finden Sie Dateien, die kein Duplikat in einem separaten Verzeichnis haben

Ich habe eine alte Sicherungskopie von Dokumenten. In meinem aktuellen DocumentsVerzeichnis 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 DocumentsVerzeichnis 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 --brieffolgende 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 melddasselbe können. Sie können es meldaus 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:

Bildbeschreibung hier eingeben

fdupesist 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 fdupesAusgabe enthalten sind, indem wir eine Kombination aus findund 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.

sehenhttps://github.com/ezzra/isolated-files

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'.

  1. Fügen Sie Ihr Zielverzeichnis (z. B. ~/Documents) alsReferenz.
    • AReferenzist schreibgeschützt und es werden keine Dateien entfernt
  2. Fügen Sie Ihr Backup-Verzeichnis hinzu alsnormal.
  3. Duplikate suchen. Entfernen Sie alle gefundenen Duplikate aus dem Backup.
  4. 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

jdupeshat hierfür zwei nützliche Optionen: -I --isolateund -u --print-unique.

Um beispielsweise nur eindeutige Dateien im backupVerzeichnis aufzulisten:

jdupes -Iru Documents backup |grep '^backup

verwandte Informationen