2016-05-24 10 views
5

Ich arbeite an einem Serversystem, das mir nicht erlaubt, Dateien mehr als 50 Gigabyte zu speichern. Meine Anwendung benötigt 20 Minuten, um eine Datei zu erstellen. Gibt es eine Möglichkeit, alle Dateien, die älter als 30 Minuten sind, von der Quelle zum Ziel zu verschieben? Ich habe versucht, rsync:Verschiebe Dateien, die 30 Minuten alt sind

rsync -avP source/folder/ [email protected]:dest/folder 

aber nicht entfernen Sie die Dateien von meinem Server und damit die Speichergrenze ausfällt.

Zweitens, wenn ich den Befehl mv verwenden, werden die Dateien, die noch generiert werden, auch in den Zielordner verschoben und das Programm schlägt fehl.

+0

Soweit ich weiß, rsync entfernt keine Dateien vom Sender Ende und es könnte nicht einmal in der Lage sein, Dateien auszuwählen älter als 30 Minuten. Die Datei mtime sollte während der Erstellung der Datei aktualisiert werden, damit Sie Dateien auswählen können, die in den letzten 30 Minuten nicht geändert wurden. – louigi600

Antwort

10

können Sie find verwenden zusammen mit -exec hierfür: -

ersetzen /sourcedirectory und /destination/directory/ mit den Quell- und Zielpfade, wie Sie benötigen.

find /sourcedirectory -maxdepth 1 -mmin -30 -type f -exec mv "{}" /destination/directory/ \; 

Was im Grunde der Befehl tut, ist, es versucht, Dateien im aktuellen Ordner finden -maxdepth 1 die letzten 30 Minuten geändert wurden vor -mmin -30 und sie in das Zielverzeichnis angegeben bewegen. Wenn Sie die Uhrzeit verwenden möchten, auf die zuletzt zugegriffen wurde, verwenden Sie -amin -30.

Oder wenn Sie Dateien in einem Bereich geändert möchten, können Sie etwas wie -mmin 30 -mmin -35 verwenden, die Sie die Dateien mehr als 30, aber weniger als 35 Minuten vor geändert erhalten.

Referenzen aus der man Seite: -

-amin n 
      File was last accessed n minutes ago. 

    -atime n 
      File was last accessed n*24 hours ago. When find figures out how many 24-hour periods ago the file was last accessed, any fractional part is ignored, so to match -atime 
      +1, a file has to have been accessed at least two days ago. 

    -mmin n 
      File's data was last modified n minutes ago. 

    -mtime n 
      File's data was last modified n*24 hours ago. See the comments for -atime to understand how rounding affects the interpretation of file modification times. 
+0

Bravo !! es funktionierte :) – saurabh

Verwandte Themen