有时当我启动时,我的系统会进入紧急模式。
然后我使用 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