复制文件同时保留文件属性

复制文件同时保留文件属性

假设我想将 /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.

相关内容