如何从目录创建 Delta / Changed 文件?

如何从目录创建 Delta / Changed 文件?

我正在尝试从一个目录到另一个目录创建一个“更改的文件”包,并且需要找到能够处理此问题的 Linux/Unix 工具/实用程序。

例子:

  • Package_1.1/(旧)
  • Package_1.2/(新)
  • changed_files/(仅限已更改和新的文件和目录)

changed_filesPackage_1.2将是一个包含仅已添加或更改的文件的递归结构的目录Package_1.1

更新:我尝试使用:

cd Package_1.2
rsync -a -c --compare-dest=../Package_1.1 . ../changed_files/
find -depth ../changed_files -type d -empty -delete

但是,有些文件的修改时间略有不同,虽然这些文件被复制过来了,但内容却完全相同。(md5 对每个文件都生成了相同的校验和)。因此,虽然我认为使用此命令已经很接近了,但我仍然遗漏了一些东西。

答案1

当使用 时rsync,似乎-c( --checksum) 选项不会覆盖( )内的-t( --times) 选项,该选项使用,因此它仍会查看文件修改时间。-a--archive-rlptgoD

一个可能的解决方案是使用:-rlpgoDc而不是-a。命令如下:

cd Package_1.2
rsync -rlpgoDc --compare-dest=../Package_1.1 . ../changed_files/
find -depth ../changed_files -type d -empty -delete

rsync这可能不是最优雅的解决方案,也许有人对如何独自完成整个工作有更好的想法。

相关内容