我想将一个目录的属性(所有权、组、ACL、扩展属性等)复制到另一个目录,但不复制目录内容本身。
这不起作用:
cp -v --attributes-only A B
cp: omitting directory `A'
笔记:不一定是这样cp
。
答案1
经过在命令行上进行了大量的尝试和错误之后,我想我已经找到了答案。但这不是一个cp
相关的答案。
rsync -ptgo -A -X -d --no-recursive --exclude=* first-dir/ second-dir
这会:
-p, --perms preserve permissions
-t, --times preserve modification times
-o, --owner preserve owner (super-user only)
-g, --group preserve group
-d, --dirs transfer directories without recursing
-A, --acls preserve ACLs (implies --perms)
-X, --xattrs preserve extended attributes
--no-recursive disables recursion
以供参考
--no-OPTION turn off an implied OPTION (e.g. --no-D)
-r, --recursive recurse into directories
答案2
chmod --reference=first-dir second-dir
答案3
rsync -aAX --exclude='*' src_dir/ dst_dir
其中 dst_dir - 是目标目录。或者:
rsync -dADXgot src_dir dst_dir
其中 dst_dir - 是包含目标目录的目录,或者是不存在的目标目录。
来自 rsync 手册页:
-a, --archive archive mode; equals -rlptgoD (no -H,-A,-X)
--exclude=PATTERN exclude files matching PATTERN
-d, --dirs transfer directories without recursing
-p, --perms preserve permissions
-A, --acls preserve ACLs (implies -p)
-X, --xattrs preserve extended attributes
-o, --owner preserve owner (super-user only)
-g, --group preserve group
--devices preserve device files (super-user only)
--specials preserve special files
-D same as --devices --specials
-t, --times preserve modification times
答案4
我不明白,因为它似乎对其他人有用,但 rsync 方法对我来说在带有 ZFS 的 FreeBSD 上失败了。什么都没发生。然而让-弗朗索瓦·多克斯的方法是有效的。 (看:https://www.lesbonscomptes.com/pxattr/)源目录= A & 目标目录= B,来自原始问题。
pxattr -lR A > tmp.EAs
(编辑tmp.EAs第一行,将A目录改为B,s/A/B/)
pxattr -S tmp.EAs