Ich arbeite an einem rsync
Skript für die Verzeichnisreplikation. Ich synchronisiere nur neue und geänderte Dateien oder Verzeichnisse, aber es gefällt mir nicht, dass beim Kopieren umbenannter Dateien oder Verzeichnisse eine neue Datei oder ein neues Verzeichnis erstellt wird, wodurch die Dateien nicht synchron bleiben. Ich habe außerdem eine Bandbreitenbeschränkung von 1 MB festgelegt, da diese während der Geschäftszeiten ausgeführt wird. Hier ist mein Drehbuch:
rsync -zvru --bwlimit=1024 /mymounts/test1/ /mymounts/test2
Wie kann ich Dateien und Verzeichnisse synchron halten, wenn jemand etwas umbenennt und nur neue oder geänderte Dateien kopiert? Hier sind die fraglichen Dateien
ls "/mymounts/test1/some stuff"
new directory newfile1.txt newfile3.txt renamedFile.txt
ls "/mymounts/test2/some stuff"
new directory newfile1.txt newfile2.txt newfile3.txt renamedFile.txt
Oder gäbe es eine Möglichkeit, um auch die umbenannten Dateien in einem anderen Verzeichnis zu verschieben sagen:
/mymounts/VerControl
?
rsync
Basisartikel, das FWIW. everythinglinux.org/rsyncMöglicherweise möchten Sie sich die
-y | --fuzzy
Option rsync ansehen . Ansonsten kann rsync keine Umbenennungen nachverfolgen, sodass Sie die umbenannten Dateien übertragen.Aus der rsync-Manpage:
quelle
--fuzzy
eine Kopplung in Betracht ziehen sollten--delete-delay
, da "rsync standardmäßig a ausführt--delete-before
und somit die Basisdatei entfernt, bevor sie kopiert / verschoben werden kann" . Quelle: Sonia HamiltonDas kannst du nicht.
Rsync hat drei Modi,
Diese drei Modi haben jedoch zwei Unterkategorien:
Rsync verfolgt nicht, welche Dateien umbenannt werden, es hat keinen Status. Kopieren Sie stattdessen alle Dateien und schließen Sie diejenigen aus, die Sie nicht möchten. Sie können keine Shifting-Whitelist haben, Sie können eine Blacklist haben.
quelle
date +%Y%m%d%k%M%S
trotzdem kann ich das Suffix bekommen =date +%Y%m%d%k%M%S
.ORIGINALSUFFIX?Soweit ich weiß,Siehe artyoms Antwort.rsync
erkennt nicht die neuen Dateien von Umbenennen von Dateien haben wird erneut übertragen.Verwenden Sie die
--delete
Option , um die gelöschten Dateien zu löschen .Für das Spiegeln empfehle ich außerdem
-a
( archive ), das einige nette Optionen enthält.Schauen Sie sich die
man 1 rsync
Details an.quelle