scpを使用してリモートからローカルにフォルダをコピーするにはどうすればよいですか?[閉まっている]


2696

を使用してリモートからローカルホストにフォルダをコピーするにはどうすればよいscpですか?

sshサーバーへのログインに使用しています。
次に、リモートフォルダfooをローカルにコピーしたいと思います/home/user/Desktop

どうすればこれを達成できますか?


61
OPの問題は、リモートホストにsshを実行しながら、リモートからローカルホストにファイルをコピーできるかどうかです。なぜ単一の答えが彼/彼女の質問に正しく対処しなかったのかはわかりません。
JeffDror 2015

3
質問の前提が間違っています。アイデアは、いったんsshにログインすると、ログインしたマシンからログインしたクライアントにファイルを戻す方法です。しかし、scpはssh接続を認識せず、使用することもできません。それはそれ自身のつながりを作っています。したがって、簡単な解決策は、ローカルワークステーションに新しいターミナルウィンドウを作成し、リモートサーバーからローカルマシンにファイルを転送するscpを実行することです。たとえば、scp -i key user @ remote:/ remote-dir / remote-file / local-dir / local-file
jeffmcneill

12
質問はトピックから外れている可能性がありますが、Googleでの最高ランクの投稿でもあります。それをロックすると、より良いソリューションを提供するために誰もそれを更新できなくなります。
Alex Harvey

3
私は最近、SuperUserの別のツールのコマンドラインに関する同様の「少し深い」質問をしたところ、ModによってStackOverflowに移動されました。とにかく私はmodsのコンテンションに同意します:これをSuperUserに移動して、ロックを解除してさらに多くの回答を得ることができますか?
Nikhil VJ

3
一般に、スタックオーバーフローに対する「オフトピック」反応全体が、プラットフォームの最大の欠陥の1つです。熱狂的なマチネット。
AdamC

回答:


4940
scp -r user@your.server.example.com:/path/to/foo /home/user/Desktop/

fooの末尾に末尾の「/」を含めないことで、ディレクトリのコンテンツだけでなく、ディレクトリ自体(コンテンツを含む)を移動します。

からman scpオンラインマニュアルを参照)

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


1411
私は毎回これをググる。関連コミック:xkcd.com/1168
cptloop

10
二つの素敵な対知っている私が見つかりました:-Cフラグは、圧縮を追加し、-cフラグを使用して、同じように、パフォーマンス向上のために他の暗号の種類に渡すことができますscp -c blowfish a@b:something . dimuthuの答えに見られるように
Automatico

79
-pを使用して、ファイルの変更時間、権限などを保存します。scp -pr user @ ...
Ber

27
この答えには重要な説明が欠けています。最終的に、Desktop/fooまたはDesktop/allcontentsofFooGoherescpが奇妙に振る舞うように見えることがありますか?それは次のことを行います
Toskan

7
@Toskanはscp -r user@your.server.example.com:/path/to/foo /home/user/Desktop/、で終わる必要がありますDesktop/foo。ではscp -r user@your.server.example.com:/path/to/foo/. /home/user/Desktop/ 、あなたはの内容になってしまいますfooDesktopのすべてのサブdirsのfoo下に散らばっDesktop
イオアニス

307

scpの全機能を使用するには、次の手順を実行する必要があります。

  1. 公開鍵認証
  2. SSHエイリアスを作成する

次に、たとえば〜/ .ssh / configがある場合

Host test
    User testuser
    HostName test-site.com
    Port 22022

Host prod
    User produser
    HostName production-site.com
    Port 22022

パスワードを入力する手間を省き、次のようなscp構文を簡略化します。

scp -r prod:/path/foo /home/user/Desktop   # copy to local
scp -r prod:/path/foo test:/tmp            # copy from remote prod to remote test

さらに、リモートパス補完を使用できるようになります。

scp test:/var/log/  # press tab twice
Display all 151 possibilities? (y or n)

更新:

リモートbash補完を有効にするには、<source><target>ホストの両方にbashシェルがあり、bash補完が適切に機能している必要があります。詳細については、関連する質問を参照してください。

scpの使用時にリモートパスのオートコンプリートを有効にする方法は?
SCPファイル名タブの補完


12
設定ファイルについて知らなかった、これは素晴らしいです!
dmastylo 2014年

タブ補完はナンセンスで、ローカルホストから補完するだけです。
ベルンハルト

14
@ b.long問題は、「リモートフォルダfooをローカルデスクトップにコピーする方法」です。私の答えは「scp -r prod:/ path / foo / home / user / Desktop」です。あなたが関係を見ることができることを願っています。
Alexander Yancharuk、2014年

2
@Bernhard私にとってはbash-shellを使用しているため、明らかでした。私にそれを指摘してくれてありがとう!回答を更新しました。
Alexander Yancharuk 14

1
@Alexander Yancharuk:答えてくれてありがとう、これは構文だけを扱うよりも詳細です。
Gladiator 2014年

217

ローカルロケーションからリモートロケーションにすべてをコピーするには(アップロード)

scp -r /path/from/destination username@hostname:/path/to/destination

すべてをリモートロケーションからローカルロケーションにコピーするには(ダウンロード)

scp -r username@hostname:/path/from/destination /path/to/destination

