원본 대상 파일의 소유권을 유지하면서 덮어쓴 tar 아카이브를 추출할 수 있습니까?

원본 대상 파일의 소유권을 유지하면서 덮어쓴 tar 아카이브를 추출할 수 있습니까?

tar 아카이브를 루트로 추출하고 의도적으로 일부 대상 파일을 아카이브 내용으로 덮어쓰려는 특정 사용 사례가 있습니다. 이것은 모두 괜찮고 구현하기 쉽지만 원본 대상 파일의 원래 소유권과 권한도 유지하고 싶습니다. 예를 들어:

$ touch file && tar cf test.tar.gz file && sudo chown www-data:www-data file && sudo tar xf test.tar.gz && ls -l file -rw-r--r-- 1 tim tim 0 May 1 11:26 file

여기서는 내 사용자( )로 파일을 생성하고 tim:tim이를 아카이브하고 소유권을 변경한 www-data:www-data다음 (루트로) 아카이브를 추출하여 원본 파일을 덮어씁니다. 보시다시피 소유권은 사전 보관된 상태의 파일 소유권으로 수정되었지만 추출 후에는 www-data:www-data.

매뉴얼 페이지를 상당히 자세히 살펴봤지만 tar내가 원하는 것을 즉시 달성할 수 있는 확실한 방법을 찾을 수 없습니다. 내가 뭐 놓친 거 없니?

답변1

일반 사용자는 www-data 소유의 파일을 덮어쓸 수 없으며 소유자는 쓰기 권한만 가지므로 원하는 내용은 예제에서 작동하지 않습니다.

사용자가 이러한 파일에 쓸 수 있는 경우 를 사용하는 것이 효과적입니다 --overwrite. 그러나 tar파일의 수정 시간과 권한을 변경하려고 하면 일반 사용자로서 쓰기가 허용되지 않기 때문에 오류가 발생합니다. 귀하에게 속하지 않은 파일이 이 작업을 수행합니다.

관련 정보