仅将权限和所有权从一个 tar 文件复制到另一个

Dee*_*tal 6 tar permissions

我有两个 tar 文件,它们基本上是我在 android 上的 /data 文件夹的备份。问题是最新备份中文件的权限和所有权搞砸了。然而,旧版 tar 中的权限是完美的。

我想要一种从 old.tar 读取权限并将更改复制到 latest.tar 的方法。

我尝试使用 -p 和 --same-owner 标志将文件提取到我自己的系统,但所有权更改为root而不是system因为我的计算机没有名为 system 的用户或组,但我的 android 手机有。我想我会提取文件,并编写一个脚本,该脚本使用 stat 和 grep 读取权限和所有权,并在 latest.tar 中设置文件的权限和所有权。但它似乎不是这样工作的。任何人都可以在这个问题上给我一些帮助。

Sha*_*dur 8

我不确定 Tar 可以做到这一点。但是,应该可以解压两个备份(到不同的目录),然后使用类似

cd /mnt/oldbackup ; 
find ./ -exec getfacl {} | setfacl /mnt/newbackup/{} 
Run Code Online (Sandbox Code Playgroud)

根据联机帮助页,作为 的输出getfacl可以用作标准输入setfacl。

  • @dpacmittal 尝试将这些命令(从解压开始并以制作新 tarball 结束的所有内容)放在一个脚本中,并在 [fakeroot](http://fakeroot.alioth.debian.org/) 下运行该脚本。Fakeroot 让程序认为它是 root,所以它应该让 tar 相信它成功创建了 UID 拥有的文件(这些更改只对在 fakeroot 内运行的应用程序可见,并且在 fakeroot 终止时完全忘记)。 (2认同)