![rsync --itemize-changes는 일부 xattr 차이점을 나열하지만 getfattr에는 차이점이 표시되지 않습니다.](https://linux55.com/image/179366/rsync%20--itemize-changes%EB%8A%94%20%EC%9D%BC%EB%B6%80%20xattr%20%EC%B0%A8%EC%9D%B4%EC%A0%90%EC%9D%84%20%EB%82%98%EC%97%B4%ED%95%98%EC%A7%80%EB%A7%8C%20getfattr%EC%97%90%EB%8A%94%20%EC%B0%A8%EC%9D%B4%EC%A0%90%EC%9D%B4%20%ED%91%9C%EC%8B%9C%EB%90%98%EC%A7%80%20%EC%95%8A%EC%8A%B5%EB%8B%88%EB%8B%A4..png)
내 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
두가지:
@Eduardo Trápani가 지적했듯이 getfattr 사용이 잘못되었습니다. 올바르게 살펴봐야 할 확장 속성을 지정하지 않았습니다.
btrfs send | btrfs receive 대상에서 xattrs 오류를 일으키는 문제는 확인된 버그입니다.https://github.com/kdave/btrfs-progs/issues/292