首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在完成传输时将新文件移动到文件夹中

在完成传输时将新文件移动到文件夹中
EN

Unix & Linux用户
提问于 2019-11-10 10:41:52
回答 1查看 1.1K关注 0票数 2

我会租一台服务器。有些人会将一些文件上传到他们分配的文件夹中(我正在考虑使用sftp),在文件传输完成后,我想将它移到服务器中的文件夹中。我可以用watch检测是否有新文件,但是当传输开始时,文件会出现在那里,我的脚本会立即移动它,所以在文件传输完成之前。我怎么才能阻止这一切?我如何写一个脚本来理解传输是如何完成的?sftp可以创建一个日志吗?也许我可以试着检测到那个日志来移动文件。提前谢谢你。

EN

回答 1

Unix & Linux用户

回答已采纳

发布于 2019-11-10 11:38:16

使用inotifywait可以实现您所追求的目标--它能够在执行命令之前等待文件写入完成。

以下内容将持续监视新文件的文件夹,并在写入文件时在循环中执行命令。

代码语言:javascript
运行
复制
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

票数 3
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/551389

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档