传输完成后移动文件夹中的新文件

传输完成后移动文件夹中的新文件

我会租一台服务器。有些人会将一些文件上传到他们分配的文件夹(我正在考虑使用sftp),当文件传输完成时,我想将其移动到服务器中我的文件夹中。我可以使用 检测是否有新文件watch,但是当传输开始时,该文件会出现在那里,并且我的脚本会立即移动它,因此在文件传输完成之前。我怎样才能防止这种情况发生?如何编写一个脚本来了解传输已完成?可以sftp创建日志吗?也许我可以尝试检测该日志以移动文件。先感谢您。

答案1

使用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

相关内容