カスタム・ポートは、どこxxxxカスタムポート番号

 scp -r -P xxxx username@hostname:/path/from/destination /path/to/destination

リモートからローカルに現在のディレクトリにコピーする

scp -r username@hostname:/path/from/file .

助けて:

  1. -r すべてのディレクトリとファイルを再帰的にコピーする
  2. 常に完全な現在地を使用します。完全な現在地を/取得するにはpwd
  3. scp 既存のすべてのファイルを置き換えます
  4. hostname ホスト名またはIPアドレスになります
  5. (ポート22以外に)カスタムポートが必要な場合 -P portnumber
  6. 。(ドット) -現在の作業ディレクトリを意味するので、サーバーからダウンロード/コピーして、ここにのみ貼り付けます。

注:ファイアウォールで許可されていないポートが原因でカスタムポートが機能しないことがあるので、カスタムポートがファイアウォールで着信および発信接続に対して許可されていることを確認してください。


1
(少なくとも最近のバージョンのRaspbian JessieとUbuntuでは)scpはポートに-P(大文字のP)を使用しているようですが、(奇妙なことに)sshは-p(小文字)を使用しています。
Adam Plocher、

-pは、「元のファイルの変更時刻、アクセス時刻、およびモード」を保持するために予約されています。したがって、ポートにそれを使用している場合、おそらく機能しません;-)小文字のpを別の方法で使用した別のバージョンがない限り。
Adam Plocher、

sshでは、はい。scpではありません(私はそう思います)。
Adam Plocher、

ディレクトリにスペースが含まれている場合、何を配置すればよいですか?
Brethlosze 2017年

@hyprfrcb使用pwdして場所を取得し、同じものを使用する
Shiv Singh

48

私がいつも使っているのは:

scp -r username@IP:/path/to/server/source/folder/  .

。(ドット):を意味しcurrent folderます。サーバーからコピーして、ここにのみ貼り付けてください。

IP:のようなIPアドレスに125.55.41.311することも、ホストのようにすることもできますns1.mysite.com


9
.現在のディレクトリを指していることを指摘していただきありがとうございます!
ericmjl 2015年

35

最初にリモートサーバーでカタログを圧縮することをお勧めします。

tar czfP backup.tar.gz /path/to/catalog

次に、リモートからダウンロードします。

scp user@your.server.example.com:/path/to/backup.tar.gz .

最後に、ファイルを抽出します。

tar -xzvf backup.tar.gz

10
「より良い」とは、転送するデータと、サーバーにSSHで圧縮して圧縮/解凍を行う作業に大きく依存します。そして:あなたはの-Cようにフラグを使ってscpに圧縮を加えることができますscp -C a@b:bigfile .
Automatico

4
@cptloopのコメントを思い出します!:D xkcd.com/1168
GoodSp33d

22

また、リモートの場所からダウンロードするファイルが1つでもあり、セキュリティをあまり気にしない場合は、scpのデフォルトの暗号化(Triple-DES)を「blowfish」などに変更してみてください。

これにより、ファイルのコピー時間が大幅に短縮されます。

scp -c blowfish -r user@your.server.example.com:/path/to/foo /home/user/Desktop/

2
このブログの投稿によるとarcfour、の代わりにを使用するとパフォーマンスが向上しますが、blowfishセキュリティ上の欠陥があります。
Automatico

20

典型的なシナリオ、

scp -r -P port username@ip:/path-to-folder  .

サンプルで説明し、

scp -r -P 27000 abc@10.70.12.12:/tmp/hotel_dump .

どこ、

port = 27000
username = "abc" , remote server username
path-to-folder = tmp/hotel_dump
. = current local directory

答えてくれてありがとう。特定のSSHポートの-Pが役に立ちました。
redoff

19

Unityツールバーのファイルに移動します

ここに画像の説明を入力してください

Ctrl + lを押してhere_goes_your_user_name@192.168.10.123と書き込みます

192.168.1.103は、接続するホストです。

ここの一例

ここに画像の説明を入力してください


12

問題は、scpコマンドを使用してフォルダーをリモートからローカルにコピーする方法でした。

$ scp -r userRemote@remoteIp:/path/remoteDir /path/localDir

ただし、sftpSSHファイル転送プロトコル(Secure File Transfer Protocol、またはSFTP)は、信頼できるデータストリームを介したファイルアクセス、ファイル転送、およびファイル管理を提供するネットワークプロトコルです(ウィキペディア)。

$ sftp user_remote@remote_ip

sftp> cd /path/to/remoteDir

sftp> get -r remoteDir

Fetching /path/to/remoteDir to localDir 100% 398 0.4KB/s 00:00

ヘルプについてはsftp、コマンドだけで入力しhelpたり?


12

場合は、あなたがに実行し、「あまりにも多くの認証失敗」、あなたは切断SSHサーバーに追加した正確なSSHキーを指定:

scp -r -i /path/to/local/key user@remote.tld:/path/to/folder /your/local/target/dir

5

理由はわかりませんが、ソースサーバーディレクティブの前にローカルフォルダーを使用する必要がありました。それを機能させる

scp -r . root@888.888.888.888:/usr/share/nginx/www/example.org/

1
ユーザーが権限を持っていると想定して、絶対パスを使用せずに実行できますかroot@
Jonathan
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.