어떻게 만들 수 있나요 tar.gz
?
- 전체 경로 파일 목록(예
/root/test/abcd/123.txt
: ) - 디렉터리 및 파일 포함
- 추출하는 동안 파일 및 디렉터리의 소유권과 권한을 유지하시겠습니까?
내 파일 목록( 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:root
oracle:oinstall
--no-recursion
tar의 플래그가 이 문제를 해결할 수 있다고 제안하는 몇 가지 참고 자료를 찾았습니다 .
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 -
내 원래 질문에 답변해주신 분에게 감사드립니다.