знайти та rsync?


24

Я хочу мати змогу шукати файли протягом 14 днів і більше 10 тис., А потім rsync тих знайдених файлів за призначенням.

Чи є спосіб поєднати ці дві команди?

find ./ -mtime +14 -size +10k 
rsync --remove-sent-files -avz /src /dest

Відповіді:


33

Ви можете надіслати вихід знаходження в rsync, скориставшись одним із варіантів, наведених нижче.

Спосіб №1

Ці два варіанти дуже схожі, вони обидва припускають, що ви змінюєте каталоги на якесь місце, а потім виконуєте 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, не потрібно спочатку вводити CD у свій каталог src.

Список літератури

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.