[LINUX] Sauvegarde des matériaux du serveur à l'aide de scripts shell (avec gestion de la génération de fichiers)

Aperçu

Conclusion

backup.sh


#!/bin/sh -u

#Définissez le répertoire actuel à l'emplacement du script
cd `dirname $0`

#Obtenir l'heure de début du traitement
todaydatetime="date '+%Y-%m-%d %H:%M:%S'"
echo "Effectuer le traitement des fichiers de sauvegarde"
eval $todaydatetime

#Commencer à mesurer le temps de traitement
SECONDS=0

#Cible de sauvegarde
TARGET_DIR='/home/origin'

#Répertoire pour stocker les fichiers de sauvegarde
backupdirpath="/home/backup"

##Vérification de l'existence du répertoire
if [ -d ${backupdirpath} ]; then
    #Si le répertoire de sauvegarde existe
    #Afficher la liste des fichiers stockés
    ls -lrth ${backupdirpath}
else
    echo "Il n'y a pas de répertoire de sauvegarde. Le processus se termine."
    eval $todaydatetime
    exit 1
fi

#Définir le nom du fichier de sauvegarde(* Assurez-vous de connaître la date par le nom du fichier.)
BACKUP_FILE_NAME=`date +%y%m%d`

#Processus de création de fichier de sauvegarde
tar czfp $BACKUP_FILE_NAME.tar.gz $TARGET_DIR
mv $BACKUP_FILE_NAME.tar.gz $BACKUP_DIR

#Gestion de la génération des fichiers de sauvegarde dans un dossier de sauvegarde local
tgtfile="${backupdirpath}/backup_????-??-??.tar.gz"
chkage=$(ls -1 ${tgtfile}|wc -l)

#Définir le nombre de générations de stockage
age="5"
##Pour le processus d'extraction et de suppression du sixième élément et des éléments suivants avec la commande tail
##La valeur définie dans la variable est "Nombre de générations de stockage"+1 "
tailage="+6"

#Liste des fichiers à supprimer
delfilelist=$(ls -1 -t ${tgtfile}|tail -n ${tailage})

##Jugement de nécessité de suppression de fichier
if [[ ${chkage} -gt $age ]]; then
    #Si le nombre de fichiers de sauvegarde est supérieur au nombre de générations de stockage
    #Trier dans l'ordre inverse et supprimer en laissant les 5 dernières générations
    echo "Nombre de générations stockées dans le dossier:${chkage}"
    echo "Nombre de générations de stockage${age}Supprimer les anciens fichiers au fur et à mesure qu'ils dépassent"
    echo "Fichiers à supprimer:${delfilelist}"
    echo "Supprimer l'ancienne sauvegarde"
    rm -f ${delfilelist}
else
    echo "Il n'y a pas de fichiers de sauvegarde inutiles. Le processus se termine."
    eval $todaydatetime
    exit 1
fi

#Obtenez l'heure de fin du traitement
echo "Terminer le traitement du fichier de sauvegarde"
eval $todaydatetime

#Mesure du temps de fin de traitement
echo "Temps d'exécution du traitement:${SECONDS}Secondes"

Bonus (script shell qui crée des journaux de sauvegarde quotidiens)

top_backup.sh


#!/bin/sh -u

cd `dirname $0`

#Script parent qui contrôle le script de sauvegarde
sh ./backup.sh > logfile_`date "+%Y-%m-%d"`.log 2>&1

#Supprimer l'ancien fichier journal
tgtfile="./logfile_????-??-??.log"
chkage=$(ls -1 ${tgtfile}|wc -l)
#Définir le nombre de générations de stockage
age="5"
##Pour le processus d'extraction et de suppression du sixième élément et des éléments suivants avec la commande tail
##La valeur définie dans la variable est "Nombre de générations de stockage"+1 "
tailage="+6"
#Liste des fichiers à supprimer
delfilelist=$(ls -1 -t ${tgtfile}|tail -n ${tailage})

if [[ ${chkage} -gt $age ]]; then
    #Si le nombre de fichiers de sauvegarde est supérieur au nombre de générations de stockage
    #Trier dans l'ordre inverse et supprimer en laissant les 5 dernières générations
    echo "Fichiers à supprimer:${delfilelist}"
    echo "Supprimer l'ancien fichier journal"
    rm -f ${delfilelist}
else
    exit 1
fi

Recommended Posts

Sauvegarde des matériaux du serveur à l'aide de scripts shell (avec gestion de la génération de fichiers)
Gestion des serveurs avec import Jupyter (1)
Traitez le contenu du fichier dans l'ordre avec un script shell
Modifiez le fichier du serveur de destination de la connexion SSH sur le serveur avec VS Code