logo rss

Comment transférer un fichier volumineux à travers internet grâce à GNU/Linux

J'ai récemment eu à transférer un gros fichier entre deux hôtes GNU/Linux et depuis une connexion internet lente.

Je vais détailler ici les différentes étapes pour y parvenir.

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 install rsync openssh-server

Découper le fichier

  • 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 d'une coupure, rsync sera en mesure de reprendre à partir du dernier fichier transféré.

  • Options rsync :
    • -a : mode archive
    • --bwlimit=40k : (Optionnel) nous pouvons paramétrer la bande passante maximum. Ici, 40ko/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=40k -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 toi toi 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