logo rss

Comment transférer un fichier volumineux depuis une connexion lente grâce à GNU/Linux

Tux logo

J'ai régulièrement à transférer quelques gros fichier entre deux hôtes GNU/Linux mais depuis une connexion internet lente.

Je vais détailler ici les différentes étapes pour faciliter cela.

Schéma réseau

Pour cet exemple j'utiliserai une adresse ip privée (192.168.1.200) mais ça fonctionnera évidement aussi avec une adresse ip publique.

L'opération consiste à découper notre gros fichiers en plusieurs petits. De cette façon, si notre transfert est coupé nous serons en mesure de reprendre depuis le moment ou cela s'est arrété.

schéma d'un transfert d'un gros fichier entre deux pcs Linux et à l'aide de l'outil rsync

Installation des outils

  • Pour transférer nos fichiers, nous aurons besoin sur nos deux machines de rsync et openssh :
root@host:~# apt-get update && apt-get install rsync openssh-server

Découper le fichier

  • La commande du nous permet de voir que notre fichier fait 2,9Go :
user@SOURCE:~$ du -sh MyBigFile.mkv -rw-r--r-- 1 user std 2,9G 8 déc. 12:12 MyBigFile.mkv
  • Comme dit précédemment, nous allons découper notre gros fichier en plusieurs petits grâce à la commande split :
  • Les options de split :
    • -d : utilise un suffixe numérique qui commence à 0
    • -b : taille des fichiers, ici nous découperons par fichiers de 5Mo.
user@SOURCE:~$ split MyBigFile.mkv -d -b 5M user@SOURCE:~$ ls -lh -rw-r--r-- 1 std std 5,0M 8 déc. 23:47 x00 -rw-r--r-- 1 std std 5,0M 8 déc. 23:47 x01 [...] -rw-r--r-- 1 std std 5,0M 8 déc. 23:48 x9481 -rw-r--r-- 1 std std 5,0M 8 déc. 23:48 x9482

Transfert de fichiers

Maintenant nous pouvons transférer nos fichiers de 5Mo vers notre destination. Dans le cas ou la connexion se coupe durant le transfert, rsync sera en mesure de reprendre la copie à partir du dernier fichier transféré.

  • Options rsync :
    • -a : mode archive
    • --bwlimit=400k : (Optionnel) nous pouvons paramétrer la bande passante maximum. Ici, 400ko/s.
    • --rsh='ssh -p 22' : Préciser le port ssh de 192.168.1.200. Utile si présence d'un NAT ou si le port par défaut à été changé.
    • --stats : (Optionnel) À la fin, donner des statistiques sur le transfert effectué.
    • --progress : (Optionnel) affiche une barre de progression du transfert courant.
    • user@192.168.1.200:/home/SOURCE/x* : Dossier source, où se trouvent les fichiers découpés. Ici dans le répertoire /home/SOURCE/.
    • /home/DESTINATION/ : Répertoire de destination.
user@DESTINATION:~$ rsync --bwlimit=400k -a -v --rsh='ssh -p 22' --stats --progress user@192.168.1.200:/home/SOURCE/x* /home/DESTINATION/

Réunifier le fichier

  • Une fois que tous nos fichiers de 5Mo ont été transférés nous pouvons réunifier notre fichier originel.
user@DESTINATION:~$ cd /home/DESTINATION/ user@DESTINATION:~$ cat x* > glory.41.720p.hdtv.x264-verum.mkv user@DESTINATION:~$ ls -lh glory.41.720p.hdtv.x264-verum.mkv -rw-r--r-- 1 user std 2,9G 8 déc. 23:45 glory.41.720p.hdtv.x264-verum.mkv
Creative Commons License
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.

Contact :

adresse mail de contact