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: 圧縮して転送

サーバ側でスペースを含むファイルを転送できない

  • サーバ側にあるファイル名にスペースを含むファイルを転送できない (no matches found と出る)
    • エスケープシーケンス (\) でも回避できない。
  • ファイルパスをクォーテーション、ダブルクォーテーションで囲む
    $ scp ユーザ名@サーバ名:"ファイルパス" クライアント側のパス

ワイルドカードで指定したサーバ側のファイルを転送できない

Not a directory / Is a directory

  • 転送しようとしても、「scp <転送先のパス>: Not a directory」や「scp <転送先のパス>: Is a directory」と出て転送できない
  • 転送先のパスに既に同名のファイル、あるいはディレクトリがある場合に表示されるエラー
  • ちなみに、エラーの内容は
    • Not a directory は、転送先にファイルがある状態で、同じパスにディレクトリを転送する時に表示される
    • Is a directory は、転送先にディレクトリがある状態で、同じパスにファイルを転送する時に表示される