あるディレクトリの属性(所有権、グループ、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
他の人にとってはうまくいくようで、わかりませんが、ZFSを使用するFreeBSDではrsyncメソッドが失敗します。何もしません。しかし、Jean-François Douxのアプローチは効果的です。 (望むより:https://www.lesbonscomptes.com/pxattr/)ソースディレクトリ= A&ターゲットディレクトリ= B、元の質問から。
pxattr -lR A > tmp.EAs
(tmp.EAsの最初の行を編集し、AディレクトリをB、s / A / B /に変更します。)
pxattr -S tmp.EAs