
Linuxがつくづく手放せない @snicker_jp です。
アーカイブに含めない、ファイル、ディレクトリのパターンを指定する「exclude」オプションですが、なかなか詳しく載っているサイトがなかったので、書き残します。
もくじ
前提条件
- Linux
- GNU tar
ssh経由でtarを取ってバックアップ!なんてよくやったりしますよね。
例
こんな感じ。↓1 | ssh root@[サーバー] "tar --one-file-system --sparse -C / -zcf - . " > backup. tar .gz |
除外を入れると、こんな感じ。↓
1 | 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
1 | ssh root@[サーバー] "tar --one-file-system --sparse -C / --exclude 'gomi/kore' --exclude 'gomi/koremo' -zcf - . " > backup. tar .gz |
応用編(シェルスクリプト)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | #対象ホスト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】に書かれたファイル および ディレクトリ一覧を除外します。例
1 2 3 | . /workspace *-log /build-log exlude- file |
(」・ω・)」うー!(/・ω・)/にゃー!