Comment forcer wget à écraser un fichier existant en ignorant timestamp?

j'ai essayé '-N' et '--no-clobber", mais le seul résultat que j'obtiens, c'est de récupérer une nouvelle copie de l'exemple existant.exe avec le nombre un nombre ajouté en utilisant cet exemple synax'.EXE.1". Ce n'est pas ce que je voudrais obtenir. J'ai juste besoin de télécharger et remplacer le fichier exemple.exe dans le même dossier où j'ai déjà enregistré une copie de example.com sans cela, wget vérifie si la mine est plus ancienne ou plus récente respecter l'exemple.exe fichier déjà présent dans mon dossier de téléchargement. Pensez-vous que je possible ou je dois créer un script qui supprime l'exemple.fichier exe ou peut-être quelque chose qui change sa date de modification, etc.?

18
demandé sur dario 2015-05-24 01:27:59

6 réponses

si vous spécifiez le fichier de sortie en utilisant le -O option il écrase n'importe quel fichier existant.

Par exemple:

wget -O index.html bbc.co.uk

Exécuter plusieurs fois garder sur-l'écriture de l'index.HTML.

28
répondu PeterSW 2015-05-24 00:09:33

wget ne vous permet pas d'écraser un fichier existant à moins que vous nommiez explicitement le fichier de sortie sur la ligne de commande avec l'option -O.

je suis un peu paresseux et je ne veux pas taper le nom du fichier de sortie sur la ligne de commande quand il est déjà connu à partir du fichier téléchargé. Par conséquent, j'utilise curl comme ceci:

curl -O http://ftp.vim.org/vim/runtime/spell/fr.utf-8.spl

soyez prudent lorsque vous téléchargez des fichiers comme celui-ci à partir de sites dangereux. La commande ci-dessus écrira un fichier nommé comme le site web connecté souhaite nommez - le (dans le répertoire courant). Le nom final peut être caché par des redirections et des scripts php ou être masqué dans L'URL. Vous pourriez finir par réécrire un fichier que vous ne voulez pas réécrire.

et si vous trouvez un fichier nommé ls ou tout autre nom attrayant dans le répertoire courant après avoir utilisé curl de cette façon, évitez d'exécuter le fichier téléchargé. Il peut s'agir d'un cheval de Troie téléchargé à partir d'un site web corrompu!

11
répondu Frédéric Marchal 2016-02-26 06:59:47

-c ou --continue

manuel:

si vous utilisez ' - c’ sur un fichier non vide, et que le serveur ne supporte pas poursuite du téléchargement, Wget va redémarrer le téléchargement à partir de zéro et remplacer entièrement le fichier existant.

8
répondu 3zzy 2016-09-14 03:31:17
wget --backups=1 google.com

renomme origine le fichier .1 suffixe et écrit le nouveau fichier au nom de fichier prévu.

pas exactement ce qui a été demandé, mais pourrait être utile dans certains cas.

6
répondu Antony Hatchkins 2016-08-05 18:29:26

j'aime l'option-c. J'ai commencé avec la page de manuel puis le web mais j'ai cherché ceci plusieurs fois. Comme si vous relayez une webcam de sorte que l'image doit toujours être nommé image.jpg. On dirait que ça devrait être plus clair dans la page de manuel.

while true
do
wget -c -i url.txt && break
echo "Restarting wget"
sleep 2
done

créer un petit fichier appelé url.TXT et coller L'URL du fichier dedans. Mettez ce script dans votre chemin ou peut-être comme alias et lancez-le. Il garde de réessayer le téléchargement jusqu'à ce qu'il n'y a pas d'erreur. Parfois à la fin il entre dans une boucle d'affichage

 416 Requested Range Not Satisfiable
 The file is already fully retrieved; nothing to do.
2
répondu Alan Corey 2017-06-16 21:40:17

mon cas d'utilisation implique deux URLs différentes, parfois la Seconde N'existe pas, mais si elle existe, je veux qu'elle écrive le premier fichier.

le problème de l'utilisation de wget-O est que, lorsque le second fichier n'existe pas, il va écraser le premier fichier avec un fichier vierge.

Donc la seule façon que j'ai pu trouver est avec une instruction if:

-- spider vérifie si un fichier existe, et renvoie 0 s'il existe

--quiet échouer tranquillement, sans sortie

-nv est calme, mais encore les rapports d'erreurs

wget -nv https://example.com/files/file01.png -O file01.png
# quietly check if a different version exists
wget --quiet --spider https://example.com/custom-files/file01.png
if [ $? -eq 0 ] ; then    
    # A different version exists, so download and overwrite the first
    wget -nv https://example.com/custom-files/file01.png -O file01.png
fi

C'est verbeux, mais j'ai trouvé nécessaire. J'espère que cela est utile pour quelqu'un.

0
répondu comfytoday 2018-01-08 06:53:19