En SSH, comment puis-je mv à mon système local?

129

J'ai sshajouté dans le répertoire de mon hébergeur, et tarl'application Web à télécharger. Lorsque je tente de mv~/mydirectory/backupsou /home/mydirectory/backups, il définit la « maison » , comme ma racine sur le webhost que je suis en ssh'ed.

Comment puis-je mv en ssh sur un lecteur local tout en restant dans le système de l'hôte Web?

JeanSibelius
la source
À partir de quel système d'exploitation connectez-vous?
Zoredache

Réponses:

181

Tout d’abord: ssh est un moyen de se connecter à distance à un autre ordinateur. Le shell (ligne de commande) que vous obtenez une fois que ssh est (à peu près) identique à celui que vous aviez ouvert un xterm sur la machine distante. Si n'offre pas un tel moyen de déplacer des fichiers.

Cependant, le fait que l'ordinateur distant accepte les connexions ssh vous donne certaines options pour échanger des fichiers:

Utiliser scp Pour copier de votre ordinateur local vers la télécommande, tapez sur l’ordinateur local:

scp /tmp/file [email protected]:/home/name/dir

(où / tmp / file peut être remplacé par n'importe quel fichier local et / home / name / dir avec n'importe quel répertoire distant)

Pour copier de l'ordinateur distant vers l'ordinateur local, tapez, sur l' ordinateur local :

scp [email protected]:/home/name/dir/file /tmp

Utilisez sshfs C’est un peu plus avancé mais beaucoup, beaucoup plus agréable (quand la connexion Internet des deux ordinateurs est bonne. Sinon, tenez-vous-en à scp)

Vous pouvez "lier" un répertoire de l'ordinateur distant à un répertoire (vide) de l'ordinateur local. Disons que vous "liez" le répertoire / some / remote / dir de l'ordinateur distant à / home / youruser / remotecomp de votre ordinateur. S'il existe un fichier / some / remote / dir / dans l'ordinateur distant, vous pouvez le voir dans / home / votre utilisateur / remotecomp / file. Vous pouvez copier et copier comme d'habitude, et même modifier les fichiers et les répertoires distants.

Notez toutefois que, lorsque la connexion est terminée, / home / youruser / remotecomp redevient un répertoire vide et que vous ne gardez que sur l'ordinateur local les fichiers que vous avez copiés dans d'autres répertoires.

Pour y parvenir:

1) installez sshfs:

sudo apt-get install sshfs

2) créer un répertoire vide

mkdir /home/youruser/remotecomp

3) "lier" les deux répertoires (le bon terme est mount)

sshfs [email protected]:/some/remote/dir /home/youruser/remotecomp

4) profiter

5) "dissocier" les répertoires

fusermount -u /home/youruser/remotecomp

Si l'ordinateur local exécute Windows Vous pouvez trouver des versions de scppour Windows. Voir, par exemple, winscp

Josinalvo
la source
Est-il possible de copier le fichier de la machine distante vers la machine locale via "terminal sur la machine distante"? Dans votre cas, vous avez utilisé le terminal sur la machine locale. Je parle d'une situation où la machine locale est Windows et la télécommande est Ubuntu et je suis connecté à la machine distante via SSH.
Chandresh
Généralement pas. Autant que je sache, la copie via "terminal sur une machine distante" signifie que vous avez besoin d'un serveur SSH sur la "machine locale" (je l'ai volontairement ignoré lors de ma réponse, mais "le fait que l'ordinateur distant accepte les connexions SSH" signifie à dire "le fait que l'ordinateur distant
utilise
Cependant, vous pouvez trouver des "clients scp" pour Windows. Voir, par exemple, winscp.net/eng/download.php
josinalvo
J'adore l' sshfsoption
Fibo Kowalsky
Si vous transférez un fichier volumineux, utilisez rsync sur ssh avec rsync -P -e ssh /tmp/file [email protected]:/home/name/dir. En effet, si un transfert de fichier échoue à mi-parcours, scple fichier sera simplement supprimé. D'autre part, si vous utilisez rsyncl' -Poption, cela gardera un fichier incomplet sur la machine distante et, lorsque vous redémarrerez le transfert, vous vous assurerez que ce qui se trouve déjà sur la machine distante correspond au fichier sur votre machine locale. puis continuez là où le transfert s'est arrêté.
Boris
16

Vous pouvez soit utiliser scpou rsync. Dans votre système local:

scp remoteuser@remotehost:/remote/dir/file /local/dir/

Mais puisque vous avez parlé de sauvegarde, je suppose que ce serait incrémental et que vous deviez le faire de temps en temps. Donc, rsyncest un meilleur choix pour la sauvegarde incrémentielle. Sur votre shell local:

rsync -avz -e ssh remoteuser@remotehost:/remote/dir /local/dir/

voir rsync(1)et scp(1)pages de manuel pour les options.

Mohammad Hedayati
la source
10

Vous pouvez utiliser scp secure copy.

De votre coquille locale:

scp -C username@webhost:/path/of-the/tar.archive /home/mydirectory/backups/

Cet exemple va copier via ssh de /path/of-the/tar.archive de votre hébergeur vers / home / mon répertoire / sauvegardes /

Options supplémentaires:

-C : Permet la compression

pl1nk
la source
6

J'ai eu le même problème. Voici la solution facile: -

  1. Ouvrez Nautilus (l'explorateur de fichiers)
  2. Cliquez sur + Other Locationsen bas du panneau de gauche.
  3. Au fond, il y a une bande Connect to server. Écrivez l'adresse ssh dans la zone de saisie, par exemple ssh://111.222.333.444/.
  4. Entrez votre nom d'utilisateur et votre mot de passe dans la boîte de dialogue qui s'ouvre.
  5. Une fois l’authentification réussie, vous serez à homel’emplacement distant. N'hésitez pas à déplacer le fichier ici et là.
rushi
la source
Très bonne réponse! Simple et proche de la réponse à la question, c.-à-d. Comment mv partir de l’ordinateur distant ssh. La réponse est que vous ne pouvez pas, vous le faites à partir de l'ordinateur local. Ou ca! Vous le faites graphiquement à partir de votre explorateur, de sorte qu'au moins, pour l'utilisateur, il semble que vous puissiez déplacer des fichiers directement de distant à local.
Kvothe
2

Les autres réponses recommandent rsyncou scp, les deux nécessitant de connaître l'emplacement du fichier que vous souhaitez copier sur la machine distante.

Si vous voulez plutôt pouvoir vous déplacer sur la machine distante, comme vous le pouvez avec ssh, vous voulez exécuter sftp. Se connecter au serveur est très similaire à ssh, mais une fois que vous y êtes entré , tapez helppour obtenir la liste des commandes - cela vous permet de vous déplacer sur les ordinateurs locaux et distants, et de transférer facilement les fichiers.

Xanthir
la source
1

C'est étrange que c'est impossible de l'intérieur ssh. Dans un terminal classique, il est possible d’envoyer / recevoir des fichiers à l’aide des commandes zmodem.

Cela a aidé à google up zssh: http://zssh.sourceforge.net/ . On devra l'exécuter comme un wrapper à l'original ssh.

Victor Sergienko
la source