Je souhaite transférer des fichiers (un dossier de musique) entre deux ordinateurs Linux. Après avoir cherché le meilleur moyen de le faire, j'ai vu qu'il y avait beaucoup de façons de le faire. Je sais que cela a été demandé beaucoup , partout et tout le temps . Le principal problème avec cela est qu'il n'y a pas de consensus clair et récent sur la meilleure façon de faire cette tâche en 2011 pour les débutants sous Linux (même en fonction de certains paramètres).
Donc, dans l’esprit des sites Web Stack Exchange, je souhaite que cela ne soit pas lié à ma situation particulière, mais plutôt à un guide destiné à d’autres également sur la façon de transférer des fichiers entre deux ordinateurs Linux sur un réseau local. Je pense qu'un wiki serait utile pour beaucoup.
Voici ce que j'ai trouvé jusqu'à présent:
- ssh
- sshfs
- scp
- sftp
- nfs
- samba
- donneur
Quel est le plus facile? Plus flexible? Le plus simple? Meilleure solution? Quels sont les avantages et les inconvénients de chacun? Y a-t-il d'autres (meilleures) options? Quels sont les paramètres pour choisir la meilleure méthode (la solution peut dépendre du nombre de fichiers, de la taille du fichier, de la facilité par rapport à la flexibilité, ...)?
la source
Réponses:
Dans un environnement Linux, à la fois pour la sécurité et la convivialité, ssh est la meilleure solution. SSH, SSHFS, SCP et SFTP, tels que vous les répertoriez, ne sont que des services différents fondés sur le protocole SSH. SCP est très facile à utiliser, il fonctionne comme le CP, mais vous pouvez fournir des noms d’utilisateur et d’ordinateur dans le chemin. Donc, nous pourrions faire un CP comme
cp ~/music/ ~/newmusic/
, mais nous pourrions tout aussi facilement l'scp ~/music/ user@host:~/newmusic
envoyer à l'ordinateur nommé hôte. C'est ça - nous n'avons pas besoin de mettre en place quelque chose. Vous serez invité à saisir le mot de passe du compte sur l'autre ordinateur si vous n'avez pas de certificat ou une autre authentification configurée (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 un serveur FTP, mais il s'exécute via SSH. Il est donc sécurisé et ne requiert qu'un serveur SSH.
man sftp
vous dira tout sur la façon de l'utiliser. Je n'utilise pas SFTP uniquement pour déplacer un dossier entre deux ordinateurs, c'est plus utile lorsque vous devez effectuer de nombreuses opérations, comme si vous réorganisiez 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 contenu du réseau se déroule de manière totalement transparente. SSHFS est destiné aux configurations semi-permanentes, pas à un seul transfert de fichier. La mise en place nécessite un peu plus d’efforts, que vous pouvez lire sur le site Web du projet .
Si vous avez besoin de travailler dans un environnement de système d'exploitation mixte, Samba devient votre meilleur choix. Windows et OS X prennent en charge Samba de manière totalement automatique, tout comme Linux, bien que son utilisation soit parfois rude.
la source
scp
fonctionner, avons-nous besoin de mettre en place une sorte de serveur SSH, un auditeur ou de débloquer quelque chose de l'autre côté? Je reçois des erreurs "Connexion refusée".openssh-server
doit être installé dans Ubuntu Natty.ssh
cryptage est utilisé, ce qui entraînera une surcharge supplémentaire. Si les ordinateurs impliqués ont des processeurs assez lents, cela peut faire la différence. Dans ce casnetcat
ou similaire (voir la réponse de Caspar) pourrait être préférable. Bien sûr, uniquement si vous n'avez pas réellement besoin de cryptage (dans un réseau local protégé).Netcat + tar est ma solution préférée dans les cas où la sécurité importe peu :
Pour envoyer un répertoire, cd dans le répertoire dont vous voulez envoyer le contenu sur l'ordinateur et envoyez-le:
tar -cz . | nc -q 10 -l -p 45454
Sur l'ordinateur recevant le contenu, sélectionnez l'emplacement où vous souhaitez que le contenu apparaisse et procédez comme suit:
nc -w 10 $REMOTE_HOST 45454 | tar -xz
Remplacez
$REMOTE_HOST
par ip / nom d'hôte de l'ordinateur effectuant l'envoi. Vous pouvez également utiliser un autre port au lieu de45454
.Ce qui se passe en réalité, c’est que l’ordinateur «récepteur» se connecte à l’ordinateur émetteur sur le port 45454 et reçoit le contenu du répertoire tar'd et gzip'd, et le transmet directement à tar (et à gzip) pour l’extraire dans le répertoire en cours.
Exemple rapide (utilisation de localhost en tant qu'hôte distant)
Ordinateur 1
Ordinateur 2
la source
-q
option indique que vous utilisez openbsd-netcat , alors que gnu-netcat est également assez courant (par défaut dans Arch Linux ). Pourriez-vous étendre votre réponse pour inclure la syntaxe de gnu-netcat ?Scp est recommandé pour les déplacements uniques.
Mais si vous trouvez que ce répertoire peut fonctionner et que vous devez le déplacer plusieurs fois pour que l'autre position soit mise à jour, vous pouvez utiliser rsync (avec ssh).
Comme rsync a beaucoup d'arguments, je le mets généralement dans un petit shell, donc je le comprends bien (à chaque fois). L'idée est d'envoyer uniquement les choses qui ont changé depuis la dernière fois.
Ceci déplacera un répertoire appelé "/ home / media / music /" de l'ordinateur local vers l'ordinateur appelé 192.168.0.33, à l'aide de l'utilisateur "nisse". Et supprimez tout élément sur la cible qui n’existe pas sur le PC local.
la source
Je vous recommanderais d’essayer des alternatives plutôt que d’utiliser directement SSH pour déplacer des fichiers à l’intérieur de votre propre réseau local (LAN) étant donné que les frais généraux sont immenses. J'irais avec la solution de Caspar si celle-ci pour une raison quelconque ne fonctionnait pas pour vous:
A la source:
Sur la destination:
Cela ne sera pas seulement plus léger que l’utilisation de SSH, mais bien plus rapide avec des vitesses allant de 45 à 65 Mo sur un convertisseur UTP CAT6 standard.
Si vous voulez vraiment tirer le meilleur parti de la connexion, essayez de remplacer
wget
parlftp
et avec les commandespget -n20
etmirror -r
.la source
Le plus rapide est probablement
netcat
(comme décrit caspar).J'aime la combinaison de
tar
&ssh
, qui est sécurisée et toujours rapide:Sur la source
En faisant cela en tant que root, il préserve les autorisations de fichiers. Ou utiliser des
-p
deux côtés. Peut également-S
être envisagé si vous avez des fichiers fragmentés.Il est possible de réduire la charge de chiffrement
ssh
si vous utilisez unarcfour
chiffrement qui fonctionne avec openSSH:Pour mettre à jour le chemin distant,
rsync
c'est parfait:la source
Si cela doit absolument être fait sur le réseau local, je l'emploierais
rsync
, car il reprendra là où il s'est arrêté s'il est interrompu. Il propose également quelques autres astuces pour minimiser la quantité de données transférées, bien que je doute que beaucoup d’entre elles soient pertinentes pour la copie d’une bibliothèque musicale dans un lieu vierge. Si la sécurité vous préoccupe, définissez-la d'RSYNC_RSH=ssh
abord et les données seront tunnelées via ssh.Si je le faisais, cependant, je n’utiliserais probablement pas le réseau local. Je copierais les fichiers sur un disque dur USB puis sur un disque dur. D'après mon expérience, cela peut facilement être plusieurs ordres de grandeur plus rapide que de passer par le réseau local, même si vous devez copier les fichiers deux fois - USB 2.0 est évalué à 480 Mbps, ce qui est plus rapide que tout ce qui est à court d'Ethernet gigabit et qu'il est moins sensible aux conditions. ce qui dégradera les performances d'un réseau local. Il est également totalement indépendant du système d'exploitation, à condition que vous utilisiez un système de fichiers que toutes les machines impliquées peuvent gérer. Je recommanderais VFAT / FAT32, car il s'agit d'un système assez universel.
la source
Je suggérerais rsync car il copiera les fichiers progressivement. Vous pouvez le configurer pour copier uniquement les fichiers modifiés ou nouveaux une fois que vous avez effectué la mise à jour initiale. Vous pouvez utiliser ssh comme couche de transport si vous le souhaitez.
la source
J'utilise Unison , qui est un synchroniseur de fichiers génial sur de nombreux protocoles différents. Vous pouvez le configurer pour utiliser
scp
,rcp
,ftp
ou même localement sur le système de fichiers entre deux dossiers. Je l'utilise pour synchroniser ma bibliothèque musicale, car il peut transférer plusieurs fichiers à la fois sur le réseau et est vraiment paramétrable dans sa configuration. Je garde ma collection de musique sauvegardée et synchronisée sur 2 ou 3 ordinateurs. Il ne copie que les fichiers modifiés, en conservant un index aux deux extrémités du transfert afin de pouvoir savoir quand un client a modifié le fichier ou quand le fichier du serveur a été modifié.Votre kilométrage peut varier, mais c’est certainement bien mieux que d’
scp
intégrer votre collection de musique à chaque fois que vous ajoutez une nouvelle chanson :)la source
J'ai d'abord suivi le processus ssh pour la connexion sans mot de passe d'abord http://www.tecmint.com/ssh-passwordless-login-using-ssh-keygen-in-5-easy-steps/
Pour les scripts et les fichiers texte, les opérations suivantes me conviennent parfaitement
Pour transférer des données d'un hôte local à un hôte distant.
cat localfile | ssh <user>@<ip> "cat > <path>/<remotefile>"
Pour transférer des données d'un hôte distant à un hôte local.
ssh <user>@<ip> "cat > <path>/<remotefile>" | cat > localfile
Cela me permet de transférer des fichiers sur des systèmes embarqués sur lesquels le client ssh ou scp n'est pas intégré.
Pas de SCP - seulement SSH.
la source