====== scp ======
===== 概要 =====
* SSH プロトコルを用いて、ファイルを転送する
===== 使い方 =====
$ scp [option] Source Destination
* Source: コピー元
* ローカルの場合はそのままファイルパスを指定
* サーバの場合は「**ユーザ名**@**サーバ名**:**ファイルパス**」
* Destination: コピー先 (指定方法は、Source と同じ)
* Option
* -r: 再帰的にファイルを転送 (ディレクトリのファイル転送をする際に使う)
* -c **暗号化方式**: 暗号化方式の指定
* aes128-cbc
* 3des-cbc (デフォルト?)
* blowfish-cbc
* cast128cbc
* arcfour (暗号化強度が弱いが?、転送速度が良い)
* arcfour128 (暗号化強度が弱いが?、転送速度が良い)
* arcfour256 (暗号化強度が弱いが?、転送速度が良い)
* aes192-cbc
* aes256-cbc
* aes128-ctr
* aes192-ctr
* aes256-ctr
* -C: 圧縮して転送
* 参考サイト: [[http://d.hatena.ne.jp/rx7/20101025/p1 | 大容量ファイルのSCP転送を高速にする方法 - 元RX-7乗りの適当な日々]]
===== Tips =====
==== サーバ側でスペースを含むファイルを転送できない ====
* サーバ側にあるファイル名にスペースを含むファイルを転送できない (no matches found と出る)
* エスケープシーケンス (\) でも回避できない。
* ファイルパスをクォーテーション、ダブルクォーテーションで囲む\\ $ scp ユーザ名@サーバ名:"ファイルパス" クライアント側のパス
* 参考サイト: [[http://d.hatena.ne.jp/machua/20100415/1271351439 | スペースを含んだパスをscpでコピー - 禿散らかしてごめんなさい]]
==== ワイルドカードで指定したサーバ側のファイルを転送できない ====
* サーバ側のファイルを一括転送しようとワイルドカードを使ったら、No such file
* ワイルドカードをエスケープする\\ $ scp ユーザ名@サーバ名:パス/\* クライアント側のパス
* 参考サイト: [[https://blog.cloudpack.jp/2014/07/31/tips-scp-escape/ | 地味にハマったコマンドシリーズ(1)SCP でワイルドカードを使ってファイルを指定 | cloudpack技術情報サイト]]
==== Not a directory / Is a directory ====
* 転送しようとしても、「''scp <転送先のパス>: Not a directory''」や「''scp <転送先のパス>: Is a directory''」と出て転送できない
* 転送先のパスに既に同名のファイル、あるいはディレクトリがある場合に表示されるエラー
* ちなみに、エラーの内容は
* ''Not a directory'' は、転送先にファイルがある状態で、同じパスにディレクトリを転送する時に表示される
* ''Is a directory'' は、転送先にディレクトリがある状態で、同じパスにファイルを転送する時に表示される
{{tag>Linux コマンド}}