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é.

GNU/Linux transfer big file via ssh and rsync diagram

Installation des outils

root@host:~# apt-get install rsync openssh-server

Découper le fichier

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é.

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

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 :