Bash
MacOSX
初心者

macosx 設定メモ rsync 編

More than 1 year has passed since last update.

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 '.git/' src me@aaaaaa.com:~/backup


除外設定は単純に対象から外れるだけなので、例えばバックアップ先に余計なディレクトリーがあって、--deleteオプションを入れた上で--excludeで指定しても対象のディレクトリーが消えることはありません。

5.rsyncのオプション

-a

コピー元のディレクトリを再帰的にオーナー・グループ・パーミッション・タイムスタンプをそのままコピーします。オプション -rlptgoD と同じです。

-g

グループをそのままコピーします。

-l

シンボリックリンクをそのまま(ターゲットの指定を変えずに)コピーします。

-o

オーナーをそのままコピーします。

-p

パーミッションをそのままコピーします。

-r

ディレクトリ内を再帰的にコピーします。

-t

タイムスタンプをそのままコピーします。

-u

コピー元とコピー先を比較し、追加・更新されたファイル・ディレクトリのみをコピーします。

-v

コピーしているファイル名やバイト数などの情報を表示します。

-z

通信を圧縮します。

-4

IPv4を使用します。

-6

IPv6を使用します。

--delete

コピー元にない(削除された)ファイルをコピー先で削除します。コピー元とコピー先を同期します。