Bagaimana Anda menyalin file dari server jauh ke folder lokal di emacs menggunakan dired / tramp?

9

Ketika saya menggunakan tramp untuk membuka direktori jarak jauh (katakanlah Cx Cf / ssh: user @ example: / somedirectory), ia membuka buffer dired untuk direktori jarak jauh itu. Masalahnya adalah saya ingin menyalin direktori dan atau file dari server jauh ke mesin lokal saya. Saya sudah mencoba beberapa sintaksis seperti menandai semua direktori atau file, menekan 'C', dan menentukan lokal: / somelocaldir atau just / somelocaldir, tetapi yang terbaik file disalin ke file di suatu tempat di server jauh.

Apakah ada cara untuk menyalin file dari buffer diramp remote (tramp) ke dir lokal? Saya hanya menggunakan emacs 6 bulan, jadi jika ada pendekatan yang sama sekali berbeda yang lebih baik dan masih memungkinkan saya menggunakan emacs (sebaiknya w / dired), itu akan bagus.

Hanya untuk memperjelas, saya tidak tertarik melihat, mengedit, mendaftar, dll. File jarak jauh. Saya hanya ingin menyalin file dari server jauh ke mesin lokal saya, dengan efek yang sama Anda dapatkan jika Anda menggunakan scp atau scp -r. Saya hanya berharap saya bisa melakukan ini tanpa harus keluar dari emacs atau bahkan menggunakan eshell (tapi saya mungkin hanya akan melakukannya sampai saya mendapat jawaban di sini).

labirin
sumber
Di sebagian besar instalasi yang saya lihat, C-x C-f /user@somehost:/somedirsudah cukup karena scpmetode pertukaran default. Cobalah dan lihatlah. Mungkin Anda bisa menghemat beberapa gundukan utama.
ephsmith
Itu hanya membuka buffer dired. Ini sebenarnya tidak menyalin dir lebih dari seperti "scp -r user @ somehost: / somedir." akan lakukan.
labirin
Saya memahami pertanyaan Anda dengan lebih jelas sekarang. Judul pertanyaan membuat saya berpikir Anda ingin menyalin file langsung dari dired. Saya menggunakan ansi-termuntuk perintah seperti itu jika saya tidak ingin meninggalkan emacs. Emacs dibangun untuk penyesuaian. Saya yakin Anda akan mendapatkan jawaban dengan potongan lisp di beberapa titik.
ephsmith

Jawaban:

8

Ini satu cara. Ini berfungsi untuk saya di emacs 23.

Dalam mode dired, navigasikan ke file yang ingin Anda salin.

  1. Tekan Muntuk menandai file.
  2. Lakukan M-x dired-do-copydan Anda akan diminta untuk lokasi di buffer mini.
  3. Edit lokasi ke lokasi lokal yang ingin Anda salin dan tekan enter.

Selesai

ephsmith
sumber