From 72141f686174cc2ee61031938fe5d388bb9a20a3 Mon Sep 17 00:00:00 2001 From: Ssyleric <47066760+Ssyleric@users.noreply.github.com> Date: Mon, 24 Mar 2025 20:31:47 +0100 Subject: [PATCH] Create transfert_anime-music-serie.sh --- transfert_anime-music-serie.sh | 90 ++++++++++++++++++++++++++++++++++ 1 file changed, 90 insertions(+) create mode 100644 transfert_anime-music-serie.sh diff --git a/transfert_anime-music-serie.sh b/transfert_anime-music-serie.sh new file mode 100644 index 0000000..d29b7b4 --- /dev/null +++ b/transfert_anime-music-serie.sh @@ -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"