rsyncの特徴について
ファイルやディレクトリをバックアップ,同期するツールや方法はいくつかありますが、私はケースバイケースで複数の手段を使い分けています。そのなかでもとりわけrsyncは多様しています。
rsync の用途オプション等は、他のサイトやドキュメントで紹介されていますので、省略しますが、今回は特徴を挙げてみます。
rsync 特徴
- 同期でコピー先の不一致ファイル・ディレクトリを削除するパラメータがあります
- 同期で特定のパターン一致するファイルやディレクトリ配下を除外することができる
- ネットワーク間ホスト同士で同期することができます( rsync サーバ )
- rsyncサーバは通常セキュリティを保つためにxinetなどのTCPラッパーを経由するといい
- ssh経由でrsync同期を実行できる その際サーバ側でrsyncデーモンを起動する必要はない
- ネットワーク間同期で暗号化・認証したい場合、ssh経由でおこなう
- 反対にネットワーク間同期での認証方法を持ち合わせていない
- コピーコマンドと違い、ファイルシステム上のファイルブロックを上書きせず、別ブロックに書き込む
(これはコピー先の本データをハードリンクコピーしている場合に大変たすかる) - 同期前にどのようなファイル・ディレクトリを同期するのかテストできる(–dry-run オプション)
一点rsyncで気をつけたいのが「コピー先」のディレクトリ名
$ rsync -av /home/xxx1 /media/disk-1/backup/
$ rsync -av /home/xxx1/ /media/disk-1/backup/
前者は/home/xxx1ディレクトリの中身と、そのディレクトリ自体がコピーされますが、後者は/home/xxx1ディレクトリの中身はコピーされますが、ディレクトリはコピーされません。
- ディレクトリも含めてコピーしたい場合:/ なし
- ディレクトリ以下のツリーをコピーしたい場合:/ あり
実際にテストするなどして確認してみるといいでしょう。
バックアップ対象を除外したい
バックアップなどを行う際は「このファイル形式はバックアップ対象から除外したい」「このディレクトリ以下は除外したい」と思うことはありますよね。rsync は –exclude や –filter オプションがあります。
$ rsync -av –exclude ‘*.jpg’ ~/xxx1 /media/disk-1/backup/
これは xxx1 ディレクトリ内の *.jpg マッチしたファイルすべて除外するというものです。
私の場合、cpコマンドのハードリンクコピーとrsyncを併用した使い方で、開発コード等のバックアップを常時行っています。簡単なケーススタディですみませんが、いつかもっと掘り下げたTipsを紹介したいと思います。
関連したページ
- None Found