Meine Frage ist es, viele Dateien aus vielen Verzeichnissen in nur einem Verzeichnis zu speichern, indem alle alten Versionen der Dateien beibehalten werden. Ich habe ungefähr 10 Verzeichnisse mit sehr ähnlichen Dateien (10 Sicherungsverzeichnisse, die unter Linux, Windows und MacOS erstellt wurden). Ich möchte diese 10 Verzeichnisse in nur einem verketten. Zum Beispiel habe ich 3 Verzeichnisse a, b und c mit folgendem Inhalt:
ein
- fileA.txt (Datum 10.10.2012)
- fileB.txt (Datum 12.10.2012)
- fileC.txt (Datum 05.01.2013)
b
- fileA.txt (Datum 01.10.2013)
- fileB.txt (Datum 02.10.2013)
- fileC.txt (Datum 05.01.2013)
- fileD.txt (Datum 05.02.2013)
c
- fileA.txt (Datum 10.10.2012)
- fileB.txt (Datum 02.12.2013)
Das resultierende Verzeichnis muss sein:
- fileA.txt (Datum 01.10.2013 von b)
- fileA.txt_20121010hhmmss (von a und c (gleiche Datei))
- fileB.txt (Datum 12/02/2013 von c)
- fileB.txt_20121210hhmmss (von a)
- fileB.txt_20130210hhmmss (von b)
- fileC.txt (Datum 05.01.2013 von a und b (gleiche Datei))
- fileD.txt (Datum 05.02.2013 von b)
hh = Stunden mm = Minuten ss = Sekunden
Derzeit arbeite ich an einem Perl-Skript, das die Dateien mit der Funktion "compare" und einer MD5-Prüfsumme vergleichen kann.
Um das Änderungsdatum zu finden (wenn die Dateien unterschiedlich sind), verwende ich die Metadaten (wenn ich kann) mit Exiftool (nur wenige kompatible Dateien wie docx, ppt pdf jpg ...), andernfalls verwende ich den Zeitstempel mit dem Befehl stat .
Die Datei ohne die hinzugefügte Erweiterung muss die aktuellste aller Dateien mit demselben Namen sein.
Das Perl-Skript ist sehr langsam und komplex, daher suche ich nach einer stabileren Lösung.
Danke für deine Hilfe.
NB: - Ich möchte diese Lösung auf einem Synology Server (DS212) verwenden, auf dem ich nur wirklich wenige klassische Shell-Befehle habe. Bei Bedarf kann ich diese Dateien auf einen Linux- (oder OSX-) Computer kopieren, um dies zu tun.
Antworten:
Lösung:
Sicherungsdateien im Verzeichnis "result".
Wie es funktioniert (Beispiel):
quelle