zfs diff

zfs diff コマンドで表示されるのは、新しい方の値らしい。

# zfs-diff-long.sh data-a@130829 data-a > zfs-diff.txt
# zfs-diff-long.sh -E data-a@130829     > zfs-diff@130829.txt
# zfs-diff-long.sh -E data-a            > zfs-diff@latest.txt
# diff xxx.zip zfs-diff*.txt
zfs-diff.txt:       1377796042.173347920    +       F       153510  153496  588458531       1       +0      1000            1000            1377796042.173347920    1271246288.000000000    1380034046.692823670    1289647809.332299246    /data/xxx.zip     -
zfs-diff@130829.txt:1321541261.555379372    +       F       153510  153496  588458531       1       +0      1000            1000            1321541261.555379372    1271246288.000000000    1312597694.414690065    1289647809.332299246    /data/xxx.zip     -
zfs-diff@latest.txt:1377796042.173347920    +       F       153510  153496  588458531       1       +0      1000            1000            1377796042.173347920    1271246288.000000000    1380034046.692823670    1289647809.332299246    /data/xxx.zip     -

こんなスクリプトで出力。第一引数の方を「-E」にすると、空のsnapshotと比較する指定になって、該当するファイルシステム上のすべてのファイルが出力される。

#! /bin/sh

zfs diff -H -tF \
-o object \
-o parent \
-o size \
-o links \
-o linkschange \
-o user \
-o group \
-o ctime \
-o mtime \
-o atime \
-o crtime \
-o name \
-o oldname \
"$1" \
"$2" 

アクセス日時の変更でも、zfs diffに出力される。アクセス日時の記録は不要なのでoffにした。

# zfs get atime
NAME                            PROPERTY  VALUE  SOURCE
data-a                          atime     on     default
# zfs set atime=off data-a
# zfs get atime
NAME                            PROPERTY  VALUE  SOURCE
data-a                          atime     off    local