• [^] # Solutions alternatives

    Posté par . En réponse au message Rsync : restaurer une sauvegarde. Évalué à 1.

    J'ai testé les solutions alternatives que tu m'as proposé, mais je n'ai pas aimé (pour résumer en une ligne^^).

    J'ai pondu un petit script (ci-après) pour sauvegarder les propriétaires et les groupes des fichiers, et les restaurer facilement (après une sauvegarde/restauration avec rsync).

    La ligne principale du script :

    ls -ldQ `du -a $RACINE | cut -f2` | awk -F' ' '{print "chown "3ドル":"4,ドル8ドル}' | grep -e '^[a-z]' >> $DROITS

    Le script fabrique un autre script, droits.sh (une série d'instructions chown), qu'il n'y a plus qu'à exécuter pour restaurer les propriétaires et groupes des fichiers.


    #!/bin/bash

    # création d'un script de restauration automatique des propriétaires et groupes sur une arborescence

    # répertoire racine de l'arborescence à sauvegarder
    RACINE=/home/santos/rsync/test/root
    # emplacement du script à créer
    DROITS=/home/santos/rsync/test/droits.sh
    # date de création du script
    DATE=`date`

    # vérification de l'utilisateur qui exécute le programme
    if [ `whoami` != 'root' ]
    then
    echo 'Vous devez être root pour exécuter ce programme.'
    exit 1
    fi

    # vérification de l'existence de la racine
    test -d $RACINE
    if [ $? != 0 ]
    then
    echo $RACINE' : répertoire introuvable.'
    exit 1
    fi

    # initialisation du script
    cat /dev/null > $DROITS
    echo "#!/bin/bash" >> $DROITS
    echo "#" >> $DROITS
    echo "# Créé le : $DATE" >> $DROITS
    echo "#" >> $DROITS
    echo "# Racine : $RACINE" >> $DROITS
    echo "#" >> $DROITS
    echo "" >> $DROITS
    echo "##### Vérifications préliminaires #####" >> $DROITS
    echo "" >> $DROITS
    echo "# vérification de l'utilisateur qui exécute le programme" >> $DROITS
    echo 'if [ `whoami` != "root" ]' >> $DROITS
    echo "then" >> $DROITS
    echo " echo 'Vous devez être root pour exécuter ce programme.'" >> $DROITS
    echo " exit 1" >> $DROITS
    echo "fi" >> $DROITS
    echo "" >> $DROITS
    echo "# vérification de l'existence de la racine" >> $DROITS
    echo 'test -d '$RACINE >> $DROITS
    echo 'if [ $? != 0 ]' >> $DROITS
    echo "then" >> $DROITS
    echo " echo $RACINE' : répertoire introuvable.'" >> $DROITS
    echo " exit 1" >> $DROITS
    echo "fi" >> $DROITS
    echo 'echo "Restauration des droits sur le répertoire et son contenu :"' >> $DROITS
    echo 'echo " '$RACINE'"' >> $DROITS

    # écriture des instruction de restauration des droits
    echo "##### DEBUT #####" >> $DROITS
    ls -ldQ `du -a $RACINE | cut -f2` | awk -F' ' '{print "chown "3ドル":"4,ドル8ドル}' | grep -e '^[a-z]' >> $DROITS
    echo "##### FIN #####" >> $DROITS

    # finalisation du script
    echo 'echo "Droits restaurés aevc succès."' >> $DROITS

    # configuration des droits sur le script créé
    chmod 740 $DROITS
    chown root:root $DROITS

    echo "Script de restauration des droits créé avec succès."
    echo " Racine : $RACINE"
    echo " Emplacement du script : $DROITS"

    exit 0