假设我想将 /etc/bin 复制到一个文件夹,同时保留文件属性以及父目录。 [目标文件夹不应只包含 bin 文件夹,而应包含 /etc/bin。]
有可能做到这一点吗?使用 tar 进行压缩和解压缩是否有效?
答案1
mkdir target/etc
cp -Rp /etc/bin target/etc/
或(仅限 GNU)
mkdir target/etc
cp -a /etc/bin target/etc/
或者
mkdir target/etc
rsync -aAX /etc/bin target/etc/
或(经典 UNIX)
find /etc/bin | cpio -pm target
或(经典unix,另一个)
( cd / && tar -tf - etc/bin ) | (cd target && tar -xf - )
或者(似乎很少有人听说过的 POSIX 替代品)
mkdir target/etc
pax -rw -pe etc/bin target/etc/
所有这些都保留传统的 Unix 元数据(权限、时间戳 1、所有权(如果以 root 身份运行)2)。根据您的系统,它们可能会或可能不会保留其他元数据,例如 ACL 和扩展属性(其中一些可能需要其他选项,例如--acls --xattrs
使用 GNU tar )。
1除了无法复制的 ctime 和某些方法的目录 atimes 之外。 ²只有 root 才能保留所有权。
答案2
人焦油:
-P, --absolute-names Don't strip leading slashes from file names when creating ar‐ chives. -p, --preserve-permissions, --same-permissions extract information about file permissions (default for supe‐ ruser) --xattrs Enable extended attributes support.