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.?
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.
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!
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.
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.
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.