web-dev-qa-db-ja.com

Linux端末を介してローカルファイルをサーバーにアップロードする方法

PuTTYまたはSSHを使用してローカルファイルをサーバーにアップロードしようとしていますが、アップロードできません。

FTPなどを使わずにローカルからLinux端末からサーバーへファイルをアップロードする直接的な方法はありますか?

38

もちろんです。次のように scp (安全なコピー)を使用します。

scp [source file] [username]@[destination server]:.

もちろん、括弧で囲まれた[source file][username]、および[destination server]をあなたのローカル設定に合うように置き換えてください。したがって、ファイルがcool_stuff.txtで、リモートサーバー上のユーザー名がsanjeev、宛先サーバーがexample.comの場合、コマンドは次のようになります。

scp cool_stuff.txt [email protected]:.

また、ソースはリモートでもかまいませんので、上記の例とは反対にこれを実行できます。

scp [email protected]:cool_stuff.txt .

そのコマンドはリモートファイルcool_stuff.txtをあなたがいるどんなローカルディレクトリにもコピーするでしょう。そしてもしあなたが複数のファイルを使ってこれをしているなら、通常のcpコマンドのようにワイルドカード(*)を使ってください。

また、.はただちにディレクトリパスを示します。コマンドを実行した瞬間に自分が正しいもの、または移行先サーバーのリモートユーザーが持っている直接パスなど。しかし、ローカルからリモートへの例で/this/path/right/hereのようなパスを指定することもできます。

scp cool_stuff.txt [email protected]:/this/path/right/here

あるいはここからリモートへローカルの例:

scp [email protected]:cool_stuff.txt /this/path/right/here

リモートサーバがSSHを許可せず、SFTPのみを許可しない場合は、SFTPを使用します。しかし、scpは、ファイルを投げるだけで、コマンドラインから手動でSFTPプロセス全体を実行したくない場合に非常に便利です。

58
JakeGould

Jakeの回答 を追加するには、URLの末尾にパスを追加してコピーする場所(.の代わりに)を指定します。

scp /path/to/file username@servername/ip:/destination/folder/
11
CBinyenya

リモートサーバーへのログインがsshキーを介して行われる場合、キーをサーバーに渡すために以下の-iフラグを使用できます。

scp -i /path/to/.ssh/id_rsa path/to/file/myFiles.gz myServer.com:/folder/on/server

- i identity_file
公開鍵認証用のID(秘密鍵)を読み込むファイルを選択します。
このオプションは直接ssh(1)に渡されます。

11
zx8754