copy_only_missing? - Kopiert von /A nach /C, nur die Pfade, die in /B und /C fehlen - kurze Anleitung

copy_only_missing? - Kopiert von /A nach /C, nur die Pfade, die in /B und /C fehlen - kurze Anleitung

Ich möchte kopieren von/AZu/Cnur Pfade fehlen auf/BUnd/C. (Bitte gehen Sie davon aus, dass es sich dabei um Pfade handelt und dass diese auch entfernte Standorte darstellen können, die z. B. über eingebunden wurden sshfs.)

Ich wundere mich...Gibt es einen prägnanteren Weg, als eine Schleife zu schreiben, das Dateisystem zu durchlaufen und eine Prüfung Datei für Datei durchzuführen?

Beispielinhalte von Baumverzeichnissen/A,/B,/C:

/A:

/A/1abc/qwe
/A/2abc/asd
/A/3abc/zxc
/A/4abc/rty

/B:

/A/2abc/asd
/A/3abc/zxc

/C:

/C/1abc/qwe

erwartet: kopieren von/AZu/Ceinziger Pfad 4abc/rty:

/A/4abc/rty -> /C/4abc/rty

Zur Veranschaulichung praktischer Beispiele von/A,/B,/C, was zu folgendem Szenario führt:

  • Sie erstellen ein Backup, kopieren von einigen/Quelle(/A) für manchen/Ziel(/B) und einige Pfade konnten nicht kopiert werden. Sie möchten also sowieso eine Kopie der fehlenden Pfade haben. Sie finden also/ein anderes_Ziel(/C), die sie akzeptieren können, und Sie möchten nur fehlende kopieren. Hier sind Beispiele für Einschränkungen, warum Sie von kopieren sollten/AZu/Bkönnte fehlschlagen: Festplatte ist voll; Einschränkung des Dateisystems von/B(wie Dateinamenlänge), obwohl nicht vorhanden auf/CDateisystem usw.

Antwort1

Eine Lösung besteht darin, eineAnschlussmontagevon B und C mit C als Schreibzweig. Dann reduziert sich das Problem auf das Kopieren von nur den Dateien, die auf B+C fehlen, von A nach B+C. Dies kann mit

rsync -a --ignore-existing /A /B+C

Für die Union Mount ist eine MöglichkeitUnionFS-Sicherung.

unionfs-fuse -o cow /C=RW:/B=RO /B+C

Oder unionfs:

mount -t unionfs -o dirs=/C=rw:/B=ro unionfs /B+C 

verwandte Informationen