하나의 tar 파일에서 다른 파일로 권한과 소유권만 복사

하나의 tar 파일에서 다른 파일로 권한과 소유권만 복사

기본적으로 Android의 /data 폴더를 백업하는 두 개의 tar 파일이 있습니다. 문제는 최신 백업에 포함된 파일의 권한과 소유권이 엉망이라는 점이다. 그러나 이전 버전의 tar의 권한은 완벽했습니다.

old.tar의 권한을 읽고 변경 사항을 최신.tar에 복사하는 방법을 원합니다.

-p 및 --same-owner 플래그를 사용하여 내 시스템으로 파일을 추출하려고 시도했지만 내 컴퓨터에는 system이라는 사용자 또는 그룹이 없지만 내 Android 휴대폰에는 있기 때문에 소유권이 root대신 변경되었습니다. system나는 파일을 추출하고 stat 및 grep을 사용하여 권한과 소유권을 읽고 최신.tar에서 파일의 권한과 소유권을 설정하는 스크립트를 작성해야겠다고 생각했습니다. 그러나 그것은 사실이 아닌 것 같습니다. 누구든지 이 문제에 대해 도움을 줄 수 있습니까?

답변1

Tar가 그렇게 할 수 있는지 잘 모르겠습니다. 그러나 두 백업의 압축을 서로 다른 디렉터리에 풀고 다음과 같은 것을 사용할 수 있어야 합니다.

cd /mnt/oldbackup ; 
find ./ -exec getfacl {} | setfacl /mnt/newbackup/{} 

맨페이지에 따르면 의 출력을 getfacl표준 입력으로 사용할 수 있습니다.setfacl

답변2

새로운 메타데이터를 tar 아카이브에 넣을 수 있는 방법은 없지만 tar 아카이브에서 파일 시스템으로 메타데이터를 추출하는 방법은 있습니다. 그냥 전화하세요:

star -xp -meta < archive.tar

이는 새 파일을 생성하거나 파일 내용을 덮어쓰지 않고 단순히 아카이브의 메타데이터를 로컬 파일 시스템의 파일로 복원합니다. "아카이브의 파일이 파일 시스템의 파일보다 최신이 아닌 경우에도" -U(별표 매뉴얼 페이지 참조)가 필요할 가능성이 높습니다.

답변3

기본 답변은 더 이상 작동하지 않으며(find -exec는 구문을 변경했으며 setfacl에는 복원= 인수가 필요함) find를 사용할 필요가 더 이상 없습니다.

당신이 해야 할 일:

cd /mnt/oldbackup 
getfacl -R . >/tmp/permissions
cd /mnt/newbackup
setfacl --restore=/tmp/permissions

관련 정보