我会租一台服务器。有些人会将一些文件上传到他们分配的文件夹中(我正在考虑使用sftp
),在文件传输完成后,我想将它移到服务器中的文件夹中。我可以用watch
检测是否有新文件,但是当传输开始时,文件会出现在那里,我的脚本会立即移动它,所以在文件传输完成之前。我怎么才能阻止这一切?我如何写一个脚本来理解传输是如何完成的?sftp
可以创建一个日志吗?也许我可以试着检测到那个日志来移动文件。提前谢谢你。
发布于 2019-11-10 11:38:16
使用inotifywait
可以实现您所追求的目标--它能够在执行命令之前等待文件写入完成。
以下内容将持续监视新文件的文件夹,并在写入文件时在循环中执行命令。
WATCH_DIR=/directory/to/monitor
DEST_DIR=/x/y/z
/usr/bin/inotifywait --recursive --monitor --quiet -e moved_to -e close_write --format '%w%f' "$WATCH_DIR" | while read -r INPUT_FILE; do
mv "$0" "$DEST_DIR"
done
有关更多配置选项,请参见https://linux.die.net/man/1/inotifywatch
https://unix.stackexchange.com/questions/551389
复制相似问题