Tramp / Diredは、scp外部を使用する代わりに、sshを介してインラインでファイルを転送します


12

リモートファイルへのアクセスにsshを介してtrampを使用しています。テキストファイルの場合、これは非常にうまく機能しますが、大きなリモートファイルをローカルマシンにコピーする場合は常に、trampは低速のインライン方式(gzipでファイルをエンコード)を使用します。これは、たとえばscpなどの外部メソッドを使用するよりもはるかに低速です。大きなファイルを転送するときに、emacsでscpを使用するにはどうすればよいですか?

関連情報:

  • 〜/ .ssh / configファイルを使用してリモートマシンにアクセスします。そのマシンのエイリアスは、以下のhehi09です。アクセスはパスワードなしです

  • 転送時のメッセージバッファー内のメッセージ

    Copying /ssh:hehi09:/home/christian/big_file.dat to /home/christian/big_file.dat'...
    Tramp: Inserting `/ssh:hehi09:/home/christian/big_file.dat'...
    Tramp: Encoding remote file `/ssh:hehi09:/home/christian/big_file.dat' with `(gzip <%s | base64)'...
    
  • 以下の値:

    • tramp-copy-size-limitの値は10240(テストされたファイルサイズよりもはるかに小さい)

    • tramp-default-methodの値は「scp」です

  • $ scp hehi09:/home/christian/big_file.dat ~/ コマンドラインから期待どおりに動作し、emacsでの転送よりもはるかに高速です

emacsが大きなファイルをコピーするためにscpを使用しない理由は何ですか?どんな助けでも大歓迎です!

回答:


17

「sshを介してtrampを使用しています」と言っているとき、のようなファイルを開いていると思います/ssh:host:/path/to/file。これは常にsshメソッドを使用することになっています。scpメソッドを使用する場合は、を使用する必要があります/scp:host:/path/to/file。これは、短いファイルにはsshを、大きなファイルにはscpを自動的に使用します。で設定されているデフォルトの方法を信頼tramp-default-methodできる場合は、短い方を使用できます/host:/path/to/file


/ sshか/ scpかに関係なく、ファイルをコピーするときは常にsshとscpの両方を使用すると便利です。または、/ sshで大きなバイナリをコピーするときに、少なくともいくつかの警告メッセージが表示されます。あなたの答えを見る前に、私はemacsがtramp経由で大きなファイルをコピーする準備ができていないと思いました。(/ sshのみを使用したため)
xwl

2
その場合はscp、デフォルトの方法を使用してください。それでも、Trampはを介して小さなファイルをコピーしssh、を介して大きなファイルをコピーしますscp。を介して制限をカスタマイズできtramp-copy-size-limitます。
Michael Albinus

4
Emacs 26の時点で、メソッドはリモートファイル名で必須になりました。あなたはいつも言わなければなりません/scp:host:/path/to/file/ssh:host:/path/to/file
マイケルアルビナス2017

0

~/.emacsファイルに設定する必要があるからです。それにもかかわらず、EmacsはSFTPやFTPクライアントではなくテキストエディターであり、ファイル転送には遅すぎる方法でこのbase64エンコーディングを使用sshします。


申し訳ありませんが、それは正しくありません。受け入れられた回答が言うように、デフォルトの選択を信頼するか、すべての接続に対して明示的な決定を行うことができます。使用するssh場合、base64変換が行われていることは正しいです。ただし、使用scpする場合はそうではありません。Emacsは、「テキスト」を扱わないコマンドを実行する能力が十分にあります。最後に、Emacsユーザーが自分の好きなOSがテキストエディターであることを壊さないでください;)
Chris

すでにそれを設定しておりscpbase64変換は行われ続けました。それがSFTP接続のメインアプリケーションである可能性が高いと思われる場合は、それが起こらなければかなりのはずです。メインテキストエディターおよびファイルマネージャーとして使用されますが。
Ronald71

あなたは正しい、何とかしてここでscpメソッドを介してそれを行うためにbase64変換せずに、より速く回転させることができました。
Ronald71

変です。エンコーディングをscp使用しないための特別な設定は必要ありませんでしたbase64。将来ここに立ち寄る人のために、あなたのケースで何が問題であったかをすぐに共有できますか?
Chris

@Chrisはすでになんとかやってのけた。主な問題は、TRAMP dired接続がを介して開かれていてsshscpコマンドを実行していたため、base64変換に失敗しました。両方実行する場合TRAMP diredとの両方の接続とコピーコマンド自体をscpする方法、それは無視base64変換を、より速くありませんでした。
Ronald71
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.