Sioncarf59 a écrit 7 commentaires

  • [^] # Re: pistes

    Posté par  . En réponse au message Problème sur enchainement de commandes find et rsync. Évalué à 1.

    Merci Gil pour ces infos précieuses

  • [^] # Re: pistes

    Posté par  . En réponse au message Problème sur enchainement de commandes find et rsync. Évalué à 1.

    Bonjour Gil, merci encore pour ton aide mais visiblement cela ne fonctionne pas non plus, il semble que l'option -I de xargs ne soit pas disponible, j'ai juste 4 options dispo : -r -x -0 et -t dans mon shell…
    Tu as passé un certain temps à m'aider et je t'en remercie vivement ainsi que Benja.
    J'opte finalement pour le script et la solution "un peu crade" que tu m'as donnée ci dessous avec un script "un peu crade aussi" je suppose vu mon niveau mais au moins ca marche et ca me suffit !

    #!/bin/sh
    read -p "entrer repertoire de recherche dans data2/D/ sous forme 'AA_MM_*' :" rep
    read -p "entrer repertoire cible a creer dans /data2_export/ 'DOSSIER' :" cible
    read -p "entrer nom fichier recherchés 'fichier.ext ou *' :" fich
    repcible="/share/data2_export/"ScibleS"/"
    echo $repcible
    mkdir "$repcible"
    /opt/bin/find /share/data2/D/ -maxdepth 1 -type d -name "$rep" -exec /opt/bin/find {} -name "$fich" > "Srepcible"S"liste.txt" \;
    resultat="Srepcible"S"liste.txt"
    cat $resultat
    nb=$(wc -l < $resultat)
    echo SnbS" fichiers trouvés"
    read -p "Extraire ces fichiers ? appuyer sur 'o' ou 'n' " reponse
    if [ "$reponse" = "n" ]; then exit
    fi
    if [ "$reponse" = "o" ]; then
    while IFS= read -r line <&3; do
    rsync -aR "$line" "$repcible"
    done 3< "Srepcible"S"liste.txt"
    fi

    NB : j'ai mis des "S" à la place de certains "$" pour ce post sinon c'était illisible

    bref un GRAND MERCI A VOUS DEUX !

  • [^] # Re: questions

    Posté par  . En réponse au message Problème sur enchainement de commandes find et rsync. Évalué à 1.

    Indirection ? je découvre un mot ! mais d'après ce que j'ai lu ce serait une sorte de numéro (Inode ?) de classement unique à chaque fichier ou dossier.
    L'idée étant de se servir de ces inodes pour appliquer la commande Rsync.

    j'ai testé la commande suivante

    [/share/data2/D] # /opt/bin/find . -maxdepth 1 -type d -name "22_11_*" -exec /opt/bin/find {} -name "7964.vce" -print0 \;| xargs -0 ls -li

    qui me retourne bien la liste des mes fichiers avec les inodes en début de ligne :

    75932330 -rwxr-x--- 1 francois everyone 274638 Nov 2 08:59 ./22_11_02/backup_22_11_02_09h00/share/archives/TBC/Save_VCE_Disque Ext/7964_Saint_André/7964.vce
    84369674 -rwxr-x--- 1 francois everyone 277122 Nov 2 10:35 ./22_11_02/backup_22_11_02_11h00/share/archives/TBC/Save_VCE_Disque Ext/7964_Saint_André/7964.vce

    Visiblement Xargs réinjecte bien les données d'entrées de la commande simple ls mais dès que la commande est un peu plus complexe telle que rsync qui demande une source et une destination, j'ai l'impression que cela ne fonctionne pas.

  • [^] # Re: pistes

    Posté par  . En réponse au message Problème sur enchainement de commandes find et rsync. Évalué à 1.

    Bonjour Gil

    echo $SHELL renvoit /bin/sh

    La commande find $(find /share/data2/D -type d -maxdepth 1 -name 22_11\*) -type f -name 7964.vce me renvoit le massage ci dessous

    BusyBox v1.01 (2013.04.25-18:11+0000) multi-call binary

    Usage: find [PATH...] [EXPRESSION]

    CSearch for files in a directory hierarchy. The default PATH is
    the current directory; default EXPRESSION is '-print'`

    Pour lui le Path avec $ n'est pas reconnu visiblement.

    Entre temps j'ai essayé avec print0 et xargs -0 sans succès, je dois mal m'y prendre ou alors la limitation du bash fait que ca ne marche pas , j'ai essayé la commande suivante et d'autres variantes :
    /opt/bin/find . -maxdepth 1 -type d -name "22_11_*" -exec /opt/bin/find {} -name "7964*.vce" -print0 \; | xargs -0 rsync -aR "/share/data2_export/7964/"

    j'ai le message de retour suivant :
    'ERROR: destination must be a directory when copying more than 1 file
    rsync error: errors selecting input/output files, dirs (code 3) at main.c(788) [Receiver=3.0.7]
    rsync: connection unexpectedly closed (9 bytes received so far) [sender]
    rsync error: error in rsync protocol data stream (code 12) at io.c(601) [sender=3.0.7]'

    J'arrive à stocker les résultats de la commande suivante dans un fichier liste.txt dans lequel la liste des fichiers à copier est correcte mais je ne parviens pas via Rsync à ce qu'il reprenne le contenu de cette liste qui pourrait être une solution.

    /opt/bin/find . -maxdepth 1 -type d -name "22_11_*" -exec /opt/bin/find {} -name "7964.vce" > liste.txt \;

  • [^] # Re: pistes

    Posté par  . En réponse au message Problème sur enchainement de commandes find et rsync. Évalué à 1.

    Merci à toi Benja pour ces très bonnes pistes !

    Vu ma réponse précédente, il semble donc que mon langage soit du bash avec des commandes limitées.

    et la commande find ci dessous imbriquée avec le $ ne semble pas fonctionner ni celle avec -wholename

    find $(find /share/data/D2 -type d -maxdepth 1 -name 22_11\*)

    Pour rappel la commande suivante fonctionne bien mais pour ressortir 8 fichiers d'un total de quelques Mo, cela prend presque 15mn d’où mon besoin de cibler sur certains dossiers (commençant par "22_11_*" dans lesquels rechercher avec -maxdepth 1 )

    /opt/bin/find . -name "7964.vce*" -exec rsync -a -R {} /share/data2_export/7964/ \;

    la commande rsync fait donc bien ce qui est demandé, c'est juste que je n'arrive pas à lui mettre les données restreintes de 2 commandes find enchainées.
    Comme dit avant la piste du print -0 et du xargs -0 devrait marcher.

  • [^] # Re: questions

    Posté par  . En réponse au message Problème sur enchainement de commandes find et rsync. Évalué à 2.

    Merci encore Gil pour tes explications, effectivement je ne suis pas un pro du tout dans ce domaine, je ne connais pas bien la différence entre unix, linux…, je suis un utilisateur windows et MS-DOS à la base, bref un user de base mais je vois bien toute la puissance possible des commandes Linux ou Bash visiblement (je l'ignorais)

    La commande type rsync me renvoie rsync is /usr/bin/rsync

    La commande command -v rsync me renvoie /usr/bin/rsync

    Le déballage de BusyBox a été fait dans ce répertoire /opt/bin > réponse oui !

    Je vais creuser avec les options -print0 et xargs -0.
    Un ami m'avait fait des scripts il y a quelques années et il s'était pris la tête avec cette limitation des commandes en Bash donc.

    Un extrait de ce script fonctionne ci dessous par exemple

    /opt/bin/find /share/data/* -type f -mmin -60 -print0| xargs -0 tar cf - |

  • [^] # Re: questions

    Posté par  . En réponse au message Problème sur enchainement de commandes find et rsync. Évalué à 2.

    Merci Gil pour tes réponses.

    J'ai testé et en gros rien ne fonctionne en l'état. Je pense que cela vient de mon "linux".
    Je suis sur un NAS Qnap TS 219 installé depuis quelques années déjà mais qui tourne toujours bien pour mes besoins.

    Après réflexion, je me souviens qu'il manquait pas mal d'options dans les commandes find par exemple et j'ai du, avec l'aide d'un ami, installer des package IPKG pour obtenir les options complémentaires de find et de Xargs qui ne fonctionnaient pas de base.
    Il semblerait que j'ai un linux basic light d'installé et c'est surement pour cela que les options de rsync --files-from= ne fonctionne pas je pense.
    C'est la raison pour laquelle je dois chercher la commande find via /opt/bin/find qui a été ajoutée à cet endroit pour pouvoir disposer de toutes les options.
    Concernant les options installées, je suis incompétent pour refaire ce que mon ami avait fait à l'époque. Ce que je vois dans /opt/bin/find ce sont les commandes supplémentaires installées par exemple find@ et xargs@ mais je ne vois pas de rsync@ installé, ce pourquoi je ne dispose pas des options un peu poussées mais on s'éloigne du sujet..Je vais me rapprocher de mon ami pour savoir s'il peut m'aider sur ce point d'installation afin que la commande rsync puisse fonctionner avec les options.