比较文件日期

比较文件日期

有时当我启动时,我的系统会进入紧急模式。

然后我使用 Clonezilla 来恢复图像。

通常图像比当前日期更旧。

这是作为启动程序运行的备份脚本的一部分。

cd /home/andy/bin/
zip -u -q Ubuntu_Scripts.zip *.sh *.rb *.c *.py *.txt
cp -u Ubuntu_Scripts.zip /media/andy/MAXTOR_SDB1/Ubuntu_Mate_18.04/
cp -u Ubuntu_Scripts.zip /media/andy/MAXTOR_SDB5/Emergency_Backup/

然后,它会用一个更旧的 zip 文件覆盖我的 zip 文件。

我认为如果我可以在压缩操作之前比较文件日期,我就可以防止覆盖。

我试过这个。

file1time=`stat -c %Y /home/andy/bin/Ubuntu_Scripts.zip`

file2time=`stat -c %Y /media/andy/MAXTOR_SDB1/Ubuntu_Mate_18.04/Ubuntu_Scripts.zip`

if [ "$file1time" -ot "$file2time" ]
then
 echo "File is older. "
fi     

答案1

使用rsync而不是cp,您可以使用--update仅在复制较新文件时才会更新的标志。

cd /home/andy/bin/
zip -u -q Ubuntu_Scripts.zip *.sh *.rb *.c *.py *.txt
rsync -av --update Ubuntu_Scripts.zip /media/andy/MAXTOR_SDB1/Ubuntu_Mate_18.04/
rsync -av --update Ubuntu_Scripts.zip /media/andy/MAXTOR_SDB5/Emergency_Backup/

答案2

您的代码-ot在应该使用的地方使用了-lt。请参阅下面的示例。

#!/bin/bash

file1time=`stat -c %Y /home/niclas/dbat/INSTALL.txt`

file2time=`stat -c %Y /home/niclas/dbat/README.txt`

if [ "$file1time" -lt "$file2time" ]
then
    echo "INSTALL.txt is older."
else
    echo "README.txt is older."
fi   

相关内容