tar和rsync:存档和保留SELinux上下文,扩展属性和ACL

时间:2020-01-09 10:42:00  来源:igfitidea点击:

在备份时,如何使用tar和rsync命令在CentOS/RHEL/Fedora Linux服务器下保留ACL,扩展属性和SELinux上下文?

GNU/tar和rsync命令都可以归档扩展属性,例如以下内容,以用于备份和其他目的:

  • Selinux上下文

  • ACL

  • xattrs

tar命令语法

语法为:

tar --selinux --acls --xattrs  -cvf file.tar /var/www

其中:

  • --selinux将SELinux上下文保存到名为file.tar的档案中。
  • --aclsA将ACL保存到名为file.tar的档案中。
  • --xattrs将用户/根xattrs保存到名为file.tar的归档文件中,请归档所有扩展属性,包括SELinux和ACL。
  • -c创建一个名为file.tar的新档案。
  • -v详细输出。
  • -f file.tar存档文件名。
  • /var/www从目录/var/www创建名为file.tar的档案

要提取存档,只需执行:

tar -xvf file.tar

您可以使用以下语法忽略属性,以实现与较早的基于Linux的系统的向后兼容性:

tar --no-acls --no-selinux --no-xattrs -xvf file.tar

其中:

  • --no-acls不要从档案中提取ACL。
  • --no-selinux不要从档案中提取SELinux上下文。
  • --no-xattrs不要从档案中提取用户/root xattrs

rsync命令语法

语法为:

rsync -av -A -X /source/path /dest/path
rsync -az -A -X /source/path user1@server2:/dest/path

其中:

  • -A:保留ACL。
  • -X:保留扩展属性/SELinux。
  • -a:存档模式。
  • -z:在传输过程中压缩文件数据。

要将/var/www同步到node2,请执行:

rsync -aAX /var/www root@node2:/var/www/

或者

rsync -e ssh -aAX /var/www root@node2:/var/www/

您可能需要传递以下追加选项来备份硬链接(-H),查看进度(-P)和详细(-v)输出:

rsync -e ssh -aAXHPv /var/www root@node2:/var/www/

如何查看SELinux上下文?

执行以下命令:

ls -lZ
ls -lZ /path/to/file

或者

ls -Z

如何查看文件系统对象的扩展属性?

使用getfattr命令:

getfattr -d -m - -R /path/to/dir
getfattr -d -m - /path/to/file
getfattr -d -m security.selinux -R /var/www

要列出Linux第二个扩展文件系统上的文件属性(有关更多信息,请参见chattr命令):

lsattr /path/to/file