Ich möchte alle Dateien in einem Verzeichnis finden, die sich innerhalb von 24 Stunden befinden, und diese Dateien dann mit einem anderen Server synchronisieren.
Es gibt einige alte Dateien, die ich nicht übertragen möchte. Wenn diese alten Dateien jedoch aktualisiert werden, tue ich dies.
Ich habe darüber nachgedacht, ein Skript mit: find und dem Parameter -ctime zu schreiben und diese Ausgabe in eine Datei umzuleiten, aber ich weiß nicht, wie ich rsync dazu bringen kann, dies effektiv zu nutzen, oder ob es eine bessere Möglichkeit gibt, eine Reihe von zu übertragen Dateien, die sich in den letzten 24 Stunden geändert haben.
Dieser Prozess muss sehr häufig ausgeführt werden, daher suche ich nicht nach etwas zu Ineffizientem. (wie z. B. FTP verwenden und jedes Mal alles senden).
Irgendwelche Ideen geschätzt.
--include-from
nicht genug zu sein, da das Standardverhalten darin besteht, alles einzuschließen. Sie müssen es allen explizit mitteilen, damit--exclude
es sich wie eine weiße Liste verhält.Antworten:
Versuche dies:
Es verwendet Process Substitution
<( )
, um denfind
Befehl durch ein benanntes FIFO zu ersetzen, und gibt den Namen dieses Fifos an, umrsync
zu lesen, was in die Synchronisierung aufgenommen werden soll.Aktualisieren
In Anbetracht von Kyles Antwort scheint es definitiv
--files-from
angemessener zu sein als--include-from
; obwohl beide funktionieren werden. Antwort aktualisiertquelle
rsync
ist ein unidirektionales Einweg-Synchronisationssystem. Verwenden Sieunison
diese Option, wenn ein bidirektionales bidirektionales Synchronisierungssystem erforderlich ist.Dieses Skript führt find in $ LOCALDIR aus, speichert die Ergebnisse in einer Datei und weist rsync an, den Dateiinhalt als Liste von Dateien zu verwenden, die in das Verzeichnis $ REMOTEDIR auf dem Host $ REMOTEHOST übertragen werden sollen. Das Skript chdir ist in $ LOCALDIR enthalten, da der Befehl rsync relative Pfade benötigt, keine absoluten. Ich habe -v -n in den rsync-Argumenten belassen, damit Sie sehen können, was dies bewirkt, ohne etwas zu kopieren. Entfernen Sie -n, wenn Sie zufrieden sind. Das Skript macht, was Sie wollen.
quelle