inotify:如何在传输完成后通知目录中的新文件
inotify : How to be notified of new files in the directory after they are complete in transfer?
文件从machine1/dir1复制到machine2/dir2。我在dir2上为创建的任何新文件添加了一个inotify手表。现在,如果文件很大,可能需要几秒钟的时间才能完全放到新机器上。如果我没有错,inotify会在检测到事件后立即通知应用程序。因此,如果必须检查文件状态,应该如何进行?
用临时文件名保存下载的文件(或保存到其他目录),并在文件成功移动时将其重命名为预期文件名。
例如,Nginx使用此方法存储缓存的数据缓存数据首先写入临时文件,然后移动到缓存目录中的最终位置。执行廉价的原子重命名系统调用而不是完整的文件副本因此最好在两个位置使用相同的文件系统
没有办法回答这个问题,因为它取决于应用程序环境和需求。它可能会看到文件已经60秒没有被修改了。可能需要每隔几秒钟检查一次。这取决于情况。
如果IN_CLOSE_WRITE只是从一台机器到另一台机器的scp,则使用它有效。否则,这取决于文件从一台机器上传到另一台机器的方式。如果是一次打开和关闭,则IN_close_WRITE是执行此操作的方法。
以上两个答案都有意义,这取决于我们如何做。
相关文章:
- 从对象文件(.o)在macos上制作归档文件(.a文件)
- UE4 - Visual Studio在我从编辑器添加新的c ++文件后无法打开任何源文件 - UBT_COMPILED
- 有没有办法读取C++中的文件文件夹?
- 预处理器定义/添加新配置文件
- 错误C1083:无法打开包含文件.文件正确包含在代码中
- NDK 无法看到头文件 .h 文件
- 在 XCode 中快速创建和运行新的C++文件
- 在包含新CPP文件后的链接过程中,MSVC 错误
- 文件文件夹关联或归属
- Xcode-在项目导航器中创建新的C++文件-Order.h和.cpp-Order
- 如何以阻止的方式删除文件/文件夹
- 如何使用替代数据流添加新的文件属性
- 没有 /resetsettings 就无法运行 VS 2015 社区;在打开新项目时获取 CANTLOAD 库,并在新.cpp文件上崩溃
- 添加新头文件时出现C++错误LNK2005
- 在MFC中序列化为Unicode文本文件-文件头错误
- (Qt C++)如何从QTableView将所选文件/文件夹打印到文本文件中
- c++新手头文件问题
- 如何创建一个新的文件夹,如果它已经存在于c++中,则增加其索引
- 创建新文本文件C++时出现问题
- 为什么我无法更改新创建文件的"上次写入时间"?