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 Naabster . Évalué à 2.
L'argument
--exclude
part du répertoire courant où est lancé la commandersync
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.htmlrsync -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 EauFroide . É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 :
Donation Bitcoin : 1N8QGrhJGWdZNQNSspm3rSGjtXaXv9Ngat
[^] # Re: Espace
Posté par jlh . É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 :
pour que le shell sache où commence et où finit le nom de la variable.
# slash
Posté par robertix . É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 EauFroide . Évalué à 0.
Cela ne semble hélas rien changer :(
Donation Bitcoin : 1N8QGrhJGWdZNQNSspm3rSGjtXaXv9Ngat
# Syntaxe
Posté par ecid . É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
pasplus moi qui code :)[^] # Re: Syntaxe
Posté par EauFroide . Évalué à 1.
Je viens d'essayer avec
et
Mais autant les fichiers index.htm que le dossier plupload sont toujours ajouté dans le backup
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 robertix . É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 EauFroide . É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 NeoX . Évalué à 3.
toujours dans la syntaxe, plutot que ta syntaxe etrange avec les options APRES SRC et DST :
je ferais plutot en respectant le format preconisé par le manuel
rsync [OPTION...] SRC... [DEST]
ce qui donne
[^] # Re: Syntaxe
Posté par Claude SIMON (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…Pour nous émanciper des géants du numérique : Zelbinium !
[^] # Re: Syntaxe
Posté par EauFroide . É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.