J'ai créé ce script il y a quelques mois, je l'utilise tous les jours pour savoir quels fichiers de sauvegarde ont plus de 3 jours ou plus. cela m'aide à identifier rapidement tous les fichiers qui ont 3 jours ou plus de création.Script pour montrer l'âge de tous les fichiers dans un répertoire
#!/bin/bash
#Backup
time=$(date +%d) #Current time in days
a=3 #Number of the past days
b=0 #No need to verify it because it has a backup from today
echo
ls -l | tail -n +2 | while read result;
do
echo $result | awk -vC0='\033[0;0m' -vC1='\033[0;32m' -vC2='\033[0;31m' -vC3='\033[0;33m' \
'{printf "%+10s %+1s %-5s %+4s %+4s %+3s %+2s %5s %-20s \n", $1,$2,$3,$4,$5,$6," " C1 $7 C0," " $8," " $9}'
actual=$(echo $result | awk '{ print $7 }')
partition=$(echo $result | awk '{ print $9 }')
rest=$(($time-$actual))
if [[ $rest -le $a && $rest -ne $b ]]; then
echo -e "\t The Backup for \e[33m$partition\e[0m was done \e[33m$rest\e[0m days ago"
fi
done
Il affiche sur la CLI les résultats de la commande ls -l avec un commentaire sur la façon dont les fichiers sont vieux d'une manière plus lisible humaine. Par exemple:
-rw-r--r-- 1 root root 98756181 Mar 7 23:59 server005.Mon.tgz
The Backup for server005.Mon.tgz was done 3 days ago
-rw-r--r-- 1 root root 23663925 Mar 3 18:00 server006.Fri.tgz
The Backup for server006.Fri.tgz was done 3 days ago
-rw-r--r-- 1 root root 23663925 Mar 3 18:00 server009.Mon.tgz
The Backup for server009.Mon.tgz was done 3 days ago
J'utilise ce script par jour chaque matin, il me aide à identifier rapidement si les sauvegardes sont effectuées tous les 3 jours pas moins, le script affiche un commentaire dans chaque fichier montrant à quel âge le fichier est par en utilisant la date actuelle (en jours) des fichiers moins la date de création du fichier (en jours), puis si le résultat est supérieur au numéro 3, il affichera un commentaire avec le nombre de jours d'un fichier, mais la chose est que J'ai quelques problèmes lorsque la date réelle est proche du 29, du 30 ou du 1er jour du mois, car les scripts affichent des valeurs négatives. Par exemple:
The Backup for backupserver001.Thu.tgz was done -11 days ago
The Backup for backupserver002.Wed.tgz was done -10 days ago
The Backup for backupserver003.Mon.tgz was done -21 days ago
Comme je l'ai dit, cela se produit uniquement lorsque la date actuelle est proche de la fin ou du début d'un mois.
Je ne suis pas très doué en programmation ou en maths, c'est pourquoi je cherche de l'aide ici. Je suis sûr que cette tâche peut être accomplie d'une manière bien meilleure, plus simple, mon code est vraiment en désordre. Toute aide sera vraiment appréciée.
'' time' et actual' sont tous les deux jours du mois; vous obtenez une valeur négative pour 'repos' quand' effective' survient dans le mois précédent, mais moins d'un mois. – chepner