scpを使用してサーバーからファイルをプルする方法は?


31

マシンAにいて、マシンBからファイルをプルしたい

A$ scp <myuserid>@hostB:<path of file in B> .

それは言う:

scp: <path of file in B>: No such file or directory

しかし、マシンBでは、このファイルはこのパスに存在します。

何が悪いのでしょうか?


これは実行したコマンドの正確な形式ですか?または、「:」の後にファイル名がありましたか?
-dtyler

回答:


43

ファイルを指定しませんでした:コロンの後にファイルを(パスとともに)追加する必要があります。

A$ scp <myuserid>@hostB:/absolutepath/file .

または

A$ scp <myuserid>@hostB:relativepath/file .

ホームディレクトリへの相対パス。

別のユーザーを指定しない場合(つまり、AとBのユーザーが同じ場合)、あなたは必要ありません @

A$ scp hostB:/path/file .

2
質問の書式を修正しましたが、おそらくあなたの答えはまだ有効です。この問題は、絶対パスと相対(ホームへの)パスの混乱から生じる可能性があります。
ステファンギメネス

@StéphaneGimenezで、理解した編集済みの回答が表示されました。奇妙な質問のように思えた:-)
Matteo

4
$ scp username@remoteip:remote_location_file /location/where/you/save

これは、ファイルをコピーする場合にのみ機能します。ディレクトリをコピーしたい場合は

$ scp -r username@remoteip:remote_location_directory /location/where/you/save

必要に応じて使用できるオプション

-P port
リモートホストで接続するポートを指定します。-pはrcpでファイルの時間とモードを保持するためにすでに予約されているため、このオプションは大文字の「P」で記述されていることに注意してください。

-p
元のファイルの変更時間、アクセス時間、モードを保持します。

-r
ディレクトリ全体を再帰的にコピーします。

-v

詳細モード。scpとsshに、進行状況に関するデバッグメッセージを出力させます。これは、接続、認証、および構成の問題のデバッグに役立ちます。


1
OPはディレクトリではなくファイルのコピーを要求しました。
カウンター

2

適切なscpパスを使用する

scp ssh://user@hostname/tmp/foo.txt .

1

ホームディレクトリに相対するファイルパス、または絶対ファイルパスのいずれかを指定できます。たとえば、foo.txtというディレクトリにあるdocs自分のホームディレクトリの下とbar.txtであり/var/tmp、あなたが行うことができます

scp username@host.example.com:docs/foo.txt .
scp username@host.example.com:/var/tmp/bar.txt .

ファイル名にリモートシェルに特有の文字(通常は空白または!"#$&'*;<>?[\]^`{|}~)が含まれている場合、ローカルシェルでエスケープすることに加えて、リモートシェルでエスケープする必要があることに注意してください。たとえば、ファイルが呼び出さfoo bar.txtれ、ホームディレクトリにある場合:

scp username@host.example.com:'foo\ bar.txt' .

句読点を含むファイルに問題がある場合sftpscp、転送する代わりに使用してみてください。または、FUSEを使用できる場合は、さらに便利な方法を使用します。sshfsを使用してリモートマシンのファイルシステムをマウントし、通常のファイル操作コマンドを使用します。

mkdir host.example.com
sshfs username@host.example.com:/ host.example.com
cp host.example.com/path/to/file .

1

DMZユーザーとパスワードがあれば、簡単に双方向でSCPを実行できます。ローカルマシンにいる場合:DMZからローカルlinuxマシン(プル)。folder2内のabc.textを現在のログインPWDにコピーすることを意味します。

scp user@111111:folder1/folder2/abc.txt .

パスワードを要求します

それで全部です

次に、ローカルマシンからDMZにサブフォルダーとファイルを送信するフォルダーを送信します。

usr @ localmachine:〜/ abc / defs> scp -r folder / usr @ 111111:vkrishna / docker /

もう一度パスワードが求められます

:リモートマシンのルートフォルダーであり、vkrishnaはそこにあるフォルダーであり、dockerサブフォルダーです。ローカルのdefsフォルダーには、完全に転送する「フォルダー」というフォルダーがあります。

/ abc / defs / folderのように

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.