33
42

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

macosx 設定メモ rsync 編

Last updated at Posted at 2016-02-06

はじめに

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

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のオプション

オプション一覧は、下記のページが詳しいので、そちらを参照してください。

33
42
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
33
42

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?