【问题标题】:find -newer to detect only newly copied filesfind -newer 仅检测新复制的文件
【发布时间】:2011-07-04 13:00:08
【问题描述】:

我正在使用以下代码

if [ ! -f $time_mark ]
then
    touch $time_mark
fi

cp -f aaa.txt bbb.txt ccc.txt $file_dir
find $file_dir -newer $time_mark > file_list.txt
...

我正在使用 find -newer 发送仅晚于 $time_mark 复制的文件。但事实证明,如果第一次 $time_mark 不存在,它会执行 touch $time_mark 并开始复制文件,这几乎可以同时发生。这导致 $time_mark 和复制的文件具有相同的系统时间,并且仅发送晚于 $time_mark 复制的文件的整个概念不起作用。

有没有办法解决这个问题?

谢谢

【问题讨论】:

    标签: linux shell find


    【解决方案1】:
    if [ -f $time_mark ]
    then
        incremental="-newer $time_mark"
    else
        incremental=""
        touch $time_mark
    fi
    
    ...
    find $file_dir $incremental > file_list.txt
    ...
    

    如果有条件地执行触摸似乎更好(仅在先前运行成功的情况下?)

    我强烈建议查看 rsyncrdiff-backup 或其他(备份?)工具,这些工具可以了解增量更改检测。

    作为一个非常简单的措施,由于您似乎暗示要在某处复制这些文件 (?),只需使用 -pu (--preserve=mode,ownership,timestamps --update) 进行复制就可以解决问题

    【讨论】:

      【解决方案2】:

      不要忘记使用“cp -p”来保留原始文件的时间戳。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-08-10
        • 2013-11-18
        • 1970-01-01
        • 2020-08-13
        • 2012-10-22
        • 2022-01-21
        • 1970-01-01
        相关资源
        最近更新 更多