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 :

Déplacer des sous-répertoires et leur contenu


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 71
    Par défaut Déplacer des sous-répertoires et leur contenu
    Bonjour,
    Je cherche à compresser et archiver des répertoires et leur contenu.
    En prenant pour hypotèse que ces répertoires sont dans $REPERTOIRE, je veux archiver les fichiers qui se trouvent dans les sous-répertoires de $REPERTOIRE, puis déplacer ces sous-répertoires dans un répertoire d'archives $REPARCHIV :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
             find $REPERTOIRE"/" -mindepth 1 -mtime +2 -print -exec gzip -r {} \;
             find $REPERTOIRE"/" -mindepth 1 -mtime +2 -print -exec cp -rf {} $REPARCHIV \;
             find $REPERTOIRE"/" -mindepth 1 -mtime +2 -print -exec rm -rf {} \;
    Ce code zippe bien les fichiers et les déplace mais sans les répertoires qui les contiennent.
    Si j'enlève le mindepth, tout est dépacé même le répertoire racine $REPERTOIRE.

    Une idée?
    Merci.

  2. #2
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 673
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 673
    Par défaut
    Bonjour,

    c'est une contrainte gzip ? ce serait plus évident avec tar.
    STFW...
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 71
    Par défaut
    Oui, ils sont en tar quand ils sont plus anciens.
    Dans un premier temps, il faut juste que je les zippe.

  4. #4
    Expert confirmé Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 041
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 041
    Par défaut
    salut,

    sauf qu'en l'état avec tar il risque surtout de se retrouver avec tout un tas d'archives qui contiennent les mêmes données
    je pense qu'en priorité il conviendrait d'affiner le find parce que le résultat est assez hasardeux là...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    rep1                  # gzip recursif
    rep1/fichier1         # puis un autre gzip sur ce fichier qui n'existe plus ? (qui a été gzippé au tour précédent en fait)
    rep1/fichier2         # idem
    rep1/rep2             # même topo
    rep1/rep2/fichier1    # ...

  5. #5
    Expert confirmé Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 041
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 041
    Par défaut
    je propose ce truc là :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    find "$REPERTOIRE/" -type d -mindepth 1 -mtime +2 |   # on récupère les répertoires concernés
    sort -ru |                                            # on les trie vite fait
    while read i; do                                      # pour chacun de ces répertoires
       mkdir -p "$REPARCHIV/$i" &&                        # on recrée son arborescence dans le répertoire d'archivage
       find "$i/" -maxdepth 1 -type f |                   # puis pour chaque fichier qu'il contient
       while read j; do
          gzip -q "$j" &&                                 # on gzip le fichier
          mv "${j}.gz" "$REPARCHIV/${i}/"                 # et on le déplace dans l'arborescence correspondante
       done
       rmdir "$i/" 2>/dev/null                            # à la fin on tente de virer le répertoire, s'il est vide
    done
    y'a peut-être plus simple/plus évident mais ça me saute pas aux yeux pour l'instant...

  6. #6
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 673
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 673
    Par défaut
    Citation Envoyé par N_BaH
    ce serait plus évident avec tar.
    Citation Envoyé par BufferBob
    sauf qu'en l'état avec tar il risque surtout de se retrouver avec tout un tas d'archives qui contiennent les mêmes données
    mais pourquoi ?

    j'ai peut-être mal compris que Michalak veut compresser les sous-répertoires :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find "$REPERTOIRE/" -type d -mindepth 1 -mtime +2 -exec sh -c 'tar -zcvf "${1}.tar.gz" "$1"; mv "${1}.tar.gz "$ARCHIVES"/' sh {} \;
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  7. #7
    Expert confirmé Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 041
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 041
    Par défaut
    Citation Envoyé par N_BaH Voir le message
    mais pourquoi ?
    ben parce que tar est récursif par défaut et laisse les fichiers d'origine justement (c'est pour ça que son début de script faisait mine de fonctionner partiellement avec gzip), sinon sur le principe je suis d'accord que c'est probablement beaucoup plus simple et efficace à mettre en oeuvre

    à priori ici il veut déplacer les répertoires contenant les fichiers gzippés

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 8
    Dernier message: 31/01/2015, 21h04
  2. Déplacer des sous dossiers par le début de leur nom
    Par hilibili dans le forum Shell et commandes GNU
    Réponses: 1
    Dernier message: 25/07/2014, 15h49
  3. [XL-2003] recherche un fichier dans des sous répertoire et recopier son contenu
    Par hallscar dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 01/12/2011, 20h30
  4. Réponses: 2
    Dernier message: 07/10/2011, 12h57
  5. Réponses: 6
    Dernier message: 25/10/2006, 21h00

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