Comment copiez-vous des fichiers d'un serveur distant vers un dossier local dans emacs en utilisant dired / tramp?

9

Lorsque j'utilise tramp pour ouvrir un répertoire distant (disons Cx Cf / ssh: user @ example: / somedirectory), il ouvre un tampon dired pour ce répertoire distant. Le problème est que je veux copier des répertoires et / ou des fichiers du serveur distant sur ma machine locale. J'ai essayé quelques syntaxes comme marquer tous les répertoires ou fichiers, appuyer sur 'C' et spécifier local: / somelocaldir ou juste / somelocaldir, mais au mieux les fichiers sont copiés sur un fichier quelque part sur le serveur distant.

Existe-t-il un moyen de copier des fichiers d'un tampon distant (clochard) vers un répertoire local? Je n'utilise emacs que depuis 6 mois, donc s'il y a une approche complètement différente qui est meilleure et me permet toujours d'utiliser emacs (de préférence avec dired), ce serait génial.

Juste pour clarifier, je ne suis pas intéressé par la visualisation, l'édition, la liste, etc. des fichiers distants. Je veux juste copier des fichiers d'un serveur distant sur ma machine locale, avec le même effet que vous obtiendriez si vous aviez utilisé scp ou scp -r. J'espère juste pouvoir le faire sans devoir abandonner emacs ou même utiliser l'eshell (mais je vais probablement le faire jusqu'à ce que j'obtienne une réponse ici).

labyrinthe
la source
Dans la plupart des installations que j'ai vues, cela C-x C-f /user@somehost:/somedirsuffit car scpc'est la méthode d'échange par défaut. Essayez-le et voyez. Vous pouvez peut-être enregistrer quelques bosses clés.
ephsmith
Cela ouvre juste un tampon dired. Il ne copie pas réellement le répertoire comme "scp -r user @ somehost: / somedir". ferait.
labyrinthe
Je comprends mieux votre question maintenant. Le titre de la question me faisait penser que vous vouliez copier des fichiers directement depuis dired. J'utilise ansi-termpour des commandes comme ça si je ne veux pas quitter emacs. Emacs a été conçu pour la personnalisation. Je suis sûr que vous obtiendrez une réponse avec un extrait de lisp à un moment donné.
ephsmith

Réponses:

8

Voici une façon. Cela fonctionne pour moi sur emacs 23.

En mode Dired, accédez au fichier que vous souhaitez copier.

  1. Appuyez sur Mpour marquer le fichier.
  2. Faites un M-x dired-do-copyet vous serez invité à indiquer un emplacement dans le mini-tampon.
  3. Modifiez l'emplacement à l'emplacement local que vous souhaitez copier et entrez.

Terminé.

ephsmith
la source