【问题标题】:linux cp mtime changelinux cp mtime 更改
【发布时间】:2013-03-19 14:13:00
【问题描述】:

我有一段代码监控文件夹。如果一个文件在那里停留 3 分钟,我的代码将处理它。从现在开始是否经过 3 分钟取决于 mtime。

但是,我发现当我 cp 一个巨大的文件时,比如说 10GB,它无法在 3 分钟内完成,代码会中断,因为 cp 在复制时似乎不会不时更新 mtime。

我观察到 cp 的正确行为了吗?

有什么解决办法吗?

谢谢,

【问题讨论】:

  • 你能解释一下 cp 命令的用途吗?将文件复制到处理它们的进程目录中?
  • 假设您无法控制双方。 Inotify at wikipediaman inotify.

标签: linux file copy cp


【解决方案1】:

有很多解决方法

  • 复制到点文件,然后在复制完成后将其移动到位 - 这将由创建过程完成,并且仅处理文件夹中的非点文件。
  • 使用信号指示客户端已完成复制(可能仅适用于非网络文件系统)
  • 同时使用文件大小和mtime,如果在 3 分钟内两者都没有增加,则继续处理。

【讨论】:

    【解决方案2】:

    据我所知,当上述修改完成时,mtime 会更新。我认为这样做是正确的。为什么在将文件复制到时需要知道文件是否已更新?如果你碰巧复制了那个文件,你最终会得到一个不完整的文件,可能没用。

    但是,如果您确定要这样做,请确保您的复制智能,不仅取决于 mtime,还取决于上面答案中建议的文件大小。如果您看到文件大小以任何一种方式发生变化,无论 mtime 说什么,您都可以确定该文件已被修改,相对于上次处理的时间。

    【讨论】:

      猜你喜欢
      • 2012-11-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-16
      • 2016-04-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多