멋진 권한이 있는 폴더가 있다고 가정해 보겠습니다.
mkdir abc
mkdir abc/def
chmod 777 abc
이제 백업을 생성하고 싶습니다.
tar -cpzvf test.tar.gz abc/def/
이제 abc/를 삭제하고 아카이브에서 복원해 보겠습니다.
rm -rf abc/
tar -xpzvf test.tar.gz
abc/
더 이상 원래 권한이 없습니다.
find abc -printf "%m:%f\n"
755:abc
abc/(abc/def/ 대신)를 매개변수로 제공하여 tar 파일을 생성하면 두 폴더의 권한이 훌륭하게 복원된다는 것을 알고 있습니다. 하지만 제 경우에는 abc/def/를 매개변수로 명시적으로 제공해야 합니다. 동일한 결과를 얻을 수 있는 방법이 있습니까?
답변1
@schily의 좋은 답변에 대한 후속 조치를 취하려면 해당 이외의 하위 디렉터리를 추가하지 않고 최상위 디렉터리를 abc
아카이브에 추가하려면 def
GNU를 사용하여 tar
다음을 수행할 수 있습니다.
tar -zcf file.tgz --no-recursion abc --recursion abc/def
libarchive 를 사용 bsdtar
하거나 언제든지 필요한 파일의 정확한 목록 생성 pax
으로 되돌릴 수 있습니다 .find
(printf 'abc\0'; find abc/def -print0) | bsdtar -zcnf file.tgz --null -T -
답변2
umask가 적용되었습니다. 노력하다:
마스크 000; tar -xpzvf test.tar.gz
답변3
문제는 디렉터리가 abc
아카이브에 없으므로 아카이브에서 복원할 수 없다는 것입니다.
필수이지만 누락되었으므로 tar
자격 증명에 따라 기본 권한을 사용하여 생성하세요.
권한도 복원하려면 해당 권한 abc
을 아카이브에 넣어야 합니다.