Re: Fusionner deux dossiers

Top Page

Reply to this message
Author: Thomas Arnoux
Date:  
To: guilde
Subject: Re: Fusionner deux dossiers
Bonjour

Le 06/02/2017 à 15:57, Thomas Arnoux a écrit :
> Je cherche à fusionner deux dossiers contenant une arborescence et des
> fichiers similaires.


Merci à ceux qui m'ont répondu.

J'ai trouvé une solution à mon problème en seulement deux commandes,
avec l'utilisation successive de rsync puis de find.

D'abord on déplace les fichiers qui ne posent pas de problème (plus
récents ou n'existant que dans le dossier source). rsync gère bien les
fichiers identiques (même timestamp, même taille), en les supprimant de
la source sans créer de backup dans la cible.

Avec les options longues, ça donne ça (je n'utilise pas le classique
"-a" au complet, mais uniquement "-rt" qui me suffit dans mon
environnement) :

    rsync --recursive \
          --times \
          --update \
          --backup \
          --suffix="."$(date +"%Y%m%d%H%M") \
          --prune-empty-dirs \
          --remove-source-files \
          $SOURCE/* $TARGET/


Il ne reste plus que des dossiers vides et des fichiers plus anciens
dans la source, on les traite avec find, pour déplacer ces derniers en
les renommant avec un suffixe "unique".

    cd $SOURCE
    find . -type f -exec mv \{} ${TARGET}/\{}.$(date +"%Y%m%d%H%M") \;


Petit bonus, on vire les dossiers vides, et on supprime la source, qui
devrait désormais être vide.

    find $TARGET -type d -empty -delete
    find $SOURCE -type d -empty -delete
    rmdir $SOURCE


Encore merci.
--
Thomas