2016-05-24 3 views
5

Я работаю над серверной системой, которая не позволяет хранить файлы более 50 гигабайт. Мое приложение занимает 20 минут, чтобы сгенерировать файл. Есть ли способ, по которому я могу переместить все файлы, которые старше 30 минут из источника в пункт назначения? Я попытался rsync:Переместить файлы в 30 минут

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

, но это не удаляет файлы с моего сервера и, следовательно, предел хранения терпит неудачу.

Во-вторых, если я использую команду mv, файлы, которые все еще генерируются, также перемещаются в папку назначения, и программа выходит из строя.

+0

Насколько я знаю, Rsync не будет удалять файлы с конца отправителя, и он не может даже быть в состоянии выбрать файлы старше, то 30 минут. Файл mtime должен обновляться по мере создания файла, чтобы вы могли выбирать файлы, которые не были изменены за последние 30 минут. – louigi600

ответ

10

Вы можете использовать find вместе с -exec для этого: -

Заменить /sourcedirectory и /destination/directory/ с пути источника и цели, как вам нужно.

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

Что в основном команда делает это, он пытается найти файлы в текущей папке -maxdepth 1 что последнее изменение 30 минут назад -mmin -30 и переместить их в целевом каталог, указанном. Если вы хотите использовать время последнего обращения к файлу, используйте -amin -30.

Или, если вы хотите найти файлы, измененные в пределах диапазона, вы можете использовать что-то вроде -mmin 30 -mmin -35, которое даст вам файлы, измененные более 30, но менее 35 минут назад.

Ссылки из 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 !! это сработало :) – saurabh

Смежные вопросы