# 猫文件列表.txt

# 猫文件列表.txt

我正在使用 -T 选项从文件列表创建 tar 文件。提取 tar 文件时,子目录权限为 root:root,而不是目录本身的权限?有什么办法可以解决这个问题吗?

例子:

# 猫文件列表.txt

文件1.txt

目录1/文件2.txt

dir1/dir2/文件3.txt

# tar cf 文件.tar -T 文件列表.txt

# tar xf 文件.tar

提取的文件的所有权与 file1.txt、file2.txt 和 file3.txt 的原始所有权匹配 dir1 和 dir2 的所有权不匹配。所有者为 root:root

我可以遵循类似的解决方案提取 tar 存档时保留父目录的所有权和权限 但希望有另一种方法,因为这可能会给一堆目录增加更多的工作。

答案1

您需要备份目录和文件,为此您需要做两件事:-

1)将目录添加到文件列表:

file1.txt
dir1
dir1/file2.txt
dir1/dir2
dir1/dir2/file3.txt

2)添加--no-recursion到备份运行字符串以停止包含目录中的所有其他文件:

tar cf files.tar --no-recursion -T filelist.txt

请注意,顺序很重要:目录必须位于子目录或文件中的任何引用之前;参数--no-recursion必须位于之前-T,但在cf FileName命令之后。

相关内容