Linuxがつくづく手放せない @snicker_jp です。
アーカイブに含めない、ファイル、ディレクトリのパターンを指定する「exclude」オプションですが、なかなか詳しく載っているサイトがなかったので、書き残します。
もくじ
前提条件
- Linux
- GNU tar
ssh経由でtarを取ってバックアップ!なんてよくやったりしますよね。
例
こんな感じ。↓ssh root@[サーバー] "tar --one-file-system --sparse -C / -zcf - . " > backup.tar.gz
除外を入れると、こんな感じ。↓
ssh root@[サーバー] "tar --one-file-system --sparse -C / --exclude 'gomi/kore' -zcf - . " > backup.tar.gz
複数指定したくなります。
ダメ
ssh root@[サーバー] "tar --one-file-system --sparse -C / --exclude 'gomi/kore' 'gomi/koremo' -zcf - . " > backup.tar.gz↑これは使えません。
OK
ssh root@[サーバー] "tar --one-file-system --sparse -C / --exclude 'gomi/kore' --exclude 'gomi/koremo' -zcf - . " > backup.tar.gzこうしないと、いけません。「--exclude」を除外したい分だけ書きます。
応用編(シェルスクリプト)
#対象ホストIPとか IP_ADDRESS="[サーバー] " # 除外したいもの(複数) EXCLUDES=" \ './home/hoge/Trash/*' \ './home/huga/bigdata_tmp.*' \ './var/tmp' \ " # ----------------------------------------------------------------------------- # function # ----------------------------------------------------------------------------- # メイン # function main() { local excludes="" local exclude="" for exclude in ${EXCLUDES} do excludes="${excludes} --exclude ${exclude}" done ssh root@${IP_ADDRESS} "tar --one-file-system --sparse -C / ${excludes} -zcf - . " > backup.tar.gz }
これで、いくつも書かなくて済みます!w
オプション(-X, --exclude-from=file)
tar zcf hogehoge.tar.gz hoge --exclude-from=【FILE】
のように書いて、【FILE】に書かれたファイル および ディレクトリ一覧を除外します。例
./workspace *-log/build-log exlude-fileなどとすれば、「"(ダブルクオーテーション)」なしで正規表現が通りました!
(」・ω・)」うー!(/・ω・)/にゃー!