運営しているサイトのサーバー環境をリフレッシュさせたくて一時的にサブVPSに移動して作業していたときにふとrsyncとSCPの違いが気になったので調べてみました。
まずrsyncとはコピー元ディレクトリとコピー先ディレクトリを同期させるLinuxコマンドのこと。ローカルだけではなく別のサーバーにも同期可能。
それに対しSCPはSSHを利用したファイル転送コマンドのこと。rsyncもSSHを利用して暗号化しつつデータを転送でき、どちらかというとrsyncのほうが高性能。
また、SCPは転送先に同名ファイルがあるとそのファイルをオープンして転送するため、転送中にアクセスされると中途半端な内容が読み込まれてしまったり、転送を中断した場合転送先のファイルが破損する可能性があるとか。
それに対してrsyncは転送が終了してからファイルを削除するのでたとえアクセスがあったとしても問題なし。また転送を中断してもまず一時ファイルとしてデータを書き出すのでファイルが破損する可能性もない。
というわけで重要なファイルを転送したりするときはrsyncを使うのがよさそう。そうでないときはコマンドが単純でCPUパワーをそこまで食わないSCPでさくっと。(rsyncは差分のチェックサムをとる関係でCPUパワーが必要)