найти и rsync?

24

Я хочу иметь возможность искать файлы в течение 14 дней и более 10 КБ, а затем rsync эти найденные файлы до места назначения.

Есть ли способ объединить эти две команды?

find ./ -mtime +14 -size +10k 
rsync --remove-sent-files -avz /src /dest
mkrouse
источник

Ответы:

33

Вы можете отправить вывод find в rsync, используя один из вариантов, описанных ниже.

Способ № 1

Эти 2 параметра очень похожи, они оба предполагают, что вы меняете каталоги на какое-то место и затем запускаете findкоманду оттуда.

$ rsync -avz --remove-sent-files \
        --files-from=<(find ./ -mtime +14 -size +10k) ./ /dest

Вы также можете использовать канал для подачи списка в:

$ find ./ -mtime +14 -size +10k -print0 \
        | rsync -av --files-from=- --from0 ./ /dest

Способ № 2

Этот метод может быть запущен из любого места.

$ find /src/dir/ -mtime +14 -size +10k -printf %P\\0 \
        | rsync --files-from=- --from0 /src/dir/ /dst/dir/
  • printf %P: Имя файла с именем аргумента командной строки, под которым он был найден, удалено. Таким образом, вы можете использовать любой каталог src, не нужно сначала заходить в ваш каталог src.

Ссылки

SLM
источник