Précédent   Forum des professionnels en informatique > Systèmes > Linux > Applications > Shell
Shell Vos questions sur l'utilisation des commandes shell
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 15/02/2011, 22h32   #1
Débutant
 
Inscription : mai 2005
Messages : 1 957
Détails du profil
Informations personnelles :
Localisation : Suisse

Informations forums :
Inscription : mai 2005
Messages : 1 957
Points : 615
Points : 615
Par défaut [rsync] Comment créer les répertoires parents

Bonjour,

J'utilise rsync pour backuper des données.
Admettons que le dossier ou se trouvera mes backup est

/backup/

Si donc je backup le dossier "voiture" et son contenu, rsync va créé un dossier voiture ainsi

/backup/voiture/

Jusqu'a la pas de problème

Mais maintenant je veux backup le dossier "piston" qui se trouve dans "voiture/ford/piston/"

rsync m'affichera un message d'erreur comme quoi les dossiers n'existe pas, soit "voiture/ford/

Pour le moment j'ai une condition qui va voir si le dossier distant existe si, non il crée avec l'option -p pour créer egalement l'arborescence
Code :
1
2
3
4
5
6
7
8
 
	if [ ! -d $LOCAL_MOUNT_FOLDER$FOLDER_TARGET ]; then 
		#Crée aussi sont arborescence
		mkdir -p $LOCAL_MOUNT_FOLDER$FOLDER_TARGET
		MESSAGE="[INFO] The target folder has been created ($LOCAL_MOUNT_FOLDER$FOLDER_TARGET)"
		echo $MESSAGE
		echo $MESSAGE >> $FOLDER_LOG/bck_start.log
	fi
Ca marche bien comme ceci, mais j'aimerais plustôt que ca soit rsync qui crée l'arborescence et supprimer cette condition.

Quelle option puis-je ajouter à rsync pour que le chemin absolue (si je peu dire ainsi) soit créé?


J'ai une deuxième question.
Comme puis faire, de manière propre, pour controler si mon démontage a bien été effactué
Code :
1
2
 
umount $FOLDER_DE_MONTAGE
Si démonté retourne true
Si pas démonté, ou umount n'a pas réussi le démontage, retourne false

Merci pour vos lumières
__________________
Il ne suffit pas de tout savoir. Vouloir et persévérer, c'est déjà presque tout!
pierrot10 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/02/2011, 09h57   #2
Expert Confirmé
 
Inscription : janvier 2011
Messages : 970
Détails du profil
Informations personnelles :
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : janvier 2011
Messages : 970
Points : 2 871
Points : 2 871
Salut,

Pourrais-tu, s'il te plaît, nous afficher les commandes exactes que tu tapes (celle qui réussie et celle qui échoue) ?

Normalement ce qui importe c'est que le répertoire racine (backup) existe et/ou celui signifié par "--backup-dir=" si présent ...


pour ce qui concerne le "umount", normalement un truc du genre devrait être suffisant :

Code :
umount /mnt/xxx && echo "Démontage : OK" || echo "Démontage : Echec"
Mais bon, sans garantie concernant le retour d'échec, ne sachant pas si "umount" rend la main immédiatement ou au bout d'un certain temps ou jamais
__________________
$ man woman
Il n'y a pas de page de manuel pour woman.
zipe31 est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/02/2011, 21h06   #3
Débutant
 
Inscription : mai 2005
Messages : 1 957
Détails du profil
Informations personnelles :
Localisation : Suisse

Informations forums :
Inscription : mai 2005
Messages : 1 957
Points : 615
Points : 615
Salut merci pour ta réponse.

