한 디렉터리의 속성(소유권, 그룹, 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