如何在使用tar时保持文件所有权

Don*_*ear 16 unix perl tar

我目前正在为我们的服务器编写一个自动备份脚本.我在脚本中使用UNIX tar命令来存档代码存储库.

在我的PERL脚本中,我使用tar命令,如下所示:

system("tar -jcpf $destPath/$string.tar.bz2 -X $exclusionFile $targetPath");
Run Code Online (Sandbox Code Playgroud)

我想在提取tar存档时保留文件所有权.我试图列出tar存档内容

tar -jtvf
Run Code Online (Sandbox Code Playgroud)

并且列表包含每个文件的正确文件所有权,但在提取存档时,文件所有权将更改为当前用户.

有没有办法提取tar存档并保留每个文件的原始文件所有权?

dev*_*ull 13

--same-owner提取时提供tar 选项.

tar --help 讲述:

   --same-owner
          create extracted files with the same ownership
Run Code Online (Sandbox Code Playgroud)


G. *_*ito 5

您希望在tar -x使用-p交换机时"保留"文件属性.显然你需要成为root用户才能获得理想的结果.

         -p, --insecure, --preserve-permissions
         (x mode only) Preserve file permissions.  Attempt to restore the
         full permissions, including owner, file modes, file flags and
         ACLs, if available,
Run Code Online (Sandbox Code Playgroud)

许多POSIX系统也出货pax,cpio可以作为替代品tar.