web-dev-qa-db-fra.com

Comparer les dates des fichiers

Parfois, lorsque je démarre, mon système passe en mode d'urgence.

J'utilise ensuite Clonezilla pour restaurer une image.

Habituellement, l'image est plus ancienne que la date actuelle.

Cela fait partie d'un script de sauvegarde qui s'exécute en tant que programme de démarrage.

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/

Cela remplace alors mon fichier Zip par un fichier qui est en fait plus ancien.

Je pensais que si je pouvais comparer les dates des fichiers, avant l'opération Zip, je pourrais empêcher l'écrasement.

J'ai essayé ça.

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
fixit7

Utilisez rsync au lieu de cp et vous pouvez utiliser le --update indicateur qui ne sera mis à jour que lorsque vous copiez un fichier plus récent.

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/
3
Katu

Votre code utilise -ot où il doit utiliser -lt. Voir l'exemple ci-dessous.

#!/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   
2
Niclas Börlin