POSIX ACL 및 권한을 유지하면서 데이터를 백업하세요.

POSIX ACL 및 권한을 유지하면서 데이터를 백업하세요.

저는 서버에서 데이터를 백업하고 모든 ACL과 권한을 유지하는 실용적인 방법을 찾고 있습니다. tar를 보았지만 Google tar에 따르면 ACL을 유지하지 않습니다. rsync가 ACL과 권한을 유지할 수 있다는 것을 알고 있지만 대상 시스템이 POSIX ACL을 지원하고 동일한 사용자가 있는 경우에만 가능합니다. 제 경우에는 AFS에 있는 디렉토리에 백업을 수행 중이므로 POSIX ACL이 지원되지 않습니다.

현재 저는 find를 사용하여 시스템을 반복하는 스크립트를 작성하고(일부 디렉터리를 제외하기 때문에 find를 사용하고 있습니다) 권한과 ACL을 텍스트 파일에 저장하는 스크립트를 작성하여 문제를 해결했습니다. 이 솔루션은 효과가 있지만 너무 느립니다. 더 나은 해결책이 있습니까?

답변1

apt-get install star
man star
star -acl -whatever -other -options -you -need

Star는 확장 POSIX 헤더를 지원하는 tar입니다. 즉, 파일에 대한 추가 데이터를 tar 파일에 저장할 수 있는 기능입니다. 옵션 -acl은 ACL을 가져옵니다. 아카이브 생성과 추출 모두에 필요합니다.

답변2

다른 프로그램을 설치하지 않으려면 ACL을 별도로 백업할 수 있습니다.

getfacl -R somedir > acls.txt

그러면 모든 ACL이 somedir파일에 덤프됩니다 acls.txt.

복원하려면 다음을 사용하십시오.

setfacl -R --set-file=acls.txt somedir

답변3

별 옆에 사용할 수 있습니다bsdtar

답변4

내 답변을 여기에 교차 게시하십시오.https://unix.stackexchange.com/a/725745/550161


아카이브를 생성/추출할 때 두 가지를 모두 사용해야 합니다.--acls 그리고 --xattrs옵션이 있으며 물론 해당 옵션을 읽고 쓸 수 있는 적절한 권한이 있습니다.그리고.

예:

1. 아카이브 생성:

ZSTD_CLEVEL=19 tar --acls --xattrs -caPf systemd-network-conf.tzst --directory=/etc systemd/network systemd/networkd.conf.d

위의 명령은 ACL 및 확장 속성을 유지하면서 압축 수준을 사용하여 zstd압축된 아카이브를 생성합니다.tar19

  • 확장자 .tzst는 "a"를 의미합니다.다음을 사용하여 아카이브압축"과 tgz마찬가지로버전 등
  • 암시적 압축기에 사용되는 압축 수준은 동일한 줄의 시작 시 zstd제공된 환경 변수에 의해 설정됩니다 .ZSTD_CLEVEL
  • 매뉴얼 페이지를 참조하십시오: tar(1)zstd(1).

2. 해당 아카이브 추출:

sudo tar --acls --xattrs -xvf systemd-network-conf.tzst

systemd위의 내용은 현재 디렉터리에 아카이브 내부의 공통 루트 디렉터리이기 때문에 이름이 지정된 하위 디렉터리를 생성합니다 .

  • 다음을 사용하여 설정한 모든 설정//원본에서는 추출된 버전에 보존됩니다.

3. 원본 파일과 추출된 파일 속성을 비교합니다.

{cd /etc; getfacl -R systemd/network systemd/networkd.conf.d} >original.acl; cd -
getfacl -R systemd/network systemd/networkd.conf.d >extracted.acl
diff -u original.acl extracted.acl
  • 처음 두 줄은 파일로 리디렉션되므로 출력이 표시되지 않습니다.
    (마지막으로 인해 현재 디렉터리를 별도의 명령으로 출력하는 첫 번째 줄은 예외이며 cd -현재 디렉터리만 복원합니다.)
  • 차이가 없기 때문에 diff 행의 출력도 표시되지 않습니다.

관련 정보