我在bash脚本中使用7z命令创建7z存档以进行备份。我的脚本还检查我的备份文件夹中是否存在这个新创建的7z存档,如果存在,我去运行md5sum以查看内容是否不同。因此,如果存档文件尚未退出或md5sum与之前不同,我将其复制到我的备份文件夹。所以我尝试了一个简单的例子来测试脚本,但问题是我有时会为我压缩的同一文件夹获得不同的md5sum。为什么会这样?有没有其他可靠的方法来检查文件内容是否不同?命令很简单:
SourceFolder="/home/user/Documents/"
for file in $SourceFolder*
do
localfile=${file##*/}
7z a -t7z "$SourceFolder${localfile}.7z" "$file"
md5value=`md5sum "$SourceFolder${localfile}.7z"|cut -d ' ' -f 1`
... copyinf文件从这里开始......
答案 0 :(得分:1)
检查两个不同的无损压缩文件是否具有相同内容的可靠方法是扩展其内容并进行比较(例如,使用md5sum)。无论您使用哪种压缩方案,比较压缩文件迟早都会很快结束。
答案 1 :(得分:0)
我已经部分解决了这个问题。如果指定要压缩的文件夹的完整路径,看起来很重要。生成的文件不一样。这会影响7z和tar。我的意思是这样的:
value1=$(tar -c /tmp/at-spi2/|md5sum|cut -d ' ' -f 1)
value2=$(tar -c at-spi2/|md5sum|cut -d ' ' -f 1)
显然我做错了。是否有7z和tar的开关可以删除绝对路径?