2010-11-23 6 views
2

Das Ziel besteht darin, rsync (oder andere Tools, die das gewünschte Ergebnis liefern) nur Dateien zu erstellen, die nach einem Datum erstellt oder geändert werden.rsync nur Dateien, die nach einem Datum und einer Uhrzeit erstellt oder geändert wurden

gelang es mir mit diesem Befehl auf OS X 10.6.5: find . -newermt "2010-11-23 16:52:50" -type f -exec rsync -vuptn '{}' ../rsync_test/ ';' Ich glaube nicht, -newermt obwohl auf ohter OS als OS X funktioniert.

Das Problem mit diesem Befehl ist, dass Rsync einmal pro Datei ausgeführt wird und das scheint nicht der richtige Weg zu sein. Ich habe versucht, die letzte ; mit einer + so zu ändern, dass es auf die gesamte Dateiliste wartet, aber es bremst (ich habe versucht "+", \+ und andere Wege zu entkommen).

Hintergrund: Ich versuche, meine Dateien an einem Remote-Speicherort zu sichern. Die Dateien sind viele Fotos in rohen und anderen Format (Fotos arbeiten. Etwa 30 GB pro Tag), rsync'ing obwohl das Netzwerk würde unbrauchbare Zeit wegen der kleinen Upload-Bandbreite (ADSL saugt). Die Idee ist also, viel Speicherplatz an einem entfernten Ort zu haben und neue/geänderte Dateien einmal wöchentlich auf einer kleinen externen Festplatte zu transportieren. rsync kann dann einfach verwendet werden, um die neuen/geänderten Dateien am entfernten Standort hinzuzufügen. Dafür muss ich die neuen/geänderten Dateien auf einer externen Festplatte während der Woche synchronisieren, so dass ich immer zwei Kopien jeder Datei an einem entfernten Ort für Dateien, die älter als eine Woche sind, oder auf einer externen Festplatte für neue/geänderte Dateien habe seit dem letzten Transport.

Ich wollte diesen Befehl alle 10 Minuten (Cron) mit dem Datum und der Zeit von der letzten Zeit ausgeführt ausführen.

Können Sie meinen Befehl beheben? Oder haben Sie eine noch bessere Lösung?

Antwort

3

Ich schrieb die Frage erneut unter Server Fault und bekam die Antwort, die ich brauchte.

Die --files-from=FILE Option kann in der Tat mit einem - verwendet werden, so dass es die Standardeingabe (wo der find Befehl verwendet werden kann und dann piped zu rsync). Sehen Sie sich die Server Fault-Antwort für weitere Details an.

0

Ich weiß nicht, welche Plattform Sie verwenden möchten, aber wenn Sie dies in Powershell tun wollten, könnten Sie den folgenden Befehl verwenden.

get-childitem -Recurse | where-object {$_.LastWriteTime -gt "2010/11/23 00:00:00"} 

Um rsync zu tun, was Sie wollen, dass es, wie Sie eine Liste der Dateien zu erzeugen, gehst zu haben, sieht (entweder von Ihrem Befehl oder meinem Kommando) und dann die --files-verwenden = FILE Option in rsync (also wird es zwei Befehle sein)

+0

Danke für Ihre Antwort. Die Plattform ist OS X, aber die Antwort, die ich gefunden habe, sollte auf jedem Unix-ähnlichen System funktionieren. Die Verwendung der Option --files-from war der richtige Weg, wie Sie in meiner Antwort sehen können. – Yanik

0

Rsync sollte nicht die Dateien standardmäßig löschen, so können Sie nur die kleinere Festplatte rsync auf das größere Laufwerk und rsync wird kopieren und aktualisieren Sie alle Dateien, aber es wird nicht löschen fehlende Dateien. Wenn es immer noch zu löschen scheint, können Sie die --max-delete=0 Optionen versuchen. Vielleicht wird das funktionieren.