使用 tar 实用程序在备份中存储文件时,会丢失扩展 ACL。
是否有一些常用且非黑客的解决方案(例如:创建一个从头开始重新创建 ACL 的脚本)来保留 ACL?
答案1
实际上,我认为问题不在于(标准)文件权限位,而是扩展ACL 信息(请参阅 setfacl(1) 或 acl(5))。
据我所知,未修改的 GNU tar 会忽略 ACL 信息。 (RHEL 5.2 附带的 GNU tar 1.15.1 的手册页提到了开关 --acls 和 --no-acls,但我还没有让它们工作。)
但是,那星星程序能够备份和恢复 ACL,如果您选择埃克苏斯塔格式:
star -c -p -acl artype=exustar -f archive.tar files...
star -x -acl -f archive.tar
明星主页:http://cdrecord.berlios.de/new/private/star.html Star 至少在 ubuntu 中可用。
答案2
我也在寻找解决方案,到目前为止我发现了这个:
首先从我的文件夹中执行 getfactl
getfacl -R /a_folder > folder.acl
然后做一个常规的 tar
tar -czvf folder.tar.gz /a_folder
当我提取它时
tar -xvf folder.tar.gz
对权限进行 setfacl 操作。
setfacl --restore=folder.acl
这对我有用。
答案3
使用焦油
创造:
tar --acls -cpf backup.tar some-dir-or-file
解压:
tar --acls -xpf backup.tar
答案4
我建议你使用bsdtar
。
bsdtar
默认备份扩展ACL,它使用相同的语法as GNU tar
,并且它生成的档案可供 读取GNU tar
。
软件包和命令名称(在基于 Debian 的发行版下)是bsdtar
。
bsdtar cf archive.tar /my/folder/using/extd_acl
bsdtar xf archive.tar
第二个(提取)命令恢复 ACL。