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

Я использую следующую команду для копирования файлов, созданных в последнюю минуту. Я назначил скрипт, который содержит эту команду, запускать каждую минуту, чтобы файлы можно было скопировать, как только файл будет создан в местоположении 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 - странное сообщение
  • linux shell: find -exec в find -exec
  • Почему вывод поиска отсортирован в Cygwin, но не в Solaris?
  • Как напечатать имя базового файла, используя find в Unix?
  • Найти изображения по размеру: find / file / awk
  • найти каталоги, не содержащие файл
  • rm не удаляет файл, считает его каталог
  • Разница между ctime 1 и ctime +1 в команде find
  • Как найти номер inode с помощью команды «find»?
  • Почему find -inum перебирает все дерево файловой системы?
  • Найти все измененные файлы svn и скопировать файлы, измененные в одной структуре папок
  • Interesting Posts

    Bash, когда нужно использовать $ @, "$ @" и $ {1 + "$ @"}

    Идентификация запущенных программ, которые используют старую версию библиотеки, которую я только что заменил

    Как я могу расшифровать мой зашифрованный / домашний раздел?

    Когда вам нужно «… при чтении …»?

    Обновление программного обеспечения Fedora GUI несовместимо с обновлением командной строки dnf

    Установите программу чтения PDF по умолчанию

    Планирование команды / скрипта, указав точное второе

    urksvt map esc ключ к последовательности клавиш

    Как включить и использовать сводку кода в Vim?

    негладкие шрифты в гноме Fedora

    Определение средних значений, stdev, stderror и counts значений в списке

    менее в сочетании с последовательными цветовыми последовательностями предотвращает разрывы страниц

    Могу ли я ускорить обмен, используя несколько жестких дисков?

    Отслеживание использования огромного буфера в Linux

    Как заставить низкое ssh-шифрование

    Linux и Unix - лучшая ОС в мире.