FTP: récupérer le dernier fichier d'une arborescence
4 réponses
stephane.albin
Bonjour,
J'ai un r=E9pertoire contenant des fichiers ayant tous la m=EAme r=E8gle
de nommage. Et mon archivage me cr=E9e aussi un lien vers le dernier
fichier cr=E9=E9 :
archive_000
archive_001
archive_002
...
last -> archive_034
A partir de cela, est-il possible de r=E9cup=E9rer par ftp le dernier
fichier ?
Soit directement, soit en passant par le lien last.
Bien s=FBr, si je mets "get last" dans mon script, je n'obtiens pas le
nom de l'archive mais le fichier last.
La seule solution =E0 laquelle je pense est de cr=E9er plut=F4t un
v=E9ritable fichier "last" qui contiendra le nom du dernier fichier. Et
transf=E9rer en premier ce fameux "last" pour conna=EEtre le nom de
l'archive =E0 r=E9cup=E9rer.
Mais je souhaiterais =E9viter 2 transferts ftp. Une id=E9e ?
Je pr=E9cise aussi que cela doit fonctionner avec un ftp de base sur
d'anciens syst=E8mes Irix.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Laurent Wacrenier
écrit:
Mais je souhaiterais éviter 2 transferts ftp. Une idée ? Je précise aussi que cela doit fonctionner avec un ftp de base sur d'anciens systèmes Irix.
Il faut lire le lien (ou le contenu du fichier) en continuant à écrire. Ça ne se fait pas avec un seul pipe. Soit tu utilise deux pipes dont forcément un nommé, soit tu te sert de coprocessus (ksh doit avoir ça).
Avec une pipe nommée :
# /bin/sh ( TMP=/tmp/last.$$ mkfifo $TMP || exit 1 echo user ftp toto@ echo prompt echo dir last $TMP LAST=`sed 's/.*-> //' < $TMP` rm -f $TMP echo get $LAST ) | ftp ftp
Mais je souhaiterais éviter 2 transferts ftp. Une idée ?
Je précise aussi que cela doit fonctionner avec un ftp de base sur
d'anciens systèmes Irix.
Il faut lire le lien (ou le contenu du fichier) en continuant à
écrire. Ça ne se fait pas avec un seul pipe. Soit tu utilise deux
pipes dont forcément un nommé, soit tu te sert de coprocessus (ksh
doit avoir ça).
Avec une pipe nommée :
# /bin/sh
(
TMP=/tmp/last.$$
mkfifo $TMP || exit 1
echo user ftp toto@
echo prompt
echo dir last $TMP
LAST=`sed 's/.*-> //' < $TMP`
rm -f $TMP
echo get $LAST
) | ftp ftp
Mais je souhaiterais éviter 2 transferts ftp. Une idée ? Je précise aussi que cela doit fonctionner avec un ftp de base sur d'anciens systèmes Irix.
Il faut lire le lien (ou le contenu du fichier) en continuant à écrire. Ça ne se fait pas avec un seul pipe. Soit tu utilise deux pipes dont forcément un nommé, soit tu te sert de coprocessus (ksh doit avoir ça).
Avec une pipe nommée :
# /bin/sh ( TMP=/tmp/last.$$ mkfifo $TMP || exit 1 echo user ftp toto@ echo prompt echo dir last $TMP LAST=`sed 's/.*-> //' < $TMP` rm -f $TMP echo get $LAST ) | ftp ftp
Nicolas George
wrote in message :
A partir de cela, est-il possible de récupérer par ftp le dernier fichier ? Soit directement, soit en passant par le lien last. Bien sûr, si je mets "get last" dans mon script, je n'obtiens pas le nom de l'archive mais le fichier last.
Je suggérerais volontiers d'utiliser zsh et son module zftp, pour n'établir qu'une connexion, et pouvoir la manipuler en shell :
zfopen serveur zfcd repertoire list=`zfdir` <parser list pour trouver le nom du fichier> zfget fichier
On doit pouvoir faire la même chose avec curl par exemple, mais ça demandera deux connexions, une pour obtenir la liste, et une autre pour récupérer le fichier.
stephane.albin@free.fr wrote in message
<1119011704.611108.26240@g14g2000cwa.googlegroups.com>:
A partir de cela, est-il possible de récupérer par ftp le dernier
fichier ?
Soit directement, soit en passant par le lien last.
Bien sûr, si je mets "get last" dans mon script, je n'obtiens pas le
nom de l'archive mais le fichier last.
Je suggérerais volontiers d'utiliser zsh et son module zftp, pour n'établir
qu'une connexion, et pouvoir la manipuler en shell :
zfopen serveur
zfcd repertoire
list=`zfdir`
<parser list pour trouver le nom du fichier>
zfget fichier
On doit pouvoir faire la même chose avec curl par exemple, mais ça demandera
deux connexions, une pour obtenir la liste, et une autre pour récupérer le
fichier.
A partir de cela, est-il possible de récupérer par ftp le dernier fichier ? Soit directement, soit en passant par le lien last. Bien sûr, si je mets "get last" dans mon script, je n'obtiens pas le nom de l'archive mais le fichier last.
Je suggérerais volontiers d'utiliser zsh et son module zftp, pour n'établir qu'une connexion, et pouvoir la manipuler en shell :
zfopen serveur zfcd repertoire list=`zfdir` <parser list pour trouver le nom du fichier> zfget fichier
On doit pouvoir faire la même chose avec curl par exemple, mais ça demandera deux connexions, une pour obtenir la liste, et une autre pour récupérer le fichier.
Pascal Bourguignon
writes:
Bonjour,
J'ai un répertoire contenant des fichiers ayant tous la même règle de nommage. Et mon archivage me crée aussi un lien vers le dernier fichier créé : archive_000 archive_001 archive_002 ... last -> archive_034
A partir de cela, est-il possible de récupérer par ftp le dernier fichier ? Soit directement, soit en passant par le lien last. Bien sûr, si je mets "get last" dans mon script, je n'obtiens pas le nom de l'archive mais le fichier last.
La seule solution à laquelle je pense est de créer plutôt un véritable fichier "last" qui contiendra le nom du dernier fichier. Et transférer en premier ce fameux "last" pour connaître le nom de l'archive à récupérer.
Mais je souhaiterais éviter 2 transferts ftp. Une idée ? Je précise aussi que cela doit fonctionner avec un ftp de base sur d'anciens systèmes Irix.
Merci par avance, Stéphane Albin
Utilise sitecopy !
La première fois, il transférera tout le répertoire, et ensuite ils ne transférera que les modifications.
Nobody can fix the economy. Nobody can be trusted with their finger on the button. Nobody's perfect. VOTE FOR NOBODY.
stephane.albin@free.fr writes:
Bonjour,
J'ai un répertoire contenant des fichiers ayant tous la même règle
de nommage. Et mon archivage me crée aussi un lien vers le dernier
fichier créé :
archive_000
archive_001
archive_002
...
last -> archive_034
A partir de cela, est-il possible de récupérer par ftp le dernier
fichier ?
Soit directement, soit en passant par le lien last.
Bien sûr, si je mets "get last" dans mon script, je n'obtiens pas le
nom de l'archive mais le fichier last.
La seule solution à laquelle je pense est de créer plutôt un
véritable fichier "last" qui contiendra le nom du dernier fichier. Et
transférer en premier ce fameux "last" pour connaître le nom de
l'archive à récupérer.
Mais je souhaiterais éviter 2 transferts ftp. Une idée ?
Je précise aussi que cela doit fonctionner avec un ftp de base sur
d'anciens systèmes Irix.
Merci par avance,
Stéphane Albin
Utilise sitecopy !
La première fois, il transférera tout le répertoire, et ensuite ils ne
transférera que les modifications.
J'ai un répertoire contenant des fichiers ayant tous la même règle de nommage. Et mon archivage me crée aussi un lien vers le dernier fichier créé : archive_000 archive_001 archive_002 ... last -> archive_034
A partir de cela, est-il possible de récupérer par ftp le dernier fichier ? Soit directement, soit en passant par le lien last. Bien sûr, si je mets "get last" dans mon script, je n'obtiens pas le nom de l'archive mais le fichier last.
La seule solution à laquelle je pense est de créer plutôt un véritable fichier "last" qui contiendra le nom du dernier fichier. Et transférer en premier ce fameux "last" pour connaître le nom de l'archive à récupérer.
Mais je souhaiterais éviter 2 transferts ftp. Une idée ? Je précise aussi que cela doit fonctionner avec un ftp de base sur d'anciens systèmes Irix.
Merci par avance, Stéphane Albin
Utilise sitecopy !
La première fois, il transférera tout le répertoire, et ensuite ils ne transférera que les modifications.