将具有特定上次修改日期的文件替换为存档中的文件(或日期)

将具有特定上次修改日期的文件替换为存档中的文件(或日期)

我的硬盘已接近容量(大部分/home)。我安装了一个新的更大的驱动器,复制/home到它并继续我的生活。

这是 2013 年 5 月 17 日。我知道那是 2013 年 5 月 17 日,因为我在复制所有内容时忘记了存档标志,因此服务器上自那时以来尚未更新的每个文件的日期都是 2013 年 5 月 17 日。

我仍然保留着原始/home目录 ( /oldhome) 以及正确的上次修改日期。

我需要一个起点来编写一个脚本,将/home日期为 2013 年 5 月 17 日的每个文件替换为相应的原始文件/oldhome(正确的日期完好无损)。我只想替换 2013 年 5 月 17 日的文件,因为该日期存在的一些文件随后已更新,我当然希望保留这些文件的更新版本。

文件计数约为/oldhome63K

考虑从哪里开始?

编辑

好的。根据下面 Theophrastus 的评论(谢谢),我可以从以下开始:

...从内部/homefind -type f -newermt 2013-5-17 ! -newermt 2013-5-18 -print0 | xargs -I % -0 rsync -avzI --dry-run /oldhome% /home%

...我认为可能是几乎那里。的输出find有一个前导句点,它破坏了 rsync 命令中的路径(/oldhome./directory/filename /home./directory/filename.ext当所有内容都连接时我们得到了。我可以以find某种方式重述语句以省略前导句点吗?目的是识别具有/home5/17/2013 日期的文件并将它们替换为来自的副本/oldhome- 没有/oldhome日期晚于 2013 年 5 月 17 日的文件。

相关内容