【Linux】scpコマンドを使ってファイルを取得したい

【Linux】scpコマンドを使ってファイルを取得したい

コジマです。

以前もくもく会にて参加してた方から「scpコマンドの使い方を教えてほしい」
と言われたけど答えられなかったんですね。

Linuxのコマンドの扱いは平均より上だとは思っているのですが、
何故分からなかったかと言うと、「ツール使っちゃってるから」だったんですね。
TeraTermはよく使っているんですけど、そうするとscpのコマンドを使う機会なんてないんですよ。

必要ないと思ってたのですが、答えられなかったのが悔しいので調べてまとめることにしました。

SCPってな~に?

SCPってのは「Secure Copy Protocol」の略で、通信プロトコルの一種。
安心安全に端末間でファイルコピーしようね。というものです。

  • FTPに比べてファイルの転送速度が速いこと
  • SSHと同じポート(22番)を使用する

といった特徴があります。

実際どうやるの?

Windowsとlinuxでオプション違ったりしますが、
今回はlinux(Macも同じ)という前提で話したいと思います。

help出してみるとこんな感じ。

usage: scp [-1246BCpqrv] [-c cipher] [-F ssh_config] [-i identity_file]
           [-l limit] [-o ssh_option] [-P port] [-S program]
           [[user@]host1:]file1 ... [[user@]host2:]file2

ファイル送るときは

scp 送りたいファイル 送り先

ファイルを受け取るときは

scp 受け取りたいファイル 受取り先

こんだけ。

具体例

以下のような環境だった場合を考えてみましょう。
(自ホスト)
使うディレクトリ:/home/clientuser
送るファイル:sendfile.txt

(相手ホスト)
ユーザーID:hostuser
パスワード:password
IPアドレス:192.168.224.10
使うディレクトリ:/home/hostuser
自ホストが受け取るファイル:receive.txt

ファイルを送りたい

scp /home/clientuser/sendfile.txt hostuser@192.168.224.10:/home/hostuser/sendfile.txt

送り先は[[user@]host1:]file1 に倣っています。
実行するとパスワードの入力を促されるので、この場合[password]と入力しましょう。
送り先のファイル名もきちんと指定してあげることがコツです。

ファイルを受け取りたい

scp hostuser@192.168.224.10:/home/hostuser/receive.txt /home/clientuser/receive.txt

同様です。ホスト側とクライアント側のファイルの指定順を変えるだけで送受信を入れ替えることができます。

WindowsでSCPコマンドを使うときはここで深掘りしないですが、
ホスト側のユーザー名やパスワードを指定するオプションもあって書き方が少し変わります。
パスワード指定できるということはバッチ化できるわけですね。
使いどきないですが。。。

あーこれでスッキリw
こうやって疑問解決もしていって知識を蓄えていきましょね。

以上、コジマでした。


Linuxカテゴリの最新記事