wget alternative au téléchargement de fichiers

0

Je dois télécharger 10 000 fichiers zip à partir du FTP d'un client contenant environ 40 000 éléments. J'ai envisagé de faire:

$ cat > files.txt
file1
file2
file3
file4

avec

$ wget -i files.txt

Existe-t-il une meilleure solution pour un montant aussi important en cas de dépassement du délai?

DᴀʀᴛʜVᴀᴅᴇʀ
la source

Réponses:

2

La solution est bonne et assez solide: avec les bonnes options, wget va réessayer et télécharger tout fichier dont le transfert a été interrompu.

Vous pouvez également écrire un script pour la plupart des clients FTP en ligne de commande (par exemple, le client ftp BSD). Mais wget est préférable car vous pouvez le configurer pour ne pas télécharger les fichiers que vous avez déjà, ce qui le rend très pratique pour les synchronisations.

wget prend en charge (au moins sur Linux) également la limitation de débit, et il est assez facile de distribuer la liste de fichiers entre plusieurs fichiers afin de télécharger en parallèle, ou vous pouvez utiliser GNU parallèle .

LSerni
la source
1

wget est bon et compétent et fonctionnera probablement bien dans ce cas, comme mentionné dans la réponse d’Iserni, si vous fouillez dans le manuel pour connaître les options disponibles. Je vais juste énoncer quelques alternatives.

j'utilise LFTP pour les transferts et la synchronisation via FTP et SFTP. Il a un système de file d'attente interne qui fonctionne bien pour mon cas d'utilisation, prend en charge la mise en miroir, la mise en miroir inverse, le FXP, toutes les fonctions FTP standard et plus encore (même Bittorrent de nos jours).

Dans ce cas, il semble assez simple de simplement utiliser un script et wget, mais je voulais mentionner un programme qui simplifiait grandement les transferts FTP.

J'ai aussi utilisé NcFTP cela a un très bon système de traitement par lots, mais le briseur d’affaires en faveur de LFTP pour moi était qu’il supportait à la fois FTP et SFTP.

Une autre alternative est rsync qui prend également en charge FTP, et peut-être vous êtes déjà habitué à cela. Il dispose également d'options assez avancées prêtes pour le filtrage et la reprise de téléchargements interrompus.

Un avantage avec un "vrai" client FTP par rapport à batch wget L’utilisation est qu’une seule connexion au serveur peut être réutilisée, ce qui pourrait améliorer les performances. Je ne suis pas sûr qu'il existe une telle alternative pour wget, mais peut-être il y a. S'il s'agit d'une opération unique, vous pouvez probablement utiliser plus ou moins n'importe quoi.

Daniel Andersson
la source
0

LFTP est très bon à cela. Noter la continuer et développer des jokers OPTS.

lftp :~> help mirror
Usage: mirror [OPTS] [remote [local]]
Mirror specified remote directory to local directory

-c, --continue de continuer un travail en miroir si possible  -e, --delete supprime les fichiers absents du site distant      --delete-first supprime les anciens fichiers avant de transférer les nouveaux  -s, --allow-suid définit les bits suid / sgid en fonction du site distant      --allow-chown essayer de définir le propriétaire et le groupe sur les fichiers      --ignore-time ignore le temps pour décider s'il faut télécharger  -n, --only-newer ne télécharge que les fichiers les plus récents (-c ne fonctionnera pas)  -r, --no-récursion ne va pas dans les sous-répertoires  -p, --no-perms ne définit pas les autorisations de fichiers      --no-umask n'applique pas umask aux modes de fichiers  -R, - miroir inverse inverse (mettre des fichiers)  -L, --dereference télécharger les liens symboliques sous forme de fichiers  -N, --newer-than = SPEC ne télécharge que les fichiers plus récents que l'heure spécifiée  -P, --parallel [= N] télécharge N fichiers en parallèle  -i RX, --include RX, inclut les fichiers correspondants  -x RX, --exclude RX exclut les fichiers correspondants                         RX est une expression régulière étendue  -v, --verbose [= N] opération verbeuse      --log = FILE écrit les commandes lftp en cours d'exécution dans FILE      --script = FILE écrit les commandes lftp dans FILE, mais ne les exécute pas      --just-print, --dry-run idem que --script = -

Lorsque vous utilisez -R, le premier répertoire est local et le second est distant. Si le deuxième répertoire est omis, le nom de base du premier répertoire est utilisé. Si les deux répertoires sont omis, les répertoires local et distant actuels sont utilisés.

lftp :~> help mget
Usage: mget [OPTS] 
Gets selected files with expanded wildcards
 -c  continue, reget
 -d  create directories the same as in file names and get the
     files into them instead of current directory
 -E  delete remote files after successful transfer
 -a  use ascii mode (binary is the default)
 -O  specifies base directory or URL where files should be placed
Ярослав Рахматуллин
la source