2016-05-24 37 views
5

Pracuję nad systemem serwera, który nie pozwala mi przechowywać plików większych niż 50 gigabajtów. Moja aplikacja zajmuje 20 minut, aby wygenerować plik. Czy istnieje sposób, w jaki mogę przenieść wszystkie pliki, które mają więcej niż 30 minut od źródła do miejsca docelowego? Próbowałem rsync:Przenoszenie plików, które mają 30 minut

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

ale nie usuwa plików z mojego serwera, a tym samym ograniczenie składowania nie powiedzie się.

Po drugie, jeśli użyję polecenia mv, pliki, które nadal są generowane, zostaną przeniesione do folderu docelowego, a program zakończy się niepowodzeniem.

+0

O ile wiem, rsync nie usunie pliki z końcem nadawcy i może nawet nie być w stanie wyłowić pliki starsze niż 30 minut. Plik mtime powinien zostać zaktualizowany podczas tworzenia pliku, aby umożliwić wybieranie plików, które nie zostały zmodyfikowane w ciągu ostatnich 30 minut. – louigi600

Odpowiedz

10

Można użyć find wraz z -exec na to: -

Wymień /sourcedirectory i /destination/directory/ ze ścieżek źródłowych i docelowych, jak trzeba.

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

Co w zasadzie komenda nie jest, to próbuje znaleźć pliki w bieżącym folderze -maxdepth 1 że ostatniej modyfikacji: 30 minut temu -mmin -30 i przenieść je do określonego katalogu docelowego. Jeśli chcesz użyć czasu ostatniego dostępu do pliku, użyj -amin -30.

Jeśli chcesz znaleźć pliki zmodyfikowane w ramach zakresu, możesz użyć czegoś takiego jak -mmin 30 -mmin -35, dzięki czemu pliki zostaną zmodyfikowane ponad 30, ale mniej niż 35 minut temu.

Referencje od strony man: -

-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 !! zadziałało :) – saurabh