Forum Linux.débutant [RÉSOLU] rsync exclusion de fichier et dossier

Posté par . Licence CC By‐SA.
Étiquettes :
1
23
jan.
2017

Je viens de tester plusieurs pattern et je n'arrive toujours pas a exclure un dossier (plupload) et deux fichiers (index.htm et plupload/index.htm) avec rsync. (c'est surtout les deux fichiers html que je voudrais exclure)
Merci d'avance pour votre aide si précieuse.

Voici la commande rsync actuelle :

su $userPourCopie -c "rsync $dossierSource $montageLocal$dossierDistant/latest/ -r --delete --exclude $dossierSourceplupload/ --exclude $dossierSourceindex.htm*"

J'ai testé avec des ** (qui signifie "tout y compris slash") comme indiqué dans le man mais rien ne semble changer :'(

voici le script complet utilisé pour sauvegarder les fichiers joints de phpBB

#!/bin/bash
# Licence WTFPL - infos : https://www.0rion.netlib.re/forum4/viewtopic.php?f=71&t=496#p1081
# synchronisation des fichiers joints d'un ou plusieurs forum phpBB sur le cloud
# V 1.4 - lancer le software sans paramètre = backup dans dossierDistant/latest et dossierDistant/daily si non ajoutez un des paramètres cron suivant : hourly, daily, weekly, monthly, yearly (dans tout les cas le dossier latest sera update)
montageLocal="/media/cloudServerName" #le point de montage locale
dossierDistant="/phpBB_fichiers_joints" #le dossier destination ne terminez pas par /
dossierSource="/var/www/html/forum4/files/" #le dossier source
userPourCopie="root" #l'utilisateur a utiliser pour la copie
identifiantFichier="saveFichierJointPhpBB_" # remplissez si vous souhaitez placer un mot pour identifier les fichiers compressé
if [ ! "$SUDO_USER" ]; then
echo "this script need to be lunch by root"
exit 0
fi
 #VERIFICATION DU MONTAGE
startTime=`date +%s`
if [ -d "$montageLocal$dossierDistant" ];then
 endTime=`date +%s`
 runTime=$((endTime-startTime))
 if [ "$runTime" -lt "600" ];then
 #ACTION
 dossierTemps="/daily/"
 case "1ドル" in
 "hourly")
 dossierTemps="/hourly/"
 ;;
 "daily")
 dossierTemps="/daily/"
 ;;
 "weekly")
 dossierTemps="/weekly/"
 ;;
 "monthly")
 dossierTemps="/monthly/"
 ;;
 "yearly")
 dossierTemps="/yearly/"
 ;;
 esac
 # VERIF IF DESTINATION FOLDER EXIST IF NOT CREAT IT
 if ! [ -d "$montageLocal$dossierDistant$dossierTemps" ];then
 mkdir -p "$montageLocal$dossierDistant$dossierTemps"
 fi
 if ! [ -d "$montageLocal$dossierDistantlatest" ];then
 mkdir -p "$montageLocal$dossierDistant$dossierDistantlatest"
 fi
 sudo chown www-data:$userPourCopie -R $dossierSource & sudo chmod 770 -R $dossierSource
 #sauvegarde des fichiers locaux vers cloud
#echo "copie dans $montageLocal$dossierDistant$dossierTemps"
 dateBackup=$(date +%Y-%m-%d)
 heureBackup=$(date +%Hh%Mm)
 jourBackup=$(date +%A)
#echo "$montageLocal$dossierDistant$dossierTemps$identifiantFichier$dateBackup.$heureBackup.$jourBackup.tar.gz"
 tar -cvzf "$montageLocal$dossierDistant$dossierTemps$identifiantFichier$dateBackup.$dateBackup.$heureBackup.$jourBackup.tar.gz" $dossierSource*
#echo "copie dans $montageLocal$dossierDistant/latest"
 su $userPourCopie -c "rsync $dossierSource$montageLocal$dossierDistant/latest/ -r --delete --exclude $dossierSourceplupload/ --exclude $dossierSourceindex.htm*"
 #on reverrouille l'accès au dossier
 sudo chown www-data:root -R $dossierSource & sudo chmod 770 -R $dossierSource
 else
 echo "$montageLocal => not responding (408) / delais d'attente depasse"
 fi
