Inotify wait Копировать скрипт, испортить изображения - PullRequest
0 голосов
/ 02 июля 2018

Итак, у меня запущен этот скрипт с использованием 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 Ответ

0 голосов
/ 02 июля 2018
Событие

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

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

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

...