概要
本番サーバ(linux)で出力したcsvファイルをローカルに持ってるくるにはどうすれば…そんなときにはscp
コマンドを使えばよいよ!と教えてもらいました。
すると、別の方にこんなコメントをいただきました。
scpでサイズが大きいファイルを転送するときは気をつけてください。理由とどういった対策が必要かも考えてみてね☆(ゝω・)vキャピ
というわけで、調べてみることにしました(`・ω・´)ゞ
(調べてみたものの、間違っていたり、他にもあれば優しい方々がコメントくださることを期待しつつ…)
本題
scpコマンドとは?
- sshと使ってホスト間で安全にファイルをやりとりするためのコマンドです。
- 使い方はこんな感じです。
$ scp [オプション][転送したいファイル名][転送先のパス]
# たとえば…
$ scp toshi0607@[サーバのIPアドレス(名前解決もしれくれる)]:/home/toshi0607/nyanchu.txt ~/Desktop/
サイズが大きいファイルを転送するときの注意点は?
課題
- scpは指定ファイル名のファイルをオープンして転送します。そのため、転送中にファイルにアクセスされると書き込み途中ファイルが読み込まれてしまったり、転送を中断した場合転送先のファイルが破損する可能性があります。
対策
- 圧縮する
-C
オプションを指定することで、データをコピーする際にデータを圧縮し転送することができます。
$ scp -C ユーザ名@リモートのホスト名:コピーしたいリモートのファイル ローカルのコピー先
- 同期に一時ファイルを作成するrsyncを使ってファイルの破損を防ぐ(ファイルが大きく、時間がかかるとファイルへのアクセスリスクも高まるということで…)
$ rsync -e ssh toshi0607@[サーバのIPアドレス(名前解決もしれくれる)]:/home/toshi0607/ ~/Desktop/
# あくまでディレクトリ内の同期…最後に`/`をつけると、ディレクトリ毎同期します。
他の注意点は?
- 同名のファイルやディレクトリがコピー先にあった場合、上書きしてしまう
- sshのポート番号を変えている場合は
-P
オプションを指定する - 秘密鍵で接続する必要がある場合は
-i
オプションを指定する
くらいでしょうか…
Linux全般学習アドバイスください!
以上です。サーバに入ってコマンドの打つのに無抵抗過ぎて、最近はLinux標準教科(Ver2.0.0)をCentOS上でコマンドたたいて勉強してます…最低限こんくらい知っとけ!みたいな記事や本があれば教えていただけると幸いです m(_ _)m