모든 파일/디렉터리 속성을 다른 파일/디렉터리로 복제/복사하는 방법은 무엇입니까?

모든 파일/디렉터리 속성을 다른 파일/디렉터리로 복제/복사하는 방법은 무엇입니까?

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

관련 정보