ACL을 유지하면서 파일을 백업하는 데 사용하는 것은 무엇입니까?


24

tar 유틸리티를 사용하여 파일을 백업에 저장하면 확장 ACL이 유실됩니다.

ACL을 보존하기 위해 일반적으로 사용되고 해킹되지 않은 솔루션이 있습니까 (예 : ACL을 처음부터 다시 작성하는 스크립트 작성)?


1
이 중복 질문 도 참조하십시오 .
Totor

답변:


4

타르 사용

만들다:

tar --acls -cpf backup.tar some-dir-or-file

untar하려면 :

tar --acls -xpf backup.tar

3
tar: unrecognized option '--acls'작동하지 않습니다.
maniat1k

1
Fedora는 다음을 포함하는 비표준 GNU Tar 패치를 가지고 있습니다.--acls
user55149

3
데비안에서는 jessie까지는 tar지원하지 않습니다 --acls. ( 버그 # 732071 참조 )이 기능은에서 ​​패키지로도 제공됩니다 wheezy-backports.
Alastair Irvine

해당 wheezy-backports버전의 tar버그에는 --acls옵션이 있습니다. 상기 옵션을 사용한 타르볼 추출은 아카이브에 아무것도없는 경우에도 acl을 할당합니다 (!). 여기를 참조 하십시오 .
Digger

14

실제로, 나는 (표준) 파일 권한 비트가 아니라 확장 ACL 정보 에 대한 질문이라고 생각합니다 (setfacl (1) 또는 acl (5) 참조).

내가 알기로는 수정되지 않은 GNU tar는 ACL 정보를 무시합니다. (RHEL 5.2와 함께 제공되는 GNU tar 1.15.1의 매뉴얼 페이지에는 스위치 --acls 및 --no-acls가 언급되어 있지만 작동하지는 않았습니다.)

그러나 exustar 형식 을 선택 하면 스타 프로그램이 ACL을 백업 및 복원 할 수 있습니다 .

star -c -p -acl artype=exustar -f archive.tar  files...
star -x -acl -f archive.tar

스타 홈페이지 : http://cdrecord.berlios.de/new/private/star.html 스타는 최소한 우분투에서 사용할 수 있습니다.


이것은 내가 추구하는 것처럼 보이며, 그것에 대해 살펴 봐야합니다. 이제 나는 하루에 몇 시간을 더 살 필요가있다;)
silk

3
star데비안에서는 사용할 수 없으며 "팀"에 의해 관리되지 않는 것 같습니다. 이 프로젝트는 여전히 30 년 이상 지속되어 운영되고 있습니다. bsdtar다른 것을 원하면 시도하십시오 .
Totor

1
belios 종료 후 여기에서 찾을 수 있습니다 : sourceforge.net/projects/s-tar/files
Jonas Stein

9

나는 지금까지 해결책을 찾고 있는데 이것을 발견했다.

먼저 내 폴더에서 getfactl을 수행하십시오.

getfacl -R /a_folder > folder.acl

그런 다음 일반 타르를 수행하십시오

tar -czvf folder.tar.gz /a_folder

내가 추출 할 때

tar -xvf folder.tar.gz

권한에 대해 setfacl을 수행하십시오.

setfacl --restore=folder.acl

이것은 나를 위해 작동합니다.


1
감사. 이 페이지에서 아무것도 효과가 없었습니다. [정말로 소스에서 별을 컴파일했지만 작업을 수행하지 못했습니다.] 그러나 이것은 실제로 작동했습니다. 우아하지는 않지만 완벽하게 작동합니다.
ashishsony


2

사용하기 쉽지만 강력한 솔루션을 찾고 있다면 권장 rdiff-backup합니다.

기본적으로 소스 디렉토리를 대상 디렉토리에 복사하지만 추가 정보를 저장하므로 언제든지 원할 때 다시 시간을 되돌릴 수 있습니다.

물론 심볼릭 링크, 특수 파일, 하드 링크, 권한, uid / gid 소유권 및 수정 시간을 유지합니다.


2

나는 당신이 사용하는 것이 좋습니다 bsdtar.

bsdtar 기본적으로 확장 ACL을 백업 하는 경우 와 동일한 구문 을 사용하며 GNU tar생성 된 아카이브는 읽을 수 GNU tar있습니다.

패키지와 명령 이름 (데비안 기반 배포판 아래)은 bsdtar입니다.

bsdtar cf archive.tar /my/folder/using/extd_acl 
bsdtar xf archive.tar 

두 번째 (추출) 명령은 ACL을 복원합니다.


나는 그것이 얼마 전에 일했다고 확신하더라도 그것을 작동시킬 수 없다. code.google.com/p/libarchive/issues/detail?id=329 버그를 신고했습니다 .
Ambroz Bizjak

사실 여기에 ... Debian 8 Jessie에서 시도했지만 작동하지 않았습니다. :(
Totor

몇 년 동안 아무런 문제없이 데비안 (x64, PC)에서 사용하고 있습니다 (wheezy, jessie 및 현재 여러 컴퓨터에서 확장 됨).
Binarus

1

타르 맨 페이지에서.

-p, --same-permissions, --preserve-permissions
             는 파일을 추출 할 때 umask를 무시합니다 (루트의 기본값).

실제로 액세스 권한 (ACL)을 변경하는 것은 보관 작업이 아니라 해당 사용 권한을 푸는 작업입니다. Tar은 종종 한 사용자에서 다른 사용자로 파일을 배포하는 데 사용되므로 사용자가 압축을 풀 때 umask 를 적용하는 것이 편리하다고 생각됩니다 .

파일의 이전 권한을 유지하려면 옵션을 간단하게 적용하십시오. 예를 들어

스트레이트 타르 :

tar xvp some-file

bz.tar :

tar xvjp some-file

gz.tar :

tar xvzp some-file

이 작동하지 않습니다.
maniat1k

1
또한 tar는 추출 할 대상을 자동으로 파악합니다. 'j'또는 'z'를 전달할 필요가 없습니다.
Good Person
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.