Comment reprendre un gros transfert de fichiers SCP sous Linux
Question : Je téléchargeais un fichier volumineux à l'aide de SCP, mais le transfert de téléchargement a échoué au milieu car mon ordinateur portable s'est déconnecté du réseau. Existe-t-il un moyen de reprendre le transfert SCP interrompu là où je l'ai laissé, au lieu de télécharger à nouveau le fichier ?
Basé à l'origine sur le protocole BSD RCP, SCP (Secure copy) est un mécanisme qui vous permet de transférer un fichier entre deux points d'extrémité via une connexion SSH sécurisée. Cependant, en tant que simple protocole de copie sécurisée, SCP ne comprend pas la demande de plage ou le transfert partiel comme le fait HTTP. En tant que telles, les implémentations SCP populaires telles que l'outil de ligne de commande scp ne peuvent pas reprendre les téléchargements interrompus à partir de connexions réseau perdues.
Si vous souhaitez reprendre un transfert SCP interrompu, vous devez vous fier à d'autres programmes qui prennent en charge les demandes de plage. Un tel programme populaire est rsync. Semblable à scp, rsync peut également transférer des fichiers via SSH.
Supposons que vous essayez de télécharger un fichier (bigdata.tgz) à partir d'un hôte distant remotehost.com en utilisant scp, mais que le transfert SCP a été arrêté au milieu en raison d'une connexion SSH bloquée. Vous pouvez utiliser la commande rsync suivante pour reprendre facilement le transfert arrêté. Notez que rsync doit également être installé sur le serveur distant.
$ cd /path/to/directory/of/partially_downloaded_file
$ rsync -P --rsh=ssh [email :bigdata.tgz ./bigdata.tgz
L'option -P est la même que --partial --progress, permettant à rsync de fonctionner avec des fichiers partiellement téléchargés. L'option --rsh=ssh indique à rsync d'utiliser ssh comme shell distant.
Une fois la commande invoquée, les processus rsync sur les hôtes locaux et distants comparent un fichier local (./bigdata.tgz) et un fichier distant ([email :bigdata.tgz), déterminent entre eux quelle partie du fichier n'est pas la même et transfèrent l'écart à l'une ou l'autre extrémité. Dans ce cas, les octets manquants dans le fichier local partiellement téléchargé sont téléchargés à partir d'un hôte distant.

Si la session rsync ci-dessus est elle-même interrompue, vous pouvez la reprendre autant de fois que vous le souhaitez en tapant la même commande. rsync redémarrera automatiquement le transfert là où il s'était arrêté.