
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などとすれば、「"(ダブルクオーテーション)」なしで正規表現が通りました!
(」・ω・)」うー!(/・ω・)/にゃー!