Existe-t-il un moyen simple de transférer des fichiers entre deux serveurs SSH / SFTP? La solution parfaite serait FileZilla, mais elle vous permet uniquement de créer une connexion entre local et distant, mais pas entre distant et distant.
Théoriquement , je pourrais ouvrir deux fenêtres Nautilus et se connecter à certains ssh://server1/path/to/folder
et ssh://server2/path/to/folder
puis il suffit de tirer les fichiers de l' un à l'autre côté. D'après mon expérience, c'est très instable. La transmission de fichiers d'une taille de 10 Mo par exemple n'est pas un problème, mais le transfert de 10 Go, par exemple, a souvent amené Nautilus à se suspendre et à y rester ps -e | grep nautilus
-> kill -9 <pid>
. J'ai également testé la même chose avec Nemo et Caja. Bien que Nemo ait tendance à être plus stable que les deux autres, il n'est toujours pas parfait et se casse également de temps en temps. FileZilla est extrêmement stable, n'a jamais vraiment réussi à le casser, mais il n'est pas très flexible en raison du fait qu'il ne peut se connecter qu'à un seul serveur SSH.
Bien sûr, je pourrais également monter un dossier avec sshfs
, mais c'est une sorte de solution gênante. Trop de travail préalable à effectuer pour exécuter un transfert simple.
Existe-t-il une application capable de gérer les transferts entre deux serveurs SSH sans interruption? Parfait serait quelque chose comme FileZilla, qui reprendra le travail si la connexion était interrompue.
Réponses:
Si vous utilisez une version Ubuntu qui est toujours prise en charge, votre
scp
commande fournira le-3
commutateur qui permet de copier des fichiers de remote1 vers remote2 via localhost :Vous pouvez également omettre le
-3
commutateur, mais vous aurez alors besoin de la clé publique (id_rsa.pub
) deuser1@remote1
dans le fichierauthorized_keys
deuser2@remote2
:scp
puis sous le capot fait unessh user1@remote1
première et à partir de làscp /path/to/file1 user2@remote2:/path/to/file2
. C'est pourquoi les informations d'identification doivent être distribuées différemment de la-3
solution.En d'autres termes:
scp -3 remote1:file1 remote2:file2
transfère le fichier de remote1 vers localhost , puis de nouveau vers remote2 . Les données voyagent à distance1 → localhost → remote2 . L' hôte local est donc le 3ème parti dans ce scénario-3
. Pour que cela fonctionne, vous aurez besoin des informations d'identification de localhost sur remote1 et remote2 car localhost se connecte aux deux.scp remote1:file1 remote2:file2
copie le fichier directement de remote1 vers remote2 à la vitesse avec laquelle ils sont connectés les uns aux autres. localhost n'est pas impliqué ici (en plus d'émettre la commande). Les données voyagent à distance1 → à distance2 . Pour que cela fonctionne, vous aurez besoin des informations d'identification de localhost uniquement sur remote1, mais vous aurez également besoin des informations d'identification de remote1 sur remote2 car localhost se connecte à remote1 uniquement, puis remote1 se connecte à remote2 .Si possible, je choisirais la deuxième approche. Comme certains commentaires le disent déjà:
généralement,le câble réseau entre remote1 et remote2 est beaucoup plus épais que le câble entre eux et localhost .la source
-3
.Dans la plupart des cas, deux serveurs ssh peuvent se rejoindre (ou au moins l'un peut atteindre l'autre), et encore une fois dans la plupart des cas, Internet du poste de travail est bien pire que l'un des serveurs.
Si c'est le cas, commander un serveur à transférer sur l'autre est la voie à suivre.
Vérifiez
nohup.out
sur server1 les erreurs.Si l'accessibilité du serveur est l'inverse, vous pouvez inverser la machine qui est le maître:
la source
Vous pouvez peut-être utiliser l'un des frontaux de l'interface graphique pour rsync:
Existe-t-il une application graphique pour la commande rsync?
Ou peut-être pourriez-vous utiliser rsync directement depuis la ligne de commande pour vous connecter aux deux serveurs distants:
"Comment synchroniser des fichiers entre deux télécommandes"
Je me connecte souvent à un serveur avec ssh, puis à partir de la ligne de commande de ce serveur, utilisez rsync pour pousser ou tirer des fichiers vers l'autre serveur distant - c'est généralement beaucoup plus rapide que d'essayer de transférer les fichiers via un troisième ordinateur.
Le rsync est assez intelligent pour faire du travail, puis si quelque chose se passe mal et interrompt le processus, il peut plus tard reprendre là où il s'était arrêté.
la source
Vous devez utiliser le protocole SCP.
scp file you want to transfer login@address_of_second_server:/path_where_you_want_to_save
la source