Dans un environnement Linux, pour la sécurité et la facilité d'utilisation, ssh est la meilleure solution. SSH, SSHFS, SCP et SFTP comme vous l'énumérez ne sont que des services différents construits sur le protocole SSH. SCP est très facile à utiliser, il fonctionne comme CP mais vous pouvez fournir des noms d'utilisateur et de machine dans le chemin. Donc, nous pourrions faire un CP comme cp ~/music/ ~/newmusic/
, mais on pourrait tout aussi bien faire scp ~/music/ [email protected]:~/newmusic
pour l'envoyer à l'ordinateur nommé host. C'est tout - nous n'avons rien à configurer. Vous serez invité à entrer le mot de passe du compte sur l'autre machine si vous n'avez pas de certificat ou une autre configuration d'authentification (scp partage ces paramètres avec ssh, bien sûr).
SFTP est un outil qui facilite l'exécution de nombreuses opérations sur un système de fichiers distant - il fonctionne comme FTP, mais il fonctionne via SSH, il est donc sécurisé et ne nécessite qu'un serveur SSH. man sftp
vous dira tout sur son utilisation. Je n'utilise pas SFTP uniquement pour déplacer un dossier entre deux machines, c'est plus utile lorsque vous avez beaucoup d'opérations à faire, comme si vous réorganisez des fichiers sur un autre ordinateur.
SSHFS étend simplement SFTP dans un système de fichiers :il vous permet de monter un hôte virtuel dans votre système de fichiers, de sorte que le réseau se déroule de manière totalement transparente. SSHFS est destiné aux configurations semi-permanentes, et pas seulement à un transfert de fichiers ponctuel. La configuration demande un peu plus d'efforts, vous pouvez en savoir plus sur le site Web du projet.
Si vous devez travailler dans un environnement à système d'exploitation mixte, Samba devient votre prochain meilleur pari. Windows et OS X prennent en charge Samba de manière entièrement automatique, et Linux le fait aussi bien qu'il soit parfois difficile à utiliser.
Mon préféré pour les cas où la sécurité n'a pas d'importance est netcat + tar :
Pour envoyer un répertoire, placez-vous dans le répertoire dont vous souhaitez envoyer le contenu sur l'ordinateur effectuant l'envoi et faites :
tar -cz . | nc -q 10 -l -p 45454
Sur l'ordinateur recevant le contenu, cd jusqu'à l'endroit où vous souhaitez que le contenu apparaisse et faites :
nc -w 10 $REMOTE_HOST 45454 | tar -xz
Remplacer $REMOTE_HOST
avec ip / hostname de l'ordinateur effectuant l'envoi. Vous pouvez également utiliser un port différent au lieu de 45454
.
Ce qui se passe réellement ici, c'est que l'ordinateur 'récepteur' se connecte à l'ordinateur expéditeur sur le port 45454 et reçoit le contenu tar'd et gzip'd du répertoire, et le transmet directement à tar (et gzip) pour l'extraire dans le répertoire courant.
Exemple rapide (en utilisant localhost comme hôte distant)
Ordinateur 1
[email protected]:~/nctest/a/mydir$ ls
file_a.txt file_b.log
[email protected]:~/nctest/a/mydir$ tar -cz . | nc -q 10 -l -p 45454
Ordinateur 2
[email protected]:~/nctest/b$ ls
[email protected]:~/nctest/b$ nc -w 10 localhost 45454 | tar -xz
[email protected]:~/nctest/b$ ls
file_a.txt file_b.log
Pour les déplacements ponctuels, scp est recommandé.
Mais si vous trouvez que ce répertoire peut fonctionner et que vous devez le déplacer plusieurs fois pour maintenir l'autre position à jour, vous pouvez utiliser rsync (avec ssh).
Étant donné que rsync a beaucoup d'arguments, je le mets généralement dans un petit shell pour bien faire les choses (à chaque fois). L'idée est de n'envoyer que les éléments qui ont changé depuis la dernière exécution.
#!/bin/bash
user="nisse"
host="192.168.0.33"
echo "Sync: /home/media/music/"
rsync --archive --delete -v --progress -e "ssh -l $user " /home/media/music/ $host:/home/media/music/
Cela déplacera un répertoire appelé "/home/media/music/" de l'ordinateur local vers le PC appelé 192.168.0.33, en utilisant l'utilisateur "nisse". Et supprimez tout ce qui n'existe pas sur le PC local sur la cible.