所以我使用 inotifywait 运行了这个脚本。一台服务器将图像放入位于/var/nfs/device_images 的主机服务器上的 NFS 文件夹中。 (工作文件夹上的 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 试图在照片完全传输之前发送照片?有人有解决办法吗?
最佳答案
create
事件会在文件被创建时立即触发,甚至在它被完全写入之前,使它看起来像图像已损坏
解决这个问题的一种方法是让 inotifywait
只监听 move
事件并强制服务器填充 /var/nfs/device_images
在临时目录中创建文件,并在完成后将其移动到 /var/nfs/device_images
。
您可以为大多数用于抓取文件的实用程序指定 temp
目录,例如 rsync
/wget
关于python - Inotify 等待复制脚本损坏图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51140416/