ディレクトリとファイルの権限を維持しながら、フルパスのすべてのファイルとディレクトリのリストを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 -

私の元の質問に答えてくれた人に感謝します。

関連情報