复制覆盖前如何检查文件是否不同?

复制覆盖前如何检查文件是否不同?

cp我使用一个小脚本将配置文件列表复制(使用)到另一个设备。我想知道如何快速检查文件自上次以来是否被修改,然后再执行此操作并耗尽设备的资源。

答案1

假设您config本地有一个目录与设备上的目录相对应config,并且您仅在本地进行更改然后将其同步到设备,那么这rsync是执行同步的好工具。

将本地目录同步到设备目录:

$ rsync -av config/ [email protected]:path/to/config/

要删除设备上不再存在于本地config目录中的文件,请将--delete标志添加到rsync

$ rsync -av --delete config/ [email protected]:path/to/config/

交换config/并将[email protected]:path/to/config/目录config从设备备份到本地目录(稍微不清楚您想在问题中走哪个方向)。

答案2

if ! diff -q file1 file2 > /dev/null 2>&1;
then

  echo "Files are changed"

else

  echo "Files not changed"

fi

答案3

一般来说diff/cmp很好,但如果文件很大,比较可能需要一段时间。更快速的方法是通过比较时间戳stat或通过比较校验和md5sum

相关内容