はじめに
rsyncはバックアップで使う便利なコマンドです。
Windowsにはいろいろと便利なフリーウェアがあってよりどりみどりなのですが、macosでは色々調べた結果、やっぱりこれが一番です。
1.インストール
osxのrsyncは古いのでbrewを使って最新版をインストールします。
標準の(古い)rsyncではログが文字化けするのですが、iconvがないからなのか、バージョンが古いからなのかは調べていません。ちなみに、新しいrsyncでは--iconvオプションは必要ないようです。
$ brew tap homebrew/dupes
$ brew install libiconv
$ brew install rsync
brewは、/usr/local/binにインストールしますので、パスの優先順位が
/usr/binより、/usr/local/binが上になるようにします。(普通は何もしないでOK)
$ env
// または
$ echo $PATH
などと打ってみます。PATH設定を確認してください
2.ローカルでバックアップ
ディレクトリ(src)をバックアップディレクトリ(backup)にバックアップします。
(src)には後ろに/を付けません。(付けると中身だけバックアップされます)
$ rsync -av --delete src backup
--delete が無いと元ディレクトリで消してもバックアップ先では消えません。
http://qiita.com/QUANON/items/2953c52df7f65f2ecee5
上の記事はよく読みましょう。
バックアップを実行する前にnオプションをつけて何が更新されるのか差分を調べることが重要です。(ここで間違えるとバックアップどころか・・・)
$ rsync -avn --delete src backup
dry-run (お試し実行)と言うそうです。(これが欲しかった!!)
3.ローカルのディレクトリをリモートマシンにコピー
sshが使えるならば、下記のようにリモート環境にバックアップもできます。
相手はmacosじゃなくてもLinuxでも大丈夫です。
macosでsshd(sshデーモン)を有効にするには、「システム環境設定」「共有設定」で「リモートログイン」を有効にしてください。
$ rsync -avz src me@aaaaaa.com:~/backup
meはaaaaaa.comにおける貴方のアカウントです。
当然パスワードを入れる必要があります。
4.バックアップ対象の除外
$ rsync -av --exclude '*.tmp' src moons@beowulf-tech.com:~/backup
複数のファイル、ディレクトリーを除外する場合は、--exclude 'xxxx'を何度も並べれば良いです。ディレクトリーの場合は、最後に/を記述します。
$ rsync -av --exclude '.obj/' --exclude '.DS_Store' src me@aaaaaa.com:~/backup
5.消えないディレクトリー
上記のまま使っていると、gitリポジトリーなどで空のディレクトリーが残っていることがよくあります。
rsync cannot delete non-empty directory
と言われることはないでしょうか?
rsync -av --delete --exclude '.DS_Store' --exclude '.obj/' src backup
これは例えば上記のように「バックアップ対象の除外」で指定した.DS_Store
が、.git
ディレクトリー内の残っていて、削除できないケースが考えられます。
このような場合は、下記のように --delete-excluded
オプションを指定しましょう。
--delete-excluded
オプションは、--exclude
で除外したディレクトリーやファイルがバックアップ先にある場合は、これを削除してくれます。
rsync -av --delete --delete-excluded --exclude '.DS_Store' --exclude '.obj/' src backup
6.rsyncのオプション
オプション一覧は、下記のページが詳しいので、そちらを参照してください。