IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Shell et commandes GNU Discussion :

[rsync] Comment créer les répertoires parents


Sujet :

Shell et commandes GNU

  1. #1
    Débutant  
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 102
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 102
    Points : 953
    Points
    953
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  2. #2
    Expert éminent

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Points : 6 276
    Points
    6 276
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  3. #3
    Débutant  
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 102
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 102
    Points : 953
    Points
    953
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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")

  4. #4
    Expert éminent

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Points : 6 276
    Points
    6 276
    Par défaut
    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

Discussions similaires

  1. Réponses: 1
    Dernier message: 18/06/2008, 16h28
  2. Comment créer des répertoires et fichiers.
    Par killysui dans le forum ASP.NET
    Réponses: 4
    Dernier message: 11/06/2008, 20h54
  3. Comment créer les menu en flash?
    Par amiraa83 dans le forum Flash
    Réponses: 1
    Dernier message: 05/05/2008, 22h35
  4. Comment récupérer le répertoire parent d'un répertoire?
    Par Jayceblaster dans le forum Delphi
    Réponses: 14
    Dernier message: 23/05/2006, 19h38
  5. Comment créer un répertoire en asp
    Par PrinceMaster77 dans le forum ASP
    Réponses: 11
    Dernier message: 28/10/2004, 17h31

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo