どうやって作ることができますか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 -
私の元の質問に答えてくれた人に感謝します。