else
echo "$montageLocal$dossierDistant => not exist"
fi
  • # Espace

    Posté par . Évalué à 2.

    L'argument --exclude part du répertoire courant où est lancé la commande rsync et le pattern est séparé par un espace :

    Prenons le cas du dossier /home où se situe les fichiers toto.html et toto.tar, on ne veut pas de toto.html

    • rsync -aPL --exclude toto.html /lieu/de/destination

    Or je vois que dans ta commande tu colle le pattern à ta variable : $dossierSourceplupload/.

    As tu essayé avec l'espace ? --> $dossierSource plupload/

    • [^] # Re: Espace

      Posté par . Évalué à 0. Dernière modification le 23 janvier 2017 à 16:16.

      Merci pour ton aide.

      Je viens de tester avec un espace et avec/sans l'option que tu as indiqué (-aPL, qui n'est pas décrite dans le man d'ailleurs) mais ça ne fonctionne pas :

      rsync: change_dir "/home/pi//plupload" failed: No such file or directory (2)
      

      Donation Bitcoin : 1N8QGrhJGWdZNQNSspm3rSGjtXaXv9Ngat

      • [^] # Re: Espace

        Posté par . Évalué à 3.

        Plutôt que des espaces, je pense qu'il faut mettre des accolades autour des noms de variables collées à des chaînes de caractères :

        ${dossierSource}pupload
        

        pour que le shell sache où commence et où finit le nom de la variable.

  • # slash

    Posté par . Évalué à -10.

    dossierSource="/var/www/html/forum4/files" #le dossier source sans le slash

    $userPourCopie -c "rsync $dossierSource/ $montageLocal$dossierDistant/latest/ -r --delete --exclude $dossierSource/plupload/ --exclude $dossierSource/index.htm*"

    en ajoutant les slashs dans la commande

    • [^] # Re: slash

      Posté par . Évalué à 0.

      Cela ne semble hélas rien changer :(

      Donation Bitcoin : 1N8QGrhJGWdZNQNSspm3rSGjtXaXv9Ngat

  • # Syntaxe

    Posté par . Évalué à 2.

    Bonjour,

    Si je regarde les exemples du man il faut utiliser --exclude=PATTERN et pas --exclude PATTERN

    Pour éviter de désagréables suprises, il serait aussi préférable d'utiliser ${dossierSource}plupload
    au lieu de $dossierSourceplupload, mais bon c'est (削除) pas (削除ここまで) plus moi qui code :)

    • [^] # Re: Syntaxe

      Posté par . Évalué à 1.

      Je viens d'essayer avec

      su $userPourCopie -c "rsync $dossierSource $montageLocal$dossierDistant/latest/ -r --delete --exclude ${dossierSource}plupload/ --exclude ${dossierSource}index.htm*"
      

      et

      su $userPourCopie -c "rsync $dossierSource $montageLocal$dossierDistant/latest/ -r --delete --exclude=${dossierSource}plupload/ --exclude=${dossierSource}index.htm*"
      

      Mais autant les fichiers index.htm que le dossier plupload sont toujours ajouté dans le backup

      Pour éviter de désagréables suprises, il serait aussi préférable d'utiliser ${dossierSource}plupload

      Merci pour l'astuce, je trouvais vraiment désagréable la méthode de concaténation que j'utilisais (j'ai enfin pu mettre des _ en lieu et place des . )

      Donation Bitcoin : 1N8QGrhJGWdZNQNSspm3rSGjtXaXv9Ngat

      • [^] # Re: Syntaxe

        Posté par . Évalué à -10.

        pour exclure le dossier plupload de la synchro
        il me semble qu'il ne faut pas ajouter le slash après

        • [^] # Re: Syntaxe

          Posté par . Évalué à 0. Dernière modification le 23 janvier 2017 à 18:35.

          Le man semble indiquer que pour un dossier il faut ajouter le slash. (j'arrive plus a retrouver où il dit ça, ce man est trop long ^ ^ )
          Je viens de tester avec et sans slash le dossier est backup.

          Donation Bitcoin : 1N8QGrhJGWdZNQNSspm3rSGjtXaXv9Ngat

      • [^] # Re: Syntaxe

        Posté par . Évalué à 3.

        toujours dans la syntaxe, plutot que ta syntaxe etrange avec les options APRES SRC et DST :

        rsync $dossierSource $montageLocal$dossierDistant/latest/ -r --delete --exclude=${dossierSource}plupload/ --exclude=${dossierSource}index.htm*

        je ferais plutot en respectant le format preconisé par le manuel
        rsync [OPTION...] SRC... [DEST]

        ce qui donne

        rsync -r --delete --exclude=plupload* --exclude=index.htm* ${dossierSource} ${montageLocal}${dossierDistant}/latest/
        • [^] # Re: Syntaxe

          Posté par (site web personnel) . Évalué à 2. Dernière modification le 23 janvier 2017 à 19:14.

          On peut mettre les options après SRC et DEST sans problèmes. C'est surtout que l'argument de --exclude est relatif par rapport à SRC, donc il ne faut pas mettre $(dossierSource) dans le PATTERN, et ce qui est indiqué ci-dessus devrait fonctionner...

          Zelbinium: pour la génération qui crée, pas celle qui scrolle...

          • [^] # Re: Syntaxe

            Posté par . Évalué à 1.

            Ça fonctionne ! Thank you well!

            Donation Bitcoin : 1N8QGrhJGWdZNQNSspm3rSGjtXaXv9Ngat

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.