Bash 速習チュートリアル

Bash scpコマンド

1. scpコマンドの使用方法

scpコマンドは、ネットワーク上のホスト間でファイルを安全に(セキュアに)コピーするために使用されます。

1.1 基本的な使い方

ファイルをリモートホストにコピーするには、scp ファイル ユーザー名@ホスト名:/パス の形式を使用します。

例:

scp file.txt [email protected]:/home/user/
# パスワードの入力が求められます
[email protected]'s password: 
file.txt

2. オプション

scpコマンドはその動作をカスタマイズするために、様々なオプションをサポートしています。

  • -r - ディレクトリ全体を再帰的にコピーする
  • -P - リモートホストへの接続ポートを指定する
  • -i - アイデンティティファイル(秘密鍵)を指定する
  • -C - 圧縮を有効にする
  • -v - 詳細モード(Verbose mode)を有効にする
  • -l - コピーに使用する帯域幅を制限する

3. -rオプション(再帰的コピー)

-rオプションを使用すると、ディレクトリ全体をその中身を含めて再帰的にコピーできます。

例:再帰的コピー

scp -r /path/to/directory [email protected]:/home/user/
[email protected]'s password: 
1.png 100% 1797KB   2.7MB/s   00:00    
2.png 100% 1873KB   3.2MB/s   00:00    
3.png 100% 1808KB   3.9MB/s   00:00    
...

4. -Pオプション(ポート指定)

-Pオプションを使用すると、リモートホストの接続先ポート番号を指定できます。
デフォルトでは、SCPはポート 22 を使用します。

例:ポートの指定

scp -P 2222 file.txt [email protected]:/home/user/
[email protected]'s password: 
file.txt

5. -iオプション(アイデンティティファイル)

-iオプションを使用すると、認証のためのプライベートキー(秘密鍵)ファイルを指定できます。
特定のサーバー専用のキーを使用する場合に非常に便利です。

例:プライベートキーを使用

scp -i /path/to/private_key file.txt [email protected]:/home/user/
file.txt

6. -Cオプション(圧縮)

-Cオプションは圧縮を有効にします。ネットワーク経由で送信されるデータ量を削減し、転送速度を向上させることができます。

例:圧縮の有効化

scp -C file.txt [email protected]:/home/user/
[email protected]'s password: 
file.txt

7. -vオプション(詳細モード)

-vオプションは詳細モード(Verbose mode)を有効にし、ファイル転送プロセスの詳細な情報を出力します。
デバッグを行う際に非常に役立ちます。

例:詳細モード

scp -v file.txt [email protected]:/home/user/
# 実行中の詳細ログが出力されます
Executing: program /usr/bin/ssh host example.com, user user, command scp -v -t /home/user/
file.txt 100% 1234KB 1.2MB/s 00:01
...

8. -lオプション(帯域制限)

-lオプションを使用すると、コピーで使用する帯域幅(バンド幅)を制限できます。ネットワークリソースを管理したい場合に有用です。

例:帯域制限

# 帯域幅を制限して転送
scp -l 100 file.txt [email protected]:/home/user/
[email protected]'s password: 
file.txt

9. scpの出力を理解する

scpコマンドの出力内容は、使用するオプションによって異なりますが、一般的には以下の要素が含まれます。

  • 転送進捗(Transfer Progress): ファイル転送の進み具合を表示します。
  • ファイルサイズ(File Size): 転送されているファイルのサイズ。
  • 転送速度(Transfer Speed): データが転送されている速度。
  • 残り時間(Time Remaining): 転送完了までの推定残り時間。