Inotify wait Копирование скрипта, повреждающее изображения

Итак, у меня запущен этот скрипт с использованием inotifywait. Один сервер помещает образы в папку NFS на хост-сервере по адресу /var/nfs/device_images. (chmod - 777 для рабочих папок). Затем хост-сервер перемещает его в рабочий каталог скрипта Python.

inotifywait -m /var/nfs/device_images -e create -e moved_to | while read path action file; do cp /var/nfs/drvie_images/$file /home/samuel/programname/images/$file; done

Это работает, вроде. Сам файл переносится, но он поврежден. Кажется, inotifywait пытается отправить фотографию до того, как она будет полностью передана? У кого-нибудь есть решение?

1 ответ

Решение

create событие будет инициировано, как только файл будет создан, даже до того, как он будет полностью записан, что будет выглядеть так, как будто изображения повреждены

Один из способов решить эту проблему - сделать inotifywait слушать только move событие и заставляя сервер, который заполняет /var/nfs/device_images создать файлы во временном каталоге и переместить их в /var/nfs/device_images по окончании.

Вы можете указать temp каталог для большинства утилит, которые используются для захвата файлов, таких как rsync / wget

Другие вопросы по тегам