Pages : 1
#1 Le 18/09/2014, à 17:18
- MisterPi
Script Rsync - Rsync.pid Permission denied
Bonjour à tous,
J'utilise rsync over SSH pour rapatrier des données d'un dossier sur mon serveur vers mon NAS à la maison. Tout fonctionnait bien jusqu'à peu.
Je lance le script via les crontab avec un utilisateur batch (qui ne fait pas parti des sudoers) mais qui est dans le groupe root.
Voilà l'erreur que je reçois :
Sortie de la commande /home/batch/rsync_v2.sh ..
TERM environment variable not set.
/home/batch/rsync_v2.sh: line 80: ./rsync.pid: Permission denied
rm: cannot remove `./rsync.pid': No such file or directory
Voici mon script :
#!/bin/bash
###########################
# Variables à modifier #
###########################
#Dossier source
SRC=/source
#Dossier cible
DST=/volume1/destination
#Fichier d'exclusion
EXCLUDE_FILE=/home/batch/exclude.txt
#Utilisation de la bande passante en Ko
BWLIMIT=2048
#Utiliser une connexion ssh distante
USE_SSH=true
#Utiliser la connexion SSH pour la source
USE_SSH_SRC=false
#Si utilisation de SSH, définir la chaine de connexion
SERVER_SSH=admin@monnas.com
#Repertoire contenant les logs
LOG_BASE_DIR=/home/batch/logs
#Durée de concervation des logs
OLD_DAYS=7
#################################
# Variables à ne pas modifier #
#################################
DATE=`date +"%Y%m%d"`
HEURE=`date +"%H%M"`
PID_FILE=./rsync.pid
LOG_RESUME_DIR=$LOG_BASE_DIR/resumes
LOG_DATE_DIR=$LOG_RESUME_DIR/$DATE
LOG_RESUME_FILE=$LOG_DATE_DIR/$DATE-$HEURE.log
LOG_PROGRESS_FILE=$LOG_BASE_DIR/progress.log
LOG_HISTORIQUE_FILE=$LOG_DATE_DIR/historique.log
RSYNC_OPTS="-ahtvrzP --bwlimit=$BWLIMIT --stats --size-only"
showEnvironment(){
echo Environnement de travail
echo ------------------------
echo SRC=$SRC
echo DST=$DST
echo EXCLUDE_FILE=$EXCLUDE_FILE
echo BWLIMIT=$BWLIMIT
echo PID_FILE=$PID_FILE
echo LOG_BASE_DIR=$LOG_BASE_DIR
echo LOG_DATE_DIR=$LOG_DATE_DIR
echo LOG_RESUME_FILE=$LOG_RESUME_FILE
echo LOG_PROGRESS_FILE=$LOG_PROGRESS_FILE
echo LOG_HISTORIQUE_FILE=$LOG_HISTORIQUE_FILE
echo RSYNC_OPTS=$RSYNC_OPTS
echo USE_SSG=$USE_SSH
echo USE_SSH_SRC=$USE_SSH_SRC
echo ------------------------
echo
echo Espaces disques
echo ------------------------
echo Source:
df -h
echo
echo Destination:
df -h
echo
}
initArbo(){
#Suppression des dossiers de logs les plus anciens
find $LOG_RESUME_DIR -maxdepth 1 -type d -ctime +$OLD_DAYS -exec rm -rfv {} \;
#Création du dossier de logs du jour si besoin
if [[ ! -e $LOG_DATE_DIR ]]; then
mkdir -p $LOG_DATE_DIR
fi
}
synchronisation(){
echo $$ > $PID_FILE
echo ====================================== >> $LOG_RESUME_FILE
echo "Démarrage du script de synchronisation" >> $LOG_RESUME_FILE
echo ====================================== >> $LOG_RESUME_FILE
echo >> $LOG_RESUME_FILE
showEnvironment >> $LOG_RESUME_FILE
SOURCE=$SRC/
DESTINATION=$DST/
if $USE_SSH ; then
RSYNC_OPTS="$RSYNC_OPTS -e ssh"
if $USE_SSH_SRC ; then
SOURCE="$SERVER_SSH:$SOURCE"
else
DESTINATION="$SERVER_SSH:$DESTINATION"
fi
fi
echo CMD = rsync $RSYNC_OPTS --exclude-from "$EXCLUDE_FILE" $SOURCE $DESTINATION >> $LOG_RESUME_FILE
rsync $RSYNC_OPTS --exclude-from "$EXCLUDE_FILE" $SOURCE $DESTINATION > $LOG_PROGRESS_FILE
rm $PID_FILE
echo >> $LOG_RESUME_FILE
echo =============================== >> $LOG_RESUME_FILE
echo "Traitement terminé" >> $LOG_RESUME_FILE
echo =============================== >> $LOG_RESUME_FILE
}
clear
initArbo
if [ ! -s $PID_FILE ]; then
date +"%d/%m/%y - %T : Lancement de la synchronisation" >> $LOG_HISTORIQUE_FILE
synchronisation
else
if kill -0 $(cat $PID_FILE) 1>/dev/null 2>&1; then
date +"%d/%m/%y - %T : Synchronisation déjà en cours" >> $LOG_HISTORIQUE_FILE
else
rm -f $PID_FILE
synchronisation
fi
fi
J'ai fait quelque recherche mais je ne trouve pas, apparemment soit il s'agit d'un problème de version ou je dois lancer rsync via cron en root mais là ça me pose un souci.
Des idées ?
Merci.
Peace, Always ! \||/
Hors ligne
#2 Le 18/09/2014, à 17:31
- Kooothor
Re : Script Rsync - Rsync.pid Permission denied
Et si tu mettais le chemin du pid file en absolu ?
Hors ligne
#3 Le 18/09/2014, à 18:15
- MisterPi
Re : Script Rsync - Rsync.pid Permission denied
Merci pour la réponse mais rsync.pid est un processus je pense. Il n'y a pas de chemin absolu ? Si oui, à ton avis lequel serait-il ?
Peace, Always ! \||/
Hors ligne
#4 Le 18/09/2014, à 22:48
- Kooothor
Re : Script Rsync - Rsync.pid Permission denied
Non rsync.pid est un fichier qui contient l'id du processus lancé !
Tu devrais essayer de comprendre ton script avant de le lancer !
Et tu peux le simplifier grandement, c'est du bloated code imho. Pas besoin de tout ce bazar.
@+
~ktr
Hors ligne
#5 Le 18/09/2014, à 23:09
- MisterPi
Re : Script Rsync - Rsync.pid Permission denied
J'avoue que j'ai pas tout compris dans le script c'est pour cela que je demande.
J'ai par contre compris le but d'un fichier PID après recherche. Je vais voir, je vais surement passer en FTP du coup. Enfin merci.
Peace, Always ! \||/
Hors ligne
#6 Le 19/09/2014, à 00:12
- Kooothor
Re : Script Rsync - Rsync.pid Permission denied
Non oublie FTP, rsync + ssh c'est très bien.
Mais commence par te faire un script qui ne fait qu'une ligne :
rsync -avz $HOME -e ssh nas:backup-home
Puis après tu peux ajouter d'autres trucs petit à petit, mais prendre un script qui fait deux pages et que tu ne comprends pas, c'est mal m'voyez.
Avec dans le fichier ~/.ssh/config
Host nas
User <l'utilisateur du nas>
Hostname 12.34.56.78
et le dossier backup-home créé sur le nas.
@+
~ktr
Hors ligne
#7 Le 19/09/2014, à 13:14
- MisterPi
Re : Script Rsync - Rsync.pid Permission denied
Effectivement ça marche mieux J'ai même pu faire ma tâche cron et elle s'execute correctement, et tout cela en ssh ^^
Juste une autre question, voici les options que j'ai mis à rsync (j'ai repris les options du précédent script)
rsync -ahtvrzP --bwlimit=2048 --stats --size-only /source -e ssh MONNAS.com:/volume1/backup
Alors rsync me crée un dossier appelé "source" sur mon NAS dans "/volume1/backup", ce qui correspond aux options données dans la commande.
Je souhaiterais savoir comment faire pour qu'il upload les données à la racine de /volume1/backup sans crée le dossier "/source".
Peace, Always ! \||/
Hors ligne
#8 Le 19/09/2014, à 13:20
- bruno
Re : Script Rsync - Rsync.pid Permission denied
Comme ceci :
rsync -ahtvrzP --bwlimit=2048 --stats --size-only /source/ -e ssh MONNAS.com:/volume1/backup/
PS : merci d'utiliser les balises [ code ] pour les commandes (icône < >).
#9 Le 19/09/2014, à 13:24
- MisterPi
Re : Script Rsync - Rsync.pid Permission denied
Problème résolu ! Merci Koothor et Bruno (promis j'utiliserais les balises codes la prochaine)
Peace, Always ! \||/
Hors ligne
#10 Le 19/09/2014, à 17:54
- Kooothor
Re : Script Rsync - Rsync.pid Permission denied
Merci Kooothor et Bruno
De rien, ça fait plaisir d'aider quelqu'un de poli. Surtout lorsqu'on revient de faire du vélo dans Paris et qu'on se fait invectiver pour oser signifier aux piétons qui traversent au feu vert que c'est mal… Mais bon je m'égare.
Hors ligne
Pages : 1