47 lines
No EOL
1.6 KiB
Bash
47 lines
No EOL
1.6 KiB
Bash
#!/usr/bin/env bash
|
||
|
||
# ------------------------------------------------------------
|
||
# Usage : ./archiver_et_nettoie.sh <répertoire_source>
|
||
# ------------------------------------------------------------
|
||
|
||
# ---------- 1⃣ Vérifications initiales ----------
|
||
if [[ -z "$1" ]]; then
|
||
echo "Usage : $0 <répertoire_source>"
|
||
exit 1
|
||
fi
|
||
|
||
SRC_DIR="$1"
|
||
|
||
if [[ ! -d "$SRC_DIR" ]]; then
|
||
echo "Erreur : '$SRC_DIR' n’est pas un répertoire valide."
|
||
exit 1
|
||
fi
|
||
|
||
# ---------- 2⃣ Dossier de destination ----------
|
||
OUT_DIR="/media/Seagate/archives" # crée un sous‑dossier « archives » à côté du répertoire source
|
||
mkdir -p "$OUT_DIR" # le créer s’il n’existe pas encore
|
||
|
||
# ---------- 3⃣ Création des archives ----------
|
||
cd "$SRC_DIR" || exit 1
|
||
|
||
for dir in */ ; do
|
||
[[ -d "$dir" ]] || continue # ignorer les fichiers éventuels
|
||
name="${dir%/}" # nom du sous‑dossier sans le slash final
|
||
timestamp=$(date +"%Y%m%d_%H%M%S") # horodatage au format souhaité
|
||
archive_name="${name}_${timestamp}.tar.gz"
|
||
|
||
# Crée l'archive dans le répertoire de sortie
|
||
tar -czf "${OUT_DIR}/${archive_name}" "$name"
|
||
|
||
echo "✅ Archive créée : ${OUT_DIR}/${archive_name}"
|
||
done
|
||
|
||
# ---------- 4⃣ Nettoyage des archives >30 jours ----------
|
||
# find <dossier> -type f -name "*.tar.gz" -mtime +30 -delete
|
||
# -mtime +30 → fichier modifié il y a plus de 30 jours
|
||
# -delete → suppression sécurisée
|
||
|
||
echo "🧹 Suppression des archives de plus de 30 jours…"
|
||
find "$OUT_DIR" -type f -name "*.tar.gz" -mtime +30 -print -delete
|
||
|
||
echo "✅ Nettoyage terminé." |