Ma commande rsync est la suivante. Elle fonctionne sauf qu'elle ne crée pas les repertoire parent
Code :
rsync -avzutr --stats --del --progress --backup --backup-dir=$OLD_FILES_FOLDER$FOLDER_TARGET/`date +%d-%m-%Y`/`date +%Hh%Mm` $FOLDER_SOURCE $LOCAL_MOUNT_FOLDER$FOLDER_TARGET > $FOLDER_LOG/bck_progress.log
En sachant que
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
DOMAIN=titi
USERNAME=toto
NO=8
FOLDER_LOG=~/Documents/Backup/log/stora		#do not add /
LOCAL_HOME_FOLDER=~
REMOTE_FOLDER=data/$USERNAME
LOCAL_MOUNT_FOLDER=/Volumes/$USERNAME
OLD_FILES_FOLDER=$LOCAL_MOUNT_FOLDER/previous_datas
echo ""
echo "Select a folder to backup:"
echo "1) Documents"
echo "2) Pictures"
echo "3) Movies"
echo "4) Desktop"
echo "(Dont add a '/' at the end)"
echo ""
echo -n "Eter your choose: "
read DOSSIER
 
#Enregistre le dossier à backuper dans la variable (tous ce qui contient)
FOLDER_SOURCE=$LOCAL_HOME_FOLDER/$DOSSIER/
 
#Enregistre le dossier de destination qui contiendra le backup
FOLDER_TARGET=$LOCAL_HOME_FOLDER/$DOSSIER
Pour le umount, je ne voit pas ce que tu veux dire.
J'ai cette commande avec une boucle qui va tourner jusqu'a ce que le umount est terminé (dans le cas ou il prendre quelques secomde)
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
 
umount $LOCAL_MOUNT_FOLDER
 
		#Ici, j'aimerais créer une condition qui va controler si le montage a bien été effectué (true or false)
		#Dans le cas présent, il va seulement contrôler si un message d'erreur. Mais si le message d'erreur est différent,
		#alors la condition ne sera pas respectée (voir un peu plus bas)
		ERROR=$?
		#echo "error de montage :$ERROR"
 
		# Controle si le démontage est correctement fait.
		# Si ca n'est pas le cas, notemment parce qu'il peut est busy
		# (Occupé par la lecture/utilisation d'un fichier par un autre utilisateur)
		# Si 0 Libre, si 1 Occupé
		if [ $ERROR == 1 ]; then
			MESSAGE="[INFO] files$NO.epfl.ch/$REMOTE_FOLDER/ WAS NOT unmounted! It can be busy."
			echo $MESSAGE
			echo $MESSAGE >> $FOLDER_LOG/bck_end.log
		else
 
			while [ ! -d $LOCAL_MOUNT_FOLDER ]; do 
				echo "[INFO] Wait while unmounting"
			done
			MESSAGE="[INFO] files$NO.epfl.ch/$REMOTE_FOLDER/ is unmounted!"
			echo $MESSAGE
			echo $MESSAGE >> $FOLDER_LOG/bck_end.log
 
		fi # Fin de if [ $ERROR == 1 ]; then
Ce que je n'aime pas de ce code, c'est qu'il se base sur un message d'erreur, que je ne peux pas garantir qu'il soit toujour le meme. Je prédèrerais un truc du genre true ou false (si démonté "1", si non "0")
__________________
Il ne suffit pas de tout savoir. Vouloir et persévérer, c'est déjà presque tout!
pierrot10 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/02/2011, 22h54   #4
Expert Confirmé
 
Inscription : janvier 2011
Messages : 970
Détails du profil
Informations personnelles :
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : janvier 2011
Messages : 970
Points : 2 871
Points : 2 871
Citation:
Ma commande rsync est la suivante. Elle fonctionne sauf qu'elle ne crée pas les repertoire parent
Est-ce que par "répertoires parents" tu veux parler des répertoires sous forme de date :

"--backup-dir=$OLD_FILES_FOLDER$FOLDER_TARGET/`date +%d-%m-%Y`/`date +%Hh%Mm`"

???

Si oui, alors c'est normal, les répertoires pointés par l'option "--backup-dir" doivent exister

Si non, alors désolé, mais je n'ai pas tout saisi

Pour l'histoire du "umount", je ne sais que te dire, à part peut être de faire un test sur "mount" après un petit laps de temps, ou de vérifier l'occupation du périphérique via "lsof"...

Désolé pas trop d'idée sur la question
__________________
$ man woman
Il n'y a pas de page de manuel pour woman.
zipe31 est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 13h39.


 
 
 
 
Partenaires

Hébergement Web