我正在使用 -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
命令之后。