目的
tarコマンドでアーカイブ対象のファイルのリストファイルをあらかじめ用意しておき、tarボールとしたい。
OSやOracleの設定ファイルやログファイルをリストファイルにしておいて、tarボールにできたら構成変更時やトラブル時に主要なログを回収するときなんかに便利です。
コマンド
「-T」あるいは「--files-from=FILE名」で可能です。
tar cvf <アーカイブ名> -T <リストファイル名>
以下manコマンドより抜粋。
-T, --files-from=FILE
get names to extract or create from FILE
例1 ログファイルをリストしたファイル
$ cat oralog.lst
/u01/app/oracle/diag/rdbms/orcl/ORCL/trace/alert_ORCL.log
/u01/app/oracle/diag/tnslsnr/dbaas01/listener/trace/listener.log
$ tar cvf oralog.tar -T oralog.lst
tar: Removing leading `/' from member names
/u01/app/oracle/diag/rdbms/orcl/ORCL/trace/alert_ORCL.log
/u01/app/oracle/diag/tnslsnr/dbaas01/listener/trace/listener.log
$ tar tvf oralog.tar
-rw-r----- oracle/oinstall 2910 2016-10-02 00:06 u01/app/oracle/diag/rdbms/orcl/ORCL/trace/alert_ORCL.log
-rw-r----- oracle/oinstall 48471 2016-10-02 00:59 u01/app/oracle/diag/tnslsnr/dbaas01/listener/trace/listener.log
例2 コメント「#」を含むリストファイル
「--exclude=#*」オプションを追加します。
$ cat oscfg.lst
# Single files
/home/oracle/.bashrc
/etc/crontab
/etc/sysctl.conf
/etc/passwd
/etc/group
/etc/oraInst.loc
/etc/oratab
/etc/fstab
$ tar cvf oscfg.tar -T oscfg.lst --exclude=#*
tar: Removing leading `/' from member names
/home/oracle/.bashrc
/etc/crontab
/etc/sysctl.conf
/etc/passwd
/etc/group
/etc/oraInst.loc
/etc/oratab
/etc/fstab
$ tar tvf oscfg.tar
-rw-r--r-- oracle/oinstall 699 2016-09-23 21:21 home/oracle/.bashrc
-rw-r--r-- root/root 587 2016-09-23 21:21 etc/crontab
-rw-r--r-- root/root 3692 2016-07-08 14:59 etc/sysctl.conf
-rw-r--r-- root/root 1841 2016-07-08 14:45 etc/passwd
-rw-r--r-- root/root 923 2016-07-08 14:45 etc/group
-rw-r--r-- root/root 56 2016-09-23 21:08 etc/oraInst.loc
-rw-rw-r-- oracle/dba 788 2016-09-23 21:11 etc/oratab
-rw-r--r-- root/root 1108 2016-09-23 21:08 etc/fstab