Comment permettre à wget d'écraser des fichiers

9

À l'aide de la wgetcommande, comment puis-je autoriser / demander à écraser mon fichier local à chaque fois, quel que soit le nombre de fois que j'appelle.

Disons que je souhaite télécharger un fichier depuis l'emplacement: http: //server/folder/file1.html

Ici, chaque fois que je dis wget http://server/folder/file1.html, je veux que cela file1.htmlsoit écrasé dans mon système local quelle que soit l'heure à laquelle il est changé, déjà téléchargé, etc. Mon intention / cas d'utilisation ici est que lorsque j'appelle wget, je suis très sûr que je veux pour remplacer / écraser le fichier existant.

J'ai essayé les options suivantes, mais chaque option est destinée / destinée à une autre fin.

  1. -nc => --no-clobber
  2. -N => Activer l'horodatage
  3. -r => Activer la récupération récursive
Gnanam
la source

Réponses:

7
wget -q http://www.whatever.com/filename.txt -O /path/filename.txt 

-q est un mode silencieux, vous pouvez donc le jeter dans un cron sans aucune sortie de la commande

aleroot
la source
Il n'y a pas d'option directe dans la wgetcommande qui le fasse sans que je spécifie explicitement en utilisant -O filename?
Gnanam
3
Il semble qu'il n'y ait aucun moyen de forcer l'écrasement de tous les fichiers lors du téléchargement de fichiers à l'aide de wget. Cependant, utiliser l'option -N peut sûrement forcer le téléchargement et le remplacement de fichiers plus récents. wget -N Remplacera le fichier d'origine si la taille ou l'horodatage changent
aleroot
Pas vrai. diriger la sortie de la commande dans stdout et la diriger vers le fichier: wget -q $ urlYouNeedToGrap> $ fileYouWantToOverwriteEverytime
rasjani
8

Cette option fonctionne

wget -N http://server/folder/file1.html

Info

-N,  --timestamping            don't re-retrieve files unless newer than
                               local.
Steven Penny
la source
4

Utiliser à la curlplace?

curl http://server/folder/file1.html > file1.html
Stu Thompson
la source
Je ne suis pas un expert Linux. Quelle est la différence fondamentale entre wgetet curl? Je suis sûr que chaque commande est destinée à un usage spécifique.
Gnanam
1
@Gnanam: En fait, ils se chevauchent beaucoup dans l'utilitaire CLI de base. Les deux peuvent établir une connexion HTTP et enregistrer le résultat sur le disque. Pour une analyse des différences, consultez daniel.haxx.se/docs/curl-vs-wget.html Quoi qu'il en soit, l'utilisation ci-dessus est entièrement valide. Il existe également d'autres outils dans ce domaine général: curl.haxx.se/docs/comparison-table.html
Stu Thompson
Ces 2 liens sont vraiment utiles pour comprendre la différence.
Gnanam
0

Je ne pense pas que vous puissiez le faire à moins de télécharger également les répertoires (passez donc le drapeau -x). Si vous savez ce qu'est le fichier, vous pouvez utiliser -O nom de fichier, par exemple:
wget http://yourdomain.com/index.html -O index.html

James L
la source
0

Non essayé: vous pouvez peut-être travailler avec wget -r --level=0.

Autre possibilité: curl -Oécrase (mais il utilise une manière différente de choisir le nom du fichier, qui peut ou non vous intéresser).

Gilles 'SO- arrête d'être méchant'
la source
Cette wgetligne ne fait pas vraiment la bonne chose car elle crée une hiérarchie de sous-répertoires. curl -Od'autre part télécharge correctement le fichier, écrasant les copies existantes.
STH
0

Pourquoi ne pas mettre un petit wrapper autour du wget dans votre script?

Le script pourrait déplacer tous les fichiers vers un emplacement temporaire, puis sauvegarder les fichiers / pages Web distants.

En cas de succès, supprimez les fichiers dans l'emplacement temporaire. En cas d'échec, ramenez les fichiers en arrière et générez une erreur.

Il n'y a pas de moyen simple de faire ce que vous voulez en utilisant simplement wget à moins que vous ne connaissiez spécifiquement le nom de tous les fichiers, auquel cas l'option -O vous permettra de forcer le nom du fichier téléchargé.

Richard Holloway
la source