こんにちは、hr-kです。今回はデータの移行を行う際によく使われている便利なコマンドをご紹介します。
サーバ間でのデータ移行やバックアップを取るときによく使われるコマンドがrsync
というコマンドです。
使い方は
$ rsync 同期元 同期先
としてファイルに変更があった場合のみ同期先のファイルを更新します(ファイルがない場合は生成します)。 さらにオプションをいくつか付けてディレクトリの同期も可能です。
$ rsync -ahv 同期元 同期先
-aはarchiveモードで、いくつかのオプション(-r:recusive=ディレクトリを再帰的に同期や-t:times=タイムスタンプの保存など)が有効化します。 -hは人間が見やすい形で容量(大きい場合はGB表記など)を表示します。-vは同期の進捗を表示します。
データ転送などの進捗をさらに詳しく見たいときには-vの代わりに--progress
のオプションを使います。
$ rsync -ah --progress 同期元 同期先
「このパターンのファイルやディレクトリは除きたい」というときには--exclude
オプションが使えます。
$ rsync -ah --exclude='除きたいパターン' --progress 同期元 同期先
これまでのまとめとして、ディレクトリ内に除きたいファイルがある場合の実行例を簡単に示しておきましょう。
$ ls test1/ aaa.txt aabb.txt bbb.txt ccc.txt
今回はaaで始まるファイルを同期しないように設定してみましょう。 test1というディレクトリを次のコマンドを使って同期します。
$ rsync -ah --exclude='aa*' --progress test1 test2 building file list ... 3 files to consider created directory test2 test1/ test1/bbb.txt 0 100% 0.00kB/s 0:00:00 (xfer#1, to-check=1/3) test1/ccc.txt 0 100% 0.00kB/s 0:00:00 (xfer#2, to-check=0/3) sent 207 bytes received 70 bytes 554.00 bytes/sec total size is 0 speedup is 0.00
と表示されて同期が終わり、ファイルを確認すると
$ ls test2/ test1 $ ls test2/test1/ bbb.txt ccc.txt
という具合になっています。 ちゃんとaaで始まるファイルが除かれ、転送の進捗が出ていることがわかりますね。
rsyncコマンドはcpコマンドと違って同期なので、無駄なファイルは転送しません。 他にも様々なオプションがあり、詳しい説明はこちらのページに乗っております。 サーバ間の以降やバックアップ以外にも便利に使えるので、ぜひ使って見てくださいね。