Copier des fichiers de façon sécurisé via SSH
Il est parfois très utile de pouvoir copier un répertoire ou une liste de fichiers d’un ordinateur à l’autre, ou, d’un serveur de backup à un serveur en production.
Il est tentant pour cela de passer par un FTP, mais FTP n’est pas sécurisé, qui plus est, il est de plus en plus lent proportionnellement à la quantité de fichiers à transférer. Chaque nouveau fichier oblige l’ouverture et la fermeture d’un socket ce qui est particulièrement long quand il y en beaucoup. C’est pour quoi, SSH est avantageux : une fois le socket ouvert, tous les fichiers passent dans un “tuyau sécurisé” en flux continu avant que celui-ci ne soit fermé.
De plus, il est possible de compresser sommairement le contenu à transférer à la volée pour économiser un petit peu de bande passante, et donc de temps si vous avez un bon processeur mais un tout petit débit :-p
Pour envoyer un répertoire de sa machine vers une autre :
ssh [login]@[serveur] tar -cpf- directory | tar -xvf-
Exemple, si je veux copier le contenu de la home de l’utilisateur jmoati de mon serveur dans le répertoire courant, je taperai dans mon shell :
ssh jmoati@jmoati.net tar -cpf- /home/jmoati/ | tar -xvf-
Le contraire est aussi possible (envoyer un répertoire) avec la commande :
tar -cpf- [PATH SOURCE] | ssh [login]@[server] cd [PATH DESTINATION] \;tar -xvf-
Donc pour envoyer le contenu de ma home sur mon serveur, je taperai :
tar -cpf- /home/jmoati/ | ssh jmoati@jmoati.net cd /home/jmoati/ \;tar -xvf-
Jacques Moati @ juillet 25, 2008