用什么来备份文件,保留 ACL?

sil*_*ilk 28 acl tar backup permissions

当使用 tar 实用程序将文件存储在备份中时,会丢失扩展的 ACL。

是否有一些常用的而不是骇人听闻的解决方案(例如:创建一个将从头开始重新创建 ACL 的脚本)来保留 ACL?

小智 14

实际上,我认为问题不在于(标准)文件权限位,而在于扩展ACL 信息(请参阅 setfacl(1) 或 acl(5))。

据我所知,未经修改的 GNU tar 会忽略 ACL 信息。(RHEL 5.2 附带的 GNU tar 1.15.1 手册页提到了开关 --acls 和 --no-acls,但我还没有让它们工作。)

但是,如果您选择exustar格式,star程序能够备份和恢复 ACL :

star -c -p -acl artype=exustar -f archive.tar  files...
star -x -acl -f archive.tar
Run Code Online (Sandbox Code Playgroud)

Star 主页:http : //cdrecord.berlios.de/new/private/star.html Star 至少在 ubuntu 中可用。

  • `star` 在 Debian 上不可用,并且似乎不是由“团队”维护的。尽管如此,该项目仍然存在并在 30 多年后得到维护。如果你想要别的东西,试试 `bsdtar`。 (3认同)

man*_*k13 10

到目前为止,我也在寻找解决方案:

首先从我的文件夹中执行 getfactl

getfacl -R /a_folder > folder.acl
Run Code Online (Sandbox Code Playgroud)

然后做一个普通的焦油

tar -czvf folder.tar.gz /a_folder
Run Code Online (Sandbox Code Playgroud)

当我提取它时

tar -xvf folder.tar.gz
Run Code Online (Sandbox Code Playgroud)

为权限做一个 setfacl。

setfacl --restore=folder.acl
Run Code Online (Sandbox Code Playgroud)

这对我有用。


小智 8

使用焦油

创造:

tar --acls -cpf backup.tar some-dir-or-file
Run Code Online (Sandbox Code Playgroud)

解压:

tar --acls -xpf backup.tar
Run Code Online (Sandbox Code Playgroud)

  • `tar: unrecognized option '--acls'` 不起作用。 (3认同)
  • 在 Debian 中,`tar` 直到 jessie 才支持 `--acls`。(请参阅 [bug #732071](https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=732071)。)该功能也可从 `wheezy-backports` 的包中获得。 (3认同)

Ska*_*ren 5

rsync with the -A and/or -X options.
Run Code Online (Sandbox Code Playgroud)