Script avec FIND

Résolu/Fermé
yann747 Messages postés 127 Date d'inscription mardi 25 octobre 2011 Statut Membre Dernière intervention 13 octobre 2021 - 14 déc. 2011 à 16:27
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 - 15 déc. 2011 à 16:38
Bonjour,

je cherche à Uploader des fichiers "récents" et de manière récursive sur un serveur distant.
j'utilise NCFTP en ligne de commande pour l'Upload.
Il me faudrait un script du genre

-find mon_repertoire -ctime -7
recuperer la liste de fichiers avec le chemin
puis faire une boucle
ncftpput fichier_trouvé

Merci d'avance de vos réponses.
A voir également:

11 réponses

yann747 Messages postés 127 Date d'inscription mardi 25 octobre 2011 Statut Membre Dernière intervention 13 octobre 2021 2
Modifié par yann747 le 14/12/2011 à 17:06
for f in 'find /home/mon_repertoire/* -ctime -7'; do
ncftpput user,pass,serveur, "$f"
done

c'est un début, mais je ne récupère pas l'arborescence... tout arrive à la racine de mon répertoire distant
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 418
14 déc. 2011 à 17:07
Salut,

Et un :

ncftpput user,pass,serveur < <(find /home/mon_repertoire/* -ctime -7)

Ne marcherait-il pas ?
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 418
14 déc. 2011 à 17:08
Oups j'avais pas vu ton édit ;-\

ncftpput user,pass,serveur /répertoire/destination < <(find /home/mon_repertoire/* -ctime -7)
0
yann747 Messages postés 127 Date d'inscription mardi 25 octobre 2011 Statut Membre Dernière intervention 13 octobre 2021 2
14 déc. 2011 à 17:09
Pareil, tout arrive à la racine du répertoire distant :-/
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 418
14 déc. 2011 à 17:23
Et avec "répertoire/destination" (sans le slash synonyme de racine devant) ?
0
yann747 Messages postés 127 Date d'inscription mardi 25 octobre 2011 Statut Membre Dernière intervention 13 octobre 2021 2
14 déc. 2011 à 18:24
for f in 'find . -ctime -7'; do
ncftpput -R user,pass,serveur, "$f" // -R est une option de recursivité avec ncftp
done

Pour le coup, c'est récursif... mais un peu trop... J'ai tous les fichiers à la racine ainsi que dans les sous-répertoires (qui ont étés finalement crées)

ça avance doucement...
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 418
14 déc. 2011 à 18:28
J'ai tous les fichiers à la racine
Mais ce n'est pas la conséquence de la récursivité, mais le résultat de tes tests précédents, non ?
0
yann747 Messages postés 127 Date d'inscription mardi 25 octobre 2011 Statut Membre Dernière intervention 13 octobre 2021 2
14 déc. 2011 à 18:44
J'ai relancé le test en supprimant tout du serveur distant, les fichiers sont bien en double (à la racine et dans les sous-répertoires) :-/

je peux peut-être recréer localement dans répertoire de travail l'arborescence avec une boucle find + cp -r ?
puis envoyer ça? Car pour l'envoi d'un dossier entier la récursivité marche bien.

une idée de boucle pour copier les fichiers récents dans un répertoire local, conservant l'arborescence?
Merci encore zipe31!
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 418
14 déc. 2011 à 18:52
ncftpput -R user,pass,serveur, "$f"
C'est la syntaxe tel que tu l'emploies ?

Tu peux essayer avec :

ncftpput -R -u user -p password ftp://ton_serveur rep/destination "${f}"
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 418
15 déc. 2011 à 13:30
Bon, après de multiples essais je crois avoir une bonne piste ;-))

Je plante le décor...

Dans mon répertoire actuel, un répertoire (rep/) avec un sous-répertoire (rep/sous-rep/) contenant 2 fichiers texte (rep/sous-rep/toto.txt et rep/sous-rep/fich.txt).

Sur mon ftp un répertoire "backup" à la racine.

Donc pour envoyer les 2 fichiers "fich.txt" et "toto.txt" sur le ftp dans "backup" tout en conservant l'arborescence :

$ while read f; do ncftpput -R -m -f ncftp.cfg backup/"${f%/*}/" "${f}";done < <(find rep/ -type f) 
rep/sous-rep/toto.txt:                                   0.00 B     0.00 B/s  
rep/sous-rep/fich.txt:                                   0.00 B     0.00 B/s

J'ai donc maintenant sur mon ftp :

backup/
          rep/
               sous-rep/
                             toto.txt
                             fich.txt

;-))

0
yann747 Messages postés 127 Date d'inscription mardi 25 octobre 2011 Statut Membre Dernière intervention 13 octobre 2021 2
15 déc. 2011 à 14:24
Merci zipe pour le suivi :-)
la piste sent très bon...
la copie récursive sur le serveur distant marche bien maintenant,
par contre le find n'est plus pris en compte, ça prend tout.

j'ai lancé mon find indépendamment du script, il marche bien...

c'est vraiment pas loin de marcher!
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 418
15 déc. 2011 à 14:32
Comment l'intègres-tu (le find) à ta commande ftp ?
Lances-tu la commande ftp depuis un shell ou depuis un script ?
0
yann747 Messages postés 127 Date d'inscription mardi 25 octobre 2011 Statut Membre Dernière intervention 13 octobre 2021 2
15 déc. 2011 à 14:35
depuis un script
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 418
15 déc. 2011 à 14:36
De quelle façon ?
0
yann747 Messages postés 127 Date d'inscription mardi 25 octobre 2011 Statut Membre Dernière intervention 13 octobre 2021 2
15 déc. 2011 à 14:42
la dernière tentative:

while read f;
do ncftpput -R -m -f ncftp.cfg backup/"${f%/*}/" "${f}" < find . -mtime -1;
done

c'est pas sorti de la boucle :-/
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 418
15 déc. 2011 à 14:43
Normal ;-((

while read f;
do ncftpput -R -m -f ncftp.cfg backup/"${f%/*}/" "${f}" 
done < <(find . -mtime -1)
0