Create transfert_anime-music-serie.sh

This commit is contained in:
Ssyleric
2025-03-24 20:31:47 +01:00
committed by GitHub
parent 96c9c1ee69
commit 72141f6861

View File

@@ -0,0 +1,90 @@
#!/bin/bash
# Variables
SOURCE_DIR_AN="/serie_music/anime"
DEST_DIR_ANIME="/mnt/pve/TVshows/Anime"
SOURCE_DIR_SE="/serie_music/serie"
DEST_DIR_SERIE="/mnt/pve/TVshows/Serie"
SOURCE_DIR_MU="/serie_music/music"
DEST_DIR_MUSIC="/mnt/pve/Music"
LOCK_FILE="/tmp/pve2omvtransfert.lock" # Fichier de verrouillage
# Initialiser rapport
REPORT="=== Rapport de Transfert ===\n"
# Fonction pour traiter un couple source/destination
transfer_files() {
local SOURCE_DIR=$1
local DEST_DIR=$2
local LABEL=$3 # ex: "Anime", "Série", etc.
# Vérifier si le répertoire source existe
if [ ! -d "$SOURCE_DIR" ]; then
REPORT+="$LABEL : Le répertoire source $SOURCE_DIR n'existe pas.\n"
return
fi
# Vérifier s'il y a des fichiers
if [ -z "$(ls -A "$SOURCE_DIR")" ]; then
REPORT+=" $LABEL : Aucun fichier à transférer.\n"
return
fi
echo "🛠️ Début de la copie des fichiers de $SOURCE_DIR vers $DEST_DIR."
# Créer le répertoire de destination s'il n'existe pas
mkdir -p "$DEST_DIR"
# Copie avec rsync (avec gestion d'encodage pour musique)
if [ "$LABEL" == "Musique" ]; then
rsync -av --iconv=utf-8-mac,utf-8 --progress "$SOURCE_DIR/" "$DEST_DIR/" &> /tmp/rsync_music.log
else
rsync -av --progress "$SOURCE_DIR/" "$DEST_DIR/"
fi
if [ $? -ne 0 ]; then
REPORT+="$LABEL : La copie a échoué.\n"
return
fi
# Suppression des fichiers source
rm -r "$SOURCE_DIR"/*
if [ $? -ne 0 ]; then
REPORT+="⚠️ $LABEL : Copie OK mais échec suppression source.\n"
return
fi
# Mise à jour des permissions et propriétaire
chmod -R 777 "$DEST_DIR" || { REPORT+="⚠️ $LABEL : Échec chmod.\n"; return; }
chown -R 911:911 "$DEST_DIR" || { REPORT+="⚠️ $LABEL : Échec chown.\n"; return; }
# Correction des erreurs résiduelles
find "$DEST_DIR" ! -perm 777 -exec chmod 777 {} \;
find "$DEST_DIR" ! -user 911 ! -group 911 -exec chown 911:911 {} \;
# Résumé du transfert
NB_FILES=$(find "$DEST_DIR" -type f | wc -l)
REPORT+="$LABEL : Transfert terminé avec $NB_FILES fichiers.\n"
}
# Vérifier verrou
if [ -e "$LOCK_FILE" ]; then
echo "❌ Le script est déjà en cours d'exécution. Fichier de verrouillage détecté."
exit 1
fi
touch "$LOCK_FILE"
# Traitement des transferts
transfer_files "$SOURCE_DIR_AN" "$DEST_DIR_ANIME" "Anime"
transfer_files "$SOURCE_DIR_SE" "$DEST_DIR_SERIE" "Série"
transfer_files "$SOURCE_DIR_MU" "$DEST_DIR_MUSIC" "Musique"
# Nettoyage
rm -f "$LOCK_FILE"
# Afficher rapport
echo -e "$REPORT"