Команда «Поиск» не может скопировать несколько файлов

Я использую следующую команду для копирования файлов, созданных в последнюю минуту. Я назначил скрипт, который содержит эту команду, запускать каждую минуту, чтобы файлы можно было скопировать, как только файл будет создан в местоположении a / b / c. Но, как-то эта команда не может копировать один или несколько файлов. Есть ли недостаток в команде find? или есть ли ошибка в следующей команде?

find /a/b/c -type f -mmin -1 -exec cp {} /x/y/z \; 

One Solution collect form web for “Команда «Поиск» не может скопировать несколько файлов”

Вы можете использовать find с флагом timestamp, чтобы он собирал все файлы с момента последнего запуска, независимо от того, как давно это было. Не стесняйтесь заменить определение $trigger на что-то более подходящее.

 trigger=/tmp/trigger touch "$trigger.new" test ! -f "$trigger" && touch "$trigger" find /a/b/c -newer "$trigger" -type f -exec cp -f {} /x/y/z + mv -f "$trigger.new" "$trigger" 

Это все равно не удастся в ситуациях, когда mtime сбрасывается после того, как файл был полностью записан.

Он также будет терпеть неудачу, если исходный файл записывается при запуске этого кода. Было бы неплохо защититься от этого сценария, если вы не можете гарантировать, что исходные файлы будут отображаться атомарно. Один из способов обращения с этим заключается в том, что ваши файлы должны быть записаны с .tmp (или .part ) и переименованы отправителем только по завершении. find в этом триггерном скрипте здесь будет изменен, чтобы исключить файлы, имена которых заканчиваются на .tmp (или .part ).

Вы также можете использовать rsync , но имейте в виду, что пути каталога в источнике будут скопированы в пункт назначения, что может и не быть тем, что вы хотите. Замените фрагмент выше этой единственной строкой:

 rsync -a /a/b/c/ /x/y/z/ 
  • Плохая замена при переименовании файлов с помощью find
  • Расшифруйте несколько файлов с защитой паролем и pdf
  • Получение размера только для файлов du
  • Скрипт оболочки, find -name и расширение подстановочного знака
  • Как найти все файлы, кроме PNG, расширения JPG?
  • параметр двойного кавычки (представляющий имя файла) не помогает, если в нем содержатся пробелы
  • Ускорение команды поиска rm с проверкой путем распараллеливания
  • Найти-grep для списка файлов .tex?
  • Запрос на отображение файлов UNIX, созданных на определенную метку времени
  • найти с несколькими вариантами -exec; redirecting &> / dev / null для одной команды exec отправляет процесс в фоновый режим
  • Что означает «размер в 512-байтных блоках»?
  • Linux и Unix - лучшая ОС в мире.