WGET, renommer le fichier téléchargé à la volé - Logiciels - Linux et OS Alternatifs
Marsh Posté le 21-12-2015 à 11:35:35
ReplyMarsh Posté le 21-12-2015 à 11:47:35
Ah, par contre le -N ne fonctionne plus avec le -O
L'image est téléchargée à chaque exécution de la commande, même si le fichier de l'autre côté n'est pas modifié.
Ca refonctionne dès que je vire le -O
"Server file no newer than local file `latest.png' -- not retrieving"
Auriez-vous une idée svp ?
Edit : retour de la commande pas vue avant : " WARNING: timestamping does nothing in combination with -O. See the manual"
Argh
Marsh Posté le 21-12-2015 à 12:08:36
MAN wget ?
Citation : -O, --output-document=FILE write documents to FILE. |
Edit: Zut, validé le message avec du retard
Marsh Posté le 21-12-2015 à 12:17:31
ReplyMarsh Posté le 21-12-2015 à 12:23:06
Je vais donc être obligé de les renommer après récupération. A enchainer dans le script. Tant pis. Vaut mieux limiter la bande passante avec le -N
Marsh Posté le 21-12-2015 à 12:36:22
Tu peux le faire avec curl sinon:
curl http://127.0.0.1/test.png -z test.png -o test.png --location --remote-time --silent
En mettant une date plus ancienne sur le fichier avec "touch -d 20010101 test.png" ça le rétélécharge bien
Et en en mettant une plus récente avec "touch -d 20151221 test.png" ça le retélécharge pas. Idem si la date est identique via le --remote-time
Marsh Posté le 21-12-2015 à 12:40:08
Merci.
Les images sources sont mises à jour toutes les minutes, 5m ou x heures en fonction de l'image.
Je n'ai pas compris le fonctionnement de touch, mais je vais tester/chercher.
Merci
Marsh Posté le 21-12-2015 à 12:46:35
touch c'est juste pour modifier la date du fichier pour valider qu'il était bien écrasé si plus ancien et conservé si plus récent
Marsh Posté le 21-12-2015 à 12:58:24
Mais la valeur que tu rentres (dans l'exemple de mon script qui tournera tout seul), elle ne changera pas, au bout de 5m ça ne sera plus valide pour les essais suivants ? (j'ai bien dit que je n'ai pas (encore) pigé)
Marsh Posté le 21-12-2015 à 13:08:31
oublie le passage parlant de "touch" à ce compte-là, c'était juste pour tester.
Juste la commande curl t'intéresse
curl http://127.0.0.1/test.png -z test.png -o test.png --location --remote-time --silent
-z : permet de comparer la date du fichier distant avec le fichier spécifié
-o : où écrire le fichier téléchargé s'il est plus récent que le fichier spécifié via -z
--remote-time : écrire le fichier spécifié dans -o avec la date du fichier distant
Marsh Posté le 21-12-2015 à 13:16:32
Merci BEAUCOUP ! J'essaie dans l'heure et te tiens au courant
Marsh Posté le 21-12-2015 à 13:35:14
Parfait !
Merci.
Y a plus qu'à créer le script et le programmer.
Marsh Posté le 21-12-2015 à 13:47:07
Mmmm, si t'as encore un peu de temps...
Certaines des images sont des cartographies. J'aimerai enregistrer certaines dans un sous dossier ("animation" ) et les dater quand elles sont mises à jour, ce qui me permettra des les utiliser pour générer une animation.
J'ai regardé dans un manuel en ligne de CURL mais n'ai rien trouvé (ou alors je l'ai mal compris).
T'aurais une méthode ?
Marsh Posté le 21-12-2015 à 16:04:25
ben tu fais un timestampage à la volée
|
et tu auras le dossier créé si besoin, avec un par jour + un timestamp à la minute sur chaque fichier
Marsh Posté le 21-12-2015 à 17:40:20
Alors avant de reprendre ta proposition, la suite de la synchro :
Certaines images sont grosses (2-3 Mo) et le débit du serveur distant est pas super rapide. Donc au lieu d'écraser le fichier en cours et attendre qu'il se télécharge en entier (posant des problèmes d'affichage côté Web, surtout avec la périodicité courte des synchro), j'ai copié vers fichiers vers "nom-de-fichier-TEMP.png" puis une fois copié j'ai fait un :
mv nom-de-fichier-TEMP.png nom-de-fichier.png
Black-lord, je regarde comment je peux exploiter ta proposition, et je reviens. Merci
Marsh Posté le 21-12-2015 à 17:56:42
Je n'arrive à rien, ça foire.
Comment fais tu avec cet exemple d'URL ?
curl "http://serveur-distant.com/image-a-recup.png" -z ~/www.monsite.com/www/datas/Copie-Image.png -o ~/www.monsite.com/www/datas/Copie-Image.png-TEMP.png --location --remote-time
Marsh Posté le 22-12-2015 à 05:47:48
je ne vais pas te donner de solution toute faite, mais te donner une piste vers la solution.
regarde la commande mktemp, ça te permettra de gerer tes fichiers temporaires.
A noter que si ton probleme est le debit, tu risques d'accumuler le retard...
Marsh Posté le 22-12-2015 à 10:50:30
Les images ont largement le temps d'être récupérées entre 2 MAJ des sources. De toute façon, je synchronise toutes les 2, 5 et 30m en fonction de la source.
Marsh Posté le 22-12-2015 à 13:01:49
Je n'ai pas de prb de fichier temp, avec CURL + le MV après tout va bien.
J'aimerai pour certaines images, avoir une autre copie dans un dossier spécifique avec une date et heure, ce qui me permet ensuite de les assembler pour créer une vidéo, mais seulement pour les nouvelles images, les modifiées.
Par exemple Image01-20151222.1350.png
Et j'ai donc tenté hier avec ton 1er message, mais curl ne veut rien savoir. Tu as mis un -d qui, dans la doc que j'ai trouvé, permet de poster des données lors de la requete.
Le -o que j'utilise déjà ne correspond pas à l'ajout de date.
Marsh Posté le 22-12-2015 à 13:50:08
black_lord t'a donné la réponse à ta question dans un de ses précédents messages, tu peux utiliser date en faisant varier les variables à % (cf man) pour avoir la date/heure dans le nom du fichier
Marsh Posté le 22-12-2015 à 14:38:40
Justement, comme je l'explique audessus, je n'y arrive pas, soit il y a une faute dans l'exemple, soit je m'y prends mal.
Et je ne retrouve aucune notion de gestion de date dans le manuel
Marsh Posté le 22-12-2015 à 15:56:02
Il ne faut pas chercher dans le manuel de curl, tu dois faire appel au binaire "date" et l'insérer dans ta ligne de commande.
Pour reprendre son exemple, dans ton terminal fait:
date +%Y-%m-%d_%H:%M
que tu peux réutiliser sous la forme
$(date +%Y-%m-%d_%H:%M) ou `date +%Y-%m-%d_%H:%M`
dans une autre commande:
echo img-$(date +%Y-%m-%d_%H:%M)
et également dans ta commande curl:
curl ... -o img-$(date +%Y-%m-%d_%H:%M).png
Après tu peux modifier comme tu l'entends les % en te basant sur le manuel de date
Marsh Posté le 22-12-2015 à 17:59:50
merci beaucoup !
Je teste ça tout à l'heure.
Re-merci :]
Marsh Posté le 22-12-2015 à 21:23:29
Perfect, j'arrive à créer mon dossier, copier, etc.
Messieurs, merci pour le coup de main !
Marsh Posté le 21-12-2015 à 11:33:10
Salut,
J'ai regardé les docs sur le net mais je ne vois rien, ce n'est peut-être pas possible.
J'ai plusieurs images à récupérer sur un site web distant pour les mettre en "cache" sur un autre site. Je vais l'automatiser avec un cron sur le serveur Web.
J'utilise -N pour vérifier le timestamp et ne télécharger que si l'image source a changé.
Plusieurs de ces images ont le même nom (mais ne sont pas dans le même dossier).
J'aimerai toutes les stocker dans le même dossier sur le serveur de destination.
J'aimerai donc, lors du wget, indiquer un nom de sortie. Est-ce possible ?
---------------
Vidéo Concorde Air France | www.kiva.org