디렉터리 및 파일 권한을 유지하면서 전체 경로가 지정된 모든 파일 및 디렉터리 목록을 tar.gz에서 어떻게 확인할 수 있습니까?

디렉터리 및 파일 권한을 유지하면서 전체 경로가 지정된 모든 파일 및 디렉터리 목록을 tar.gz에서 어떻게 확인할 수 있습니까?

어떻게 만들 수 있나요 tar.gz?

  1. 전체 경로 파일 목록(예 /root/test/abcd/123.txt: )
  2. 디렉터리 및 파일 포함
  3. 추출하는 동안 파일 및 디렉터리의 소유권과 권한을 유지하시겠습니까?

내 파일 목록( dbfiles.log)은 다음과 같습니다.

[oracle@test ~]$ cat dbfiles.log
/u01/app/oracle/product/12.2.0/dbhome_1/dbs/initDEVR.ora
/u01/app/oracle/product/12.2.0/dbhome_1/dbs/orapwDEVR
/u01/app/oracle/product/12.2.0/dbhome_1/dbs/spfileDEVR.ora
/u01/app/oracle/oradata/DEVR/control01.ctl
/u01/app/oracle/oradata/DEVR/control02.ctl
/u01/app/oracle/oradata/DEVR/redo01.log
/u01/app/oracle/oradata/DEVR/redo02.log
/u01/app/oracle/oradata/DEVR/redo03.log
/u01/app/oracle/oradata/DEVR/sysaux01.dbf
/u01/app/oracle/oradata/DEVR/system01.dbf
/u01/app/oracle/oradata/DEVR/temp01.dbf
/u01/app/oracle/oradata/DEVR/undotbs01.dbf
/u01/app/oracle/oradata/DEVR/users01.dbf
[oracle@test ~]$

오늘 제가 한 일은 다음과 같습니다.

tar -czvf TARFILENAME.tar.gz -T dbfiles

그러나 압축을 푼 후에는 권한을 수동으로 구성해야 합니다. 그건 그렇고, 필요에 따라 원본 파일을 sudo가져오는 대신 디렉터리가 소유권을 갖도록 파일을 추출하는 데 이것을 사용해야 합니다 .root:rootoracle:oinstall

--no-recursiontar의 플래그가 이 문제를 해결할 수 있다고 제안하는 몇 가지 참고 자료를 찾았습니다 .

tar -zcf file.tgz --no-recursion abc --recursion abc/def

나는 이것이 올바른 접근 방식이라고 생각하지만 내 파일 목록에 이를 사용하는 방법을 잘 모르겠습니다. find목록을 반복하고 출력을 타르볼로 보내는 것이 아닐까요 ? 솔직히 잘 모르겠습니다.

답변1

압축을 위해 디렉토리를 사용할 수 있습니다 tar -cvpf filename.tar.gz.

추출할 때 --same-owner매개변수를 사용하십시오. 예를 들어tar -xvzf --same-owner filename.tar.gz

답변2

마침내 해결책을 찾았습니다. 다른 사람이 필요할 경우를 대비해 다음과 같이 하세요.

awk -F/ '{ d=$1; for (i=2; i <= NF; i++) { print d; d=d "/" $i }; print d }' dbfiles | awk '{ if (index(old,$0 "/") != 1) { old=$0; print } }' | tar czvf $LOCALFS/$TARFILENAME.tar.gz --no-recursion -T -

내 원래 질문에 답변해주신 분에게 감사드립니다.

관련 정보