私のArch Linuxシステムでrsyncを使用してスナップショットのbtrfsバックアップを確認したいと思います。
次のrsyncコマンドは、変更を確認するために使用されます。
sudo rsync -n --itemize-changes --checksum -a --delete --numeric-ids --hard-links --acls --xattrs --devices --specials -v /.snapshots/@.20200829T194759+0200/ /mnt/pool_Tank/backups/gandalf_local/pool_System/@.20200829T194759+0200
出力として以下を取得します。
sending incremental file list
.d..t...... ./
cd+++++++++ srv/
.f........x usr/bin/newusers
.f........x usr/bin/rarpd
.f........x usr/bin/rlogind
.f........x usr/bin/rshd
cd+++++++++ var/abs/
cd+++++++++ var/cache/pacman/pkg/
cd+++++++++ var/lib/machines/
cd+++++++++ var/lib/portables/
.f........x var/lib/samba/private/secrets.tdb
cd+++++++++ var/tmp/
sent 2,899,263 bytes received 5,441 bytes 25,592.11 bytes/sec
total size is 3,037,447,803 speedup is 1,045.70 (DRY RUN)
sudo rsync -n --itemize-changes --checksum -a --delete --numeric-ids --acls 3.13s user 16.02s system 16% cpu 1:58.31 total
報告された拡張プロパティの変更に興味があります。そのため、getfattrを使用してソースとターゲットの拡張属性を読み込み、ソースとターゲットの両方で拡張属性が設定されていないことを発見しました。編集:以下の説明のおかげで、すべての拡張プロパティを読んでいます。
# Read all extended attributes on source snapshot
~ % sudo getfattr --absolute-names -m "-" -d /.snapshots/@.20200829T194759+0200/usr/bin/rarpd
~ % sudo getfattr --absolute-names -m "-" -d /.snapshots/@.20200829T194759+0200/usr/bin/rlogind
~ % sudo getfattr --absolute-names -m "-" -d /.snapshots/@.20200829T194759+0200/usr/bin/rshd
~ % sudo getfattr --absolute-names -m "-" -d /.snapshots/@.20200829T194759+0200/var/lib/samba/private/secrets.tdb
# Read all extended attributes on target
~ % sudo getfattr --absolute-names -m "-" -d /mnt/pool_Tank/backups/gandalf_local/pool_System/@.20200829T194759+0200/usr/bin/newusers
# file: /mnt/pool_Tank/backups/gandalf_local/pool_System/@.20200829T194759+0200/usr/bin/newusers
security.capability=0sAQAAAoAAAAAAAAAAAAAAAAAAAAA=
~ % sudo getfattr --absolute-names -m "-" -d /mnt/pool_Tank/backups/gandalf_local/pool_System/@.20200829T194759+0200/usr/bin/rarpd
# file: /mnt/pool_Tank/backups/gandalf_local/pool_System/@.20200829T194759+0200/usr/bin/rarpd
security.capability=0sAQAAAgAgAAAAAAAAAAAAAAAAAAA=
~ % sudo getfattr --absolute-names -m "-" -d /mnt/pool_Tank/backups/gandalf_local/pool_System/@.20200829T194759+0200/usr/bin/rlogind
# file: /mnt/pool_Tank/backups/gandalf_local/pool_System/@.20200829T194759+0200/usr/bin/rlogind
security.capability=0sAQAAAgAEAAAAAAAAAAAAAAAAAAA=
~ % sudo getfattr --absolute-names -m "-" -d /mnt/pool_Tank/backups/gandalf_local/pool_System/@.20200829T194759+0200/usr/bin/rshd
# file: /mnt/pool_Tank/backups/gandalf_local/pool_System/@.20200829T194759+0200/usr/bin/rshd
security.capability=0sAQAAAgAEAAAAAAAAAAAAAAAAAAA=
~ % sudo getfattr --absolute-names -m "-" -d /mnt/pool_Tank/backups/gandalf_local/pool_System/@.20200829T194759+0200/var/lib/samba/private/secrets.tdb
# file: /mnt/pool_Tank/backups/gandalf_local/pool_System/@.20200829T194759+0200/var/lib/samba/private/secrets.tdb
security.capability=0sAQAAAgAgAAAAAAAAAAAAAAAAAAA=
# Use getcap to see which security.capability was changed:
~ % sudo getcap /mnt/pool_Tank/backups/gandalf_local/pool_System/@.20200829T194759+0200/usr/bin/newusers
/mnt/pool_Tank/backups/gandalf_local/pool_System/@.20200829T194759+0200/usr/bin/newusers cap_setuid=ep
~ % sudo getcap /mnt/pool_Tank/backups/gandalf_local/pool_System/@.20200829T194759+0200/usr/bin/rarpd
/mnt/pool_Tank/backups/gandalf_local/pool_System/@.20200829T194759+0200/usr/bin/rarpd cap_net_raw=ep
~ % sudo getcap /mnt/pool_Tank/backups/gandalf_local/pool_System/@.20200829T194759+0200/usr/bin/rlogind
/mnt/pool_Tank/backups/gandalf_local/pool_System/@.20200829T194759+0200/usr/bin/rlogind cap_net_bind_service=ep
~ % sudo getcap /mnt/pool_Tank/backups/gandalf_local/pool_System/@.20200829T194759+0200/usr/bin/rshd
/mnt/pool_Tank/backups/gandalf_local/pool_System/@.20200829T194759+0200/usr/bin/rshd cap_net_bind_service=ep
~ % sudo getcap /mnt/pool_Tank/backups/gandalf_local/pool_System/@.20200829T194759+0200/var/lib/samba/private/secrets.tdb
/mnt/pool_Tank/backups/gandalf_local/pool_System/@.20200829T194759+0200/var/lib/samba/private/secrets.tdb cap_net_raw=ep
btrfs sent | btrfs receivedが一部のファイルに拡張属性を追加する理由の説明はありますか? xattrsが欠落していると言われていますが、このバグレポートに関してこれは可能ですか?https://bugzilla.kernel.org/show_bug.cgi?id=68891
この動作に対してbtrfs-progsの新しい問題を作成しました。 https://github.com/kdave/btrfs-progs/issues/292
答え1
2つ:
@Eduardo Trápaniが指摘したように、getfattrの使用は間違っています。正しく見なければならない拡張属性を指定していません。
btrfs send | btrfs receiveターゲットでxattrsエラーを引き起こす問題は解決されたバグです。https://github.com/kdave/btrfs-progs/issues/292