rsync
--link-dest

rsyncでinodeの節約バックアップ (--link-destオプション)

やりたいこと

rsyncで何日間分かのバックアップをとるときに、サーバのディスク容量(inode)とか節約したい

環境

サーバ構成

server01: データサーバ
server02: バックアップサーバ

対象データ(server01)

server01
$ ls -1 data
file1
file2

節約できてないやり方。

(1) ある日(10/22)のバックアップ

server01
$ rsync -a data/ server02:~/data_20171022
server02
$ ls -1 data_20171022/
file1
file2

(2) 次の日(10/23)のバックアップ

server01
$ rsync -a data/ server02:~/data_20171023
server02
$ ls -1 data_20171023/
file1
file2

バックアップできてるけど、inodeが22日と23日で違う

server02
$ ls -1i data_2017102*/
data_20171022/:
923274 file1
923275 file2

data_20171023/:
923277 file1
923278 file2

節約できてるやり方。

(1) ある日(10/22)のバックアップ

※ここは同じ

server01
$ rsync -a data/ server02:~/data_20171022
server02
$ ls -1 data_20171022/
file1
file2

(2) 次の日(10/23)のバックアップ

※--link-destを使用

server01
$rsync -a data/ server02:~/data_20171023 --link-dest=../data_20171022
server02
$ ls -1 data_20171023/
file1
file2

inodeが22日と23日で同じになって節約できた

server02
$ ls -1i data_2017102*/
data_20171022/:
1053235 file1
1053236 file2

data_20171023/:
1053235 file1
1053236 file2

備考

  • --link-destはバックアップするディレクトリからの相対パス
    →[追記] rsync対象が絶対パスなら--link-destに指定するパスは絶対ぱすでもいいような気もする。
  • -aオプションを付けなくてはだめ。(具体的には-t) ←これがわからなくて嵌った。