Forum Programmation.shell Copier seulement des fichiers .htm/.html d'une arboresence vers un autre pc.

Posté par  .
Étiquettes : aucune
0
19
avr.
2006
Bonjour tout le monde,

Voila mon problème :
j'ai acces à un serveur en remote (Irix) et dessus il y a un site intranet qui comporte quelque chose comme 4To de données, tout confondu, et je souhaiterais juste copier du serveur vers mon client (Suse 9.3) l'arborescence complète mais uniquement les fichiers .htm et .html.

En gros ne copier que les pages webs sur lesquelles je vais bosser, sans avoir à me taper 4To de copie (surtout sur un HDD de 15Go :D) tout en gardant la structure du repertoire du site web.

j'ai fais un find . -name *.htm -type f, et il y a bien 35 000 fichiers, j'ai donc le chemin absolu et le nom des fichiers mais je ne sais rien faire de plus, alors si vous avez des choses à me proposer ça serais gentil.

Merci beaucoup.
  • # Tu as presque la solution !

    Posté par  . Évalué à 1.

    Est-ce que cette commande ne répondrait pas à ton problème :

    find . -name *.htm -type f -exec scp -r {} user@portable:chemin_de_destination \;

    Je n'ai pas testé, mais ça devrait rouler, normalement....
    Le -r passé à scp devrait recopier l'arborescence sur le PC de destination, il me semble....
    • [^] # Re: Tu as presque la solution !

      Posté par  . Évalué à 1.

      tout d'abord merci DB,

      alors afin de réduire le problème lié au copie distance, droit des fichiers etc, j'ai reproduit un bout de site sur mon client,
      et j'ai fait ta commande un poil modifiée à savoir :
      find . -name *.htm -type f -exec cp -r {] /srv/etc/ \;

      le truc c'est que dans ce repertoire la, j'ai l'intégralité (je pense) des .htm du site mais SANS arborescence, ce qui est génant dans mon cas.
      mais je vais reconsulter la commande cp, j'ai peu etre oublié un truc concernant les repertoires.

      Merci quand même, on avance !
      • [^] # Re: Tu as presque la solution !

        Posté par  (site web personnel) . Évalué à 3.

        A priori, le problème est que tu fais autant de cp qu'il y a de fichiers, et cp /chemin/vers/un/fichier . ne reproduit pas le chemin.

        J'aurais eu tendance à mettre tous les fichiers dans un tar (les scp me claquent parfois entre les doigts quand certains fichiers ont des noms bizarres), à passer le tar à ssh et détarrer sur l'autre machine. Avec une ligne du style
        tar cf - les_arguments | ssh moi@chezmoi tar xvf - -C /quelque/part/

        où les_arguments serait le résultat du find. En gros avec
        find . -name *.htm -type f | xargs tar cf - | ssh ...blabla
        L'arborescence devrait être conservée et se retrouver dans /quelque/part/. je ne suis pas sur que ce soit exactement ça, mais l'esprit doit y être.
        On peut éventuellement rajouter un j ou z pour compresser le tar et gagner de la bande passante (mais perdre du cpu...)
        • [^] # Re: Tu as presque la solution !

          Posté par  (site web personnel) . Évalué à 3.

          Tout à fait d'accord mais 2 petites remarque me viennent à l'esprit
          1. Le Monsieur veut à la fois les html et htm donc tant qu'à faire ca donnerait
          find . -name \*.htm -or -name \*.html -type f

          (les \ ca permet que ca passe sur zsh, et sur bash d'eviter qu'il remplace par un nom de fichier du repertoire courant s'il existe)
          2.Pourquoi "tar cf -", alors que "tar c" est strictement equivalent ? (oui je suis un flemmard je sais, mais pour 2 lettres tant qu'à faire :)
          • [^] # Re: Tu as presque la solution !

            Posté par  (site web personnel) . Évalué à 2.

            2. Parce que ce n'est pas écrit dans mon 'man tar' et que je suis plutôt frileux sur ce genre de commandes : je n'ai pas envie de me retrouver avec une archive tar à un endroit que je ne connais pas ou à la place d'un des fichiers que je veux tarer.

            Aussi, il paraît que l'option -C n'est pas disponible dans toutes les implémentations de tar... Donc, prudence.
        • [^] # Re: Tu as presque la solution !

          Posté par  . Évalué à 2.

          Arf, battu et en plus élegant ... mais quand même des précisions :

          - mettre l'option p au tar pour conserver les propriétés
          - pas d'options j ou z sur Irix; c'est pas du linux
          - ma solution prend les .htm ET les .html

          Il ne te reste plus qu'à faire un mix et tu aura une solution efficace et élegante.
      • [^] # Un poil plus compliqué

        Posté par  . Évalué à 1.

        On peut surement optimiser mais déjà ça va faire le job :

        # find . \( -name "*.htm" -o -name "*.html" \) -type f -print > /tmp/liste
        # tar cvpf /tmp/site.tar `cat /tmp/liste`
        # gzip site.tar

        Tu peux rajouter autant de -o -name que tu veux ( *.php par exemple ).
  • # Re...

    Posté par  . Évalué à 2.

    Si tu veux conserver l'arborescence intacte, je te conseillerai plutot un bon vieux rsync avec le couple d'option --exclude et --include qui va bien (genre --exclude '.*' --include '.*\.html?$' à vérifier). Plus de détails via la page de man.
  • # Et rsync

    Posté par  . Évalué à 3.

    Tu as déjà ta liste de fichier, mets la dans un fichier( find ... > list_fichier ).

    Ensuite un ptit:
    rsync -av --files-from=list_source tonhost:/repertoire_copie

    Avantages:
    Tu n'as pas qu'un gros fichire à télécharger.
    Tu n'as pas à rechercher quels fichiers tu as déjà télécharger
    Tu peux reprendre le download quand tu veux
    En plus, Ne pas oublier de relancer la commande une fois fini pour avoir les dernières versions du premier fichier que tu as télécharger.

    Plus d'info: man rsync
    • [^] # Re: Et rsync

      Posté par  . Évalué à 0.

      T'es sûr qu'il y a rsync sur Irix par défaut ?
      Moi je ne suis pas sûr du tout. Sous Solaris et Tru64 pas de rsync par défaut.
  • # et Rsync

    Posté par  . Évalué à 2.

    Peut être idiot comme idée, mais pourquoi pas un Rsync avec une expression régulière comme

    rsync -a(v)z --include=*.htm --include=*.html

    c'est idiot comme idée ?
  • # Et bien !

    Posté par  . Évalué à 1.

    Je suis agréablement surpris par le nombre et la qualité des posts, y compris la rapidité, c'est bien la première fois que je vois ça sur un site, je ne connaissais pas linuxfr.org, une chose est sur, c'est qu'il va allé direct dans les favoris :D

    Alors merci à tous ceux qui ont postés des choses, je relis tout et je commence les tests, je vous tiens au courant si j'ai le temps de faire les différentes choses que j'ai lu.
    J'avoue ne pas tout avoir compris à tout, mais j'ai 8H pour comprendre

    Merci encore, à ce midi / ce soir.
  • # pas mal ..

    Posté par  . Évalué à 1.

    Donc voiçi ce que j'ai fait, avec votre aide :

    find . -name *.htm -o -name *.html | xargs tar -zcvf sitearchive.tar.gz

    mais voila, comme de bien entendu, sur ce serveur, des gens se connecte et mettre a jour leur propre section du site avec ...FRONTPAGE (gloups) qui en plus de poluer avec des tonnes de _vti etc, accepte les ESPACES, et c'est la ou ça coince, toutes les pages bien 'construite' sans espace mais avec des _ passent impec dans le tar, par contre des qu'un espace est rencontré, la ligne en question n'est pas prise en compte par le tar : error..

    alors si quelqu'un a une idée pour ne pas prendre en compte ces espaces, je suis prenneur, en attendant, j'y retourne.
    Merci encore de votre aide..
    • [^] # Les espaces

      Posté par  . Évalué à 0.

      Rajoutons les fichiers avec des espaces :

      find . \( -name "*.htm" -o -name "*.html" \) -type f | awk '{ print "\"" $0 "\"" }' | xargs tar zcvf truc.tar.gz
      • [^] # Re: Les espaces

        Posté par  . Évalué à 1.

        ok, j'ai pas testé car j'avais trouvé :

        find . -name *.htm -print0 | xargs -0 tar -zcvf archives.tar.gz
        mais au final ça ne marchais pas, alors un collègue m'a donné THE solution que voiçi :

        find . -name *.htm -o -name *.html -type f | cpio -ou | ( cd repouloncopie; cpio -id)

        Ca copie l'intégralité des fichiers avec ou sans espace dans les noms et ca recréer l'arborescence avec ... et voillaaaaa !

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.