wget commence le téléchargement puis arrête "ne peut pas écrire"

13

J'utilise wget pour mettre en miroir certains fichiers d'un serveur à l'autre. J'utilise la commande suivante:

wget -x -N -i http://domain.com/filelist.txt

-x = Parce que je veux garder la structure du répertoire

-N = horodatage pour obtenir uniquement les nouveaux fichiers

-i = Pour télécharger une liste de fichiers à partir d'un fichier externe, un sur chaque ligne.

De petits fichiers tels que celui que je teste, c'est un gros téléchargement de 326 Ko.

Mais un autre de 5 Go ne télécharge que 203 Mo, puis s'arrête (il est toujours de 203 Mo de donner ou de prendre quelques kilo-octets)

Le message d'erreur affiché est:

Impossible d'écrire dans âpath / to / file.zipâ

(Je ne sais pas pourquoi il y a des personnages étranges avant et après. J'utilise Putty dans Windows et cela peut ou non avoir quelque chose à voir avec ça, alors je les ai laissés dedans. Je suppose que non.).

La réponse complète est la suivante: (j'ai remplacé les chemins, l'ip et le nom de domaine)

--2012-08-31 12: 41: 19-- http://domain.com/filelist.txt Résolution de domain.com ... MY_IP Connexion à domain.com | MY_IP |: 80 ... connecté. Requête HTTP envoyée, en attente de réponse ... 200 OK Longueur: 161 [texte / simple] Fichier serveur pas plus récent que le fichier local âdomain.com / filelist.txtâ

--2012-08-31 12: 41: 19-- http://domain.com/path/to/file.zip Connexion à domain.com | MY_IP |: 80 ... connecté. Demande HTTP envoyée, en attente de réponse ... 200 OK Longueur: 5502192869 (5.1G) [application / zip] Les tailles ne correspondent pas (local 213004288) - récupération.

--2012-08-31 12: 41: 19-- http://domain.com/path/to/file.zip Connexion à domain.com | MY_IP |: 80 ... connecté. Demande HTTP envoyée, en attente de réponse ... 200 OK Longueur: 5502192869 (5.1G) [application / zip] Enregistrement sur: âdomain.com / path / to / file.zipâ

3% [====>
] 213 003 412 8,74 M / s en 24 s

Impossible d'écrire sur âdomain.com / path / to / file.zipâ

Cela ne semble pas faire de différence si le répertoire du chemin existe déjà ou est créé à la volée.

Quelqu'un a-t-il une idée de pourquoi il s'arrête et comment je peux le réparer?

Toute aide sera la plus appréciée.

EDIT: J'ai également essayé de faire un wget, aucune entrée de fichier et de renommer le fichier. Cette fois, il télécharge un peu plus de 3 Go et donne ensuite la même erreur d'écriture.

wget -x -N http://domain.com/path/to/file.zip -O files/bigfile.zip
John Mellor
la source
Avez-vous des caractères spéciaux sur votre chemin?
JMeterX
Cela fonctionne-t-il comme prévu si vous tapez "cd / tmp &&" avant la commande?
Votre disque est-il plein?
Jenny D
Le disque n'est certainement pas plein et il n'y a pas de caractères spéciaux. Bien que la longueur du chemin soit de 87 caractères, certains googleurs ont montré des problèmes avec les noms longs (le nom de fichier ne compte que 29 caractères). Il échoue de la même manière dans tmp.
John Mellor
@FreezeDriedPop Étant donné que le nom de votre fichier est relativement long, vous pouvez le modifier en utilisant cette -Ooptionwget -O test.zip http://link
JMeterX

Réponses:

7

Vous obtiendrez cette erreur si vous manquez d'espace disque. exécutez df et vous verrez si le répertoire dans lequel vous écrivez est à 100%

Soleil
la source
4

C'est un problème avec une URL longue. J'y ai aussi fait face. J'ai donc utilisé bit.ly et raccourci l'url. Fonctionne comme un charme!

Namchester
la source
Êtes-vous sûr? Il semble peu probable que le téléchargement démarre et s'arrête à un moment donné lorsque le problème est lié à l'URL, qui n'est utilisée qu'au tout début de la transaction.
Felix Frank
Oui. J'ai eu le même problème. Essayez-le.
Namchester
Je pense que le problème est que Linux ne peut pas reconnaître la longue URL.
Namchester le
Je suppose que tu veux dire la coquille? Parce que le noyau est définitivement innocent de cet échec. Même pour le shell, ce n'est pas probable, mais si c'était le cas, encore une fois, le téléchargement ne pourrait même pas démarrer - le shell ferait une erreur avant même de bifurquer le wgetprocessus prospectif .
Felix Frank
1
Pour moi, c'était la chaîne de requête sur l'url -wget http://dltr.org/skin/frontend/lowes/default/css/custom.css?001
Damodar Bashyal
1

Je viens d'ajouter un -à la tarcommande après le tuyau après wget

j'ai eu

wget https://example.com/path/to/file.tar.gz -O -|tar -xzf -C /path/to/file

puis l'a changé en

wget https://example.com/path/to/file.tar.gz -O - | tar -xzvf - -C /path/to/file
shadi
la source
N'oubliez pas le `-` pour le goudron aussi :).
Shital Shah
0

S'il commence à enregistrer un fichier volumineux et en écrit 203 Mo, je soupçonne que vous avez soit un système de fichiers complet à la réception, soit que la connexion réseau expire.

Vous pouvez utiliser df -h sur le serveur de réception pour voir si le système de fichiers est plein

Consultez cette réponse pour les problèmes de délai d'attente avec wget:

/programming/2291524/does-wget-timeout

En outre, réessayez le transfert qui a échoué et omettez l'option -N d'horodatage

Exécutez également ulimit -a pour voir s'il existe une limite de taille de fichier sur le serveur de réception

DisgruntledUser
la source
Je ne suis pas un expert, mais je pense qu'il exécute CentOS 6. Je ne sais pas non plus comment vérifier la représentation des caractères. Bien qu'il commence à télécharger et télécharge très bien d'autres fichiers plus petits, je ne pense donc pas que cela ressemble au problème.
John Mellor
Les fichiers qu'il réussit à télécharger ont-ils des caractères amusants dans leurs noms?
DisgruntledUser
Non, pas de caractères étranges du tout, sauf si un point est un caractère étrange, par exemple "megapack_4.11.zip". Mais encore une fois, je l'ai essayé avec le nom "bigfile.zip" et le même problème se produit.
John Mellor
Peut-être que ce n'est que Putty qui est réglé sur une représentation de caractères différente de celle de UTF-8
DisgruntledUser
Oui, je ne pense vraiment pas que ce soit le problème, je viens de le mentionner car je copiais et collais de Putty. Le vrai problème auquel on ne peut pas écrire.
John Mellor
0

Je faisais quelque chose de similaire à:

wget -x -N -i http://domain.com/filelist.txt

Je recevais:

--2016-12-09 07:44:23--  https://www.example.com/dir/details?abc=123&def=456
Resolving www.example.com (www.example.com)... 1.2.3.4
Connecting to www.example.com (www.example.com)|1.2.3.4|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: unspecified [text/html]
details?abc=123&def=456: No such file or directory

Cannot write to ‘details?abc=123&def=456’ (Success).

Dans mon fichier filelist.txt équivalent, j'avais une URL comme:

https://www.example.com/dir/details?abc=123&def=456

Donc, pour déboguer, j'ai essayé de créer le même fichier que wget essayait de créer:

touch "details?abc=123&def=456"
touch: cannot touch ‘details?abc=123&def=456’: No such file or directory

Alto! Il semble que ?c'était le problème, mais la bonne pratique serait de supprimer tous les caractères spéciaux des noms de fichiers, imaginez ce que &cela fera s'il n'est pas échappé.

nikc
la source