SSHを介したファイルの転送[終了]


461

コマンドラインでリモートサーバーにSSH接続し、コマンドを使用してローカルマシンにディレクトリをコピーしようとしていますscp。ただし、リモートサーバーは次の「使用」メッセージを返します。

[Stewart:console/ebooks/discostat] jmm% scp -p ./styles/
usage: scp [-1246BCEpqrv] [-c cipher] [-F ssh_config] [-i identity_file]
           [-l limit] [-o ssh_option] [-P port] [-S program]
           [[user@]host1:]file1 [...] [[user@]host2:]file2
[Stewart:console/ebooks/discostat] jmm%

双方向でファイルを転送できるようにしたいのですが。私が読んだことから、上記のコマンドはダウンロードとscp -p [localpath] [remotepath]アップロードに役立つと思いましたか?

回答:


735

あなたはscpどこかに何かをする必要があります。あなたが持っているscp ./styles/ので、あなたは安全なコピーと言っていますが、それを./styles/どこにコピーするかではありません。

一般的に、ダウンロードする場合は、次のようになります。

# download: remote -> local
scp user@remote_host:remote_file local_file 

ここで、local_file実際には、コピーするファイルを配置するディレクトリになる可能性があります。アップロードする場合は、その逆です。

# upload: local -> remote
scp local_file user@remote_host:remote_file

ディレクトリ全体をコピーする場合は、が必要-rです。ローカルファイルだけでなくファイルも指定できることを除いて、scpと同じようcpに考えてくださいuser@remote_host:file

編集:コメントで述べたように、ローカルホストとリモートホストのユーザー名が同じ場合、リモートファイルを指定するときにユーザーを省略できます。


2
ユーザーがリモートホストとローカルホストで同じ場合は、ユーザー名を省略できます
。scp

はい、そうです、それについてのメモを追加します。私がユーザーを含めたのは、私が提供した例が常に機能するためです。:)
lemnisca

私はこれに苦労しています...これは正しいです。scp C:\ filename.txt server1 @ server2:home
Vincent

「donload」と「upload」に太字のフォーマットを追加してください。
kursus

2
「当然」(私は15分無駄にしたので当然言う)ローカルに「ダウンロード」しようとしている間はリモートホストに接続しないでください。リモートインスタンスからコードを実行している場合、「ローカル」は私が意味するところを見れば、「リモート」として解釈されます。したがって、最初にsshを実行しないでください
PatrickT 2014

164

デスクトップマシンとの間でコピーする場合は、WinSCPを使用します。Linuxの場合、Nautilusは[サーバーに接続]オプションを介してSCPをサポートします。

scpは、sshdを実行しているマシンにのみファイルをコピーできるため、scpを実行しているマシンからリモートマシンでクライアントソフトウェアを実行する必要があります。

コマンドラインでコピーする場合は、次のコマンドを使用します。

# copy from local machine to remote machine
scp localfile user@host:/path/to/whereyouwant/thefile

または

# copy from remote machine to local machine
scp user@host:/path/to/remotefile localfile

4
あなたは男です。サーバー側に追加インストールすることなく、10秒未満でブログを展開しました。
2013年

2
これは完全に機能しました。scpとsshの両方があるため、cmdでmsysgitを使用しました。
Ibn Saeed 2014年

3
これは完全に機能しました。私はscp * user @ host:/ path / to / whereを使用しました
Bastin Robin

3
それが一番の答えになるはずです。
gsamaras

3
WinSCPの提案に感謝します。これらのコマンドをすべて手動で作成するよりもはるかに簡単...
Brian Leishman 2017

23

ソースと宛先の両方を指定する必要があります。ディレクトリをコピーする場合は、-rオプションを確認する必要があります。

したがって、リモートサーバーから現在のディレクトリに/ home / user / whateverを再帰的にコピーするには:

scp -pr user@remoteserver:whatever .

19

いいえ、scp [from] [to]コピーする方法はまだ必要です

違いは、あなたがする必要があることです scp -p server:serverpath localpath


8
-pの目的は何ですか?
Qinjie 2017年

1
From man scp:元のファイルの変更時刻、アクセス時刻、モードを保持します。
pjmil 2018

4
-pOPが元の質問にフラグを含めたため、明確にすることはここにのみ含まれています。それは答えにはまったく関係ありません
Gareth
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.