scpを使用してコピーするときにワイルドカード文字(*)をどのように使用しますか?

scpを使用してコピーするときにワイルドカード文字(*)をどのように使用しますか?

*パスに文字を使用するときにscpを使用してコピーできないのはなぜですか?

scp SERVERNAME:/DIR/* .

*パスでSCPを許可するにはどのような設定が必要ですか?

更新:問題はサーバー側ではありません。 pscpはSCPv1を使用しようとしていますが、これはエラーメッセージの原因です。

*という名前のファイルのscpコマンドラインとエラーメッセージ

答え1

scpリモートシステムがそれをglobとして見ないようにするには、リテラルエスケープを渡す必要があります*(二重引用符で囲まれています)。

scp 'SERVERNAME:/DIR/\*' .

答え2

Chrisの答えは私を正しい道に導いたが、私はPatrickのアドバイスが正しいと思った。引用符を使用し、アスタリスクの前にバックスラッシュは必要ありません。

  • 引用符+バックスラッシュの使用:

    $ scp 'SERVERNAME:/tmp/file_num\*' .
    
    scp: /tmp/file_num*.csv: No such file or directory
    
  • 引用符のみを含める:

    $ scp 'SERVERNAME:/tmp/file_num*' .
    
    judgments_for_job_171642.csv 100%   32KB  32.0KB/s   00:00    
    judgments_for_job_172394.csv 100%  548KB 182.6KB/s   00:03  
    

答え3

~のためワイルドカードを避けるために一重引用符とエスケープされたアスタリスクの両方が必要です。

scp 'SERVERNAME:/DIR/\*' ./

使いたいならワイルドカード一重引用符を使用するか、アスタリスクをエスケープします。

scp 'SERVERNAME:/DIR/*' ./
# or
scp SERVERNAME:/DIR/\* ./

scpワイルドカードのみサポートされているようです。ファイル名しかしそうではありませんディレクトリ名

答え4

実際には-r同様の状況でのみ使用されます。特にスクリプトで変数を使用する場合はそうです。

例:

SERVERNAME="[email protected]"

scp -r $SERVERNAME:/DIR/ ./

関連情報