リモートサーバーからローカルマシンにファイルをコピーする方法は?


238

ターミナルシェルで、リモートサーバーにsshし、cd必要なディレクトリに移動しました。

このディレクトリにはtable、ローカルマシンにコピーするというファイルがあります/home/me/Desktop

これどうやってするの?

試しましたscp table /home/me/Desktopが、そのようなファイルやディレクトリがないというエラーが出ました。

誰もこれを行う方法を知っていますか?


scpを使用して頻繁にコピーする場合は、ファイルブラウザでリモートディレクトリをマウントしてドラッグアンドドロップできます。Ubuntu 15ホストでは、メニューバーの下の[移動]> [場所の入力]>にありdebian@10.42.4.66:/home/debianます。または、sshfsリモートマシンのファイルシステムをホストにマウントするために使用できます。しかし、そのセットアップはもう少し複雑です。
ConvexMartian

与えるrsync試みを。ローカルコピーとリモートコピーの両方に最適であり、コピーの進行状況などを示します。
-sakisk

回答:


381

の構文scpは次のとおりです。

ファイルをリモートコンピューターに送信するコンピューターを使用している場合:

scp /file/to/send username@remote:/where/to/put

ここではremote、FQDNまたはIPアドレスを指定できます。

一方、リモートコンピューターからファイルを受信するコンピューターを使用している場合:

scp username@remote:/file/to/send /where/to/put

scp 2つのリモートホスト間でファイルを送信することもできます。

scp username@remote_1:/file/to/send username@remote_2:/where/to/put

したがって、基本的な構文は次のとおりです。

scp username@source:/location/to/file username@destination:/where/to/put

あなたはman scpこれについてより多くのアイデアを得るために読むことができます。


4
複数のファイルをコピーする場合はどうなりますか?スペースを追加し、別のスペースを使用し /file/to/sendました。すばらしい回答をありがとうございます。
カムディクソン

6
scp -r再帰的にコピーします。
ヘンリー

ネットワークからVMにファイルをコピーすること... scpを使用して同じことを実現する方法
Sushivam

2
良い答えは@heemayl +1。安全な接続(認証を必要とする)の場合は、(ローカルからリモートにファイルをコピーするために)以下を使用できます:scp -i mykey.pem somefile.txt root@remotehost.ip.address :/ some / folder / in / remote
Guy Avraham

1
使用するscp -P 123カスタムポートを指定する
aexl

14

rsync代わりに使用できます。主にファイルの同期用です。しかし、この目的にも使用できます。

rsync -avzh --stats --progress remoteuser@remoteip  localpath 

sshオプションを追加するには:

rsync -e "ssh -P $port_value" remoteuser@remoteip  localpath

--progressおよび--stats転送のリアルタイム表示に便利です。


12
scp root@10.240.179.4:/root/Jmeter/reports.jtl Downloads/

4
私はこのような答えが好きです。
xtluo

8
scp username@ipaddress:pathtofile localsystempath

scp sadananad@ipaddress:/home/demo/public_html/myproject.tar.gz .

ポートで使用する場合:

scp -Pportnumber username@ipaddress:pathtofile localsystempath 

scp -P2233 sadananad@ipaddress:/home/demo/public_html/myproject.tar.gz .

これにより、ファイルが同じリモートディレクトリにコピーされます。
マックスユーディン

3

ネットワーク内の全員を完全に信頼し、宛先マシンのポートを直接接続できる場合は、netcat:を使用できますnc

宛先マシンのIPアドレスが192.168.1.123であるとしましょう

宛先で実行:

nc -l -p 7777 0.0.0.0 | tar zxvf - -C dest_dir

別のポートを選択し、インターフェイスの別のIPにバインドすることもできます。0.0.0.0はすべてのインターフェイスをキャッチします。

ソースで実行:

tar zxcf - filename | nc 192.168.1.123 7777

私見、これは、デジタルネットワークを使用して、あるコンピューターから別のコンピューターにファイルを送信するための最速の方法です。

引数とコマンドラインオプションは、ncとの異なるバージョン間でわずかに異なる場合がありますがtar、最近のLinuxディストリビューションでは間違いなく機能します。


2

Linuxで、ユーザー(この例ではルート)ディレクトリからローカルユーザーディレクトリのフォルダーにフォルダーとそのコンテンツをコピーするには、ローカルマシンで次のコマンドを実行します。

scp -r root@178.62.54.83:〜/ folderinremoteuserdir〜/ folderinlocaluserdir

忘れがちな〜/に注意してください...

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