
tar 명령에서 "p" 옵션을 사용하여 일부 데이터를 백업해야 합니다. 문제는 이 데이터를 복원할 위치에 모두 동일한 사용자가 있지만 해당 사용자는 다른 ID를 가질 수 있다는 것입니다. tar와 어떤 차이가 있습니까? 아니면 사용자 이름으로 권한을 올바르게 복원합니까?
답변1
tar
연관된 문자열이 아닌 UID 및 GID를 기반으로 권한을 기록합니다. 따라서 한 서버의 UID가 3300이고 'bob'에 연결된 경우 새 서버에서 파일은 UID 3300을 가진 사용자가 소유하게 됩니다.
UNIX의 가상 모든 것(모든 것을 말하고 싶지만 100% 확신할 수는 없음)은 실제로 파일 시스템 수준에 저장되는 UID:GID 값을 사용합니다. 이름은 단지 passwd 파일에서 간단한 조회일 뿐이며 기본 검사는 숫자 값을 사용하여 수행됩니다.
답변2
이전 답변을 요약하고 몇 가지 중요한 정보를 추가합니다.
아카이브를 생성할 때
tar
항상 파일의 사용자 및 그룹 ID를 보존합니다.~하지 않는 한--owner=NAME
, 와 다르게 말했습니다--group=NAME
. 두 경우 모두 각 파일에는 항상 연관된숫자사용자 및 그룹 ID.GNU
tar
및 아마도 다른 버전의tar
,또한사용자 및 그룹 저장이름,--numeric-owner
가 사용되지 않는 한. 또한 기본적으로 사용자 및 그룹 이름을 저장하지만 다음과 같은 옵션bsdtar
은 지원되지 않습니다.--numeric-owner
창조버전 3.0까지 보관합니다.적출훨씬 오래 전부터 아카이브).로 추출할 때일반 사용자, 모든 파일은언제나사용자의 소유가 됩니다. 그리고 파일을 추출한다는 것은 파일 시스템에 새 파일을 생성하는 것을 의미하며 일반 사용자가 파일을 생성하고 다른 사람에게 소유권을 줄 수 없기 때문에 다를 수 없습니다.
다음과 같이 추출할 때뿌리,
tar
기본적으로 추출된 파일의 소유권을 복원합니다.~하지 않는 한--no-same-owner
루트 자신에게 소유권을 부여하는 데 사용됩니다.GNU tar, bsdtar 및 다른 버전의 에서는
tar
복원된 소유권이 사용자(및 그룹)에 의해 수행됩니다.이름, 해당 정보가 아카이브에 있는 경우그리고대상 시스템에 일치하는 사용자가 있습니다. 그렇지 않으면 ID별로 복원됩니다. 옵션이 제공 되면--numeric-owner
사용자 및 그룹 이름은 무시되고 ID가 사용됩니다. 두 경우 모두 숫자 ID가 사용될 때마다 일치하는 사용자 및 그룹이~ 아니다시스템에 존재해야 합니다.권한 및 타임스탬프도 아카이브에 저장되며 옵션
--no-same-permissions
및/또는--touch
사용되지 않는 한 기본적으로 복원됩니다. 사용자가 추출할 때 사용자umask
의빼다--same-permissions
사용 되지 않는 한 권한에서 .--preserve-permissions
별칭 이며--same-permissions
다음과 동일한 기능을 갖습니다.-p
이것이 문제를 명확하게 하는 데 도움이 되기를 바랍니다! :)
답변3
두 시스템 간에 파일을 전송하려는 경우 rsync는 기본적으로 uid 대신 사용자 이름으로 권한을 설정하고 양쪽 끝의 사용자 이름을 확인합니다. 사용자가 시스템 중 하나에 존재하지 않는 경우에만 별도로 지정하지 않는 한 uid와 함께 사용자를 복사합니다.
답변4
GNU tar에 --same-owner 옵션을 사용하십시오. 보다http://www.gnu.org/software/tar/manual/html_section/Attributes.html