À quel point serait-il fiable de télécharger sur 100 000 fichiers via WGET à partir d'un fichier bash via SSH?

StackOverflow https://stackoverflow.com/questions/380341

  •  22-08-2019
  •  | 
  •  

Question

J'ai un fichier bash qui contient des commandes WGET pour télécharger plus de 100 000 fichiers totalisant environ 20 Go de données.

Le fichier bash ressemble à quelque chose:

wget http://something.com/path/to/file.data

wget http://something.com/path/to/file2.data

wget http://something.com/path/to/file3.data

wget http://something.com/path/to/file4.data

Et il y en a exactement 114 770 rangées. À quel point serait-il fiable de SSH dans un serveur sur lequel j'ai un compte et l'exécuter? Ma session SSH finirait-elle finalement? Devrais-je être ssh'ed pendant tout le temps? Et si mon ordinateur local s'était écrasé / s'est arrêté?

De plus, quelqu'un sait-il combien de ressources cela prendrait? Suis-je fou de vouloir faire cela sur un serveur partagé?

Je sais que c'est une question étrange, je me demande si quelqu'un a des idées. Merci!

Était-ce utile?

La solution

Utilisation

#NoHup ./ScriptName &> Logname.log

Cela garantira

  • Le processus se poursuivra même si la session SSH est interrompue
  • Vous pouvez le surveiller, car il est en action

Je recommande également, que vous puissiez avoir une invite à intervalles réguliers, sera bon pour l'analyse des journaux. par exemple #echo "1000 files copied"


En ce qui concerne l'utilisation des ressources, cela dépend entièrement du système et principalement des caractéristiques du réseau. Théoriquement, vous pouvez appeler le temps avec juste la taille des données et la bande passante. Mais dans la vraie vie, les retards, les latences et les extraits de données entrent en scène.

Alors faites des assuins, faites des mathématiques et vous obtiendrez la réponse :)

Autres conseils

Cela dépend de la fiabilité du support de communication, du matériel, ...!

Vous pouvez utiliser screen Pour le faire fonctionner pendant que vous vous déconnectez de l'ordinateur distant.

Vous souhaitez déconnecter le script de votre shell et le faire s'exécuter en arrière-plan (en utilisant noHup), afin qu'il continue en s'exécute lorsque vous vous déconnectez.

Vous souhaitez également avoir une sorte d'indicateur de progression, comme un fichier journal qui enregistre chaque fichier téléchargé, ainsi que tous les messages d'erreur. NoHup envoie Stderr et Stdout dans les fichiers. Avec un tel fichier, vous pouvez récupérer des téléchargements cassés et des courses avortées plus tard.

Donnez-lui d'abord un test avec un petit ensemble de fichiers pour voir si vous avez baissé la commande et aimez la sortie.

Je vous suggère de le détacher de votre coquille avec nohup.

$ nohup myLongRunningScript.sh > script.stdout 2>script.stderr &
$ exit

Le script s'exécutera à la fin - vous n'avez pas besoin d'être connecté tout au long.

Vérifiez toutes les options que vous pouvez offrir à WGET pour la réessayer en échec.

Si cela est possible, générez des sommes de contrôle MD5 pour tous les fichiers et utilisez-le pour vérifier s'ils ont tous été transférés correctement.

Start it with

nohup ./scriptname &

and you should be fine. Also I would recommend that you log the progress so that you would be able to find out where it stopped if it does.

wget url >>logfile.log

could be enough.

To monitor progress live you could:

tail -f logfile.log

It may be worth it to look at an alternate technology, like rsync. I've used it on many projects and it works very, very well.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top