私はずっと前にバックアップスクリプトを書きました。それは tarマニュアルのこの部分 を使用します:
複数の `--exclude 'オプションを指定できます。
--exclude-from=file
-X file
ファイルにリストされているパターンに一致するファイルをtarが無視するようにします。
私のtarコマンドは次のとおりです。
includesFile=include.txt
excludesFile=exclude.txt
tar zcpf - . -T ${includesFile} -X ${excludesFile} | openssl des3 -salt | dd of=out.bak
これはinclude.txt
です:
/etc/
/var/
/usr/
/data/
/opt/
/root
これはexclude.txt
です
/data/webapp/webapp-data/*
/var/cache/*
/var/lib/dpkg/*
/usr/bin/*
/usr/share/locale/*
以前は非常にうまく機能していました。最近、アーカイブのサイズが大幅に増加していることに気付きました。冗長なtar
に切り替えると、巨大なwebapp-data
ディレクトリが含まれていることがわかりました。何らかの理由で、それはもう除外されていません。
私が最後にしたことは、 Debian Jessie から Debian Stretch にアップグレードすることです。バージョンの変更は軽微ですが、それが理由なのかしら。
/data/webapp/webapp-data/*
を/data/webapp/webapp-data/**
に変更しようとしましたが、役に立ちませんでした。
除外リストが機能しなくなったのはなぜですか?
私は(ついに)問題を理解し、それを解決することができました。これは、excludes
がワイルドカードとして与えられることを含め、複数のものの組み合わせです(質問をする前に、私はそれをしませんでした...今では機能しません)。これは機能するコマンドです:
includesFile=include.txt
excludesFile=exclude.txt
tar -zcpf - --absolute-names -X ${excludesFile} -T ${includesFile} | openssl des3 -salt | dd of=out.bak
そして間違いなく、除外はこの形式で与えられます:
/var/cache/*
/var/lib/dpkg/*
/usr/bin/*
/usr/share/locale/*
/proc/*
/sys/*
そして含まれています:
/etc/
/var/
/usr/
Debian JessieからStretchにアップグレードした後、tarの除外に関して同じ問題が発生し、コマンドラインパラメーターの順序を変更するだけで修正しました
から:tar cvzpf backup.tar.gz /DirToBackup1 /DirToBackup2 --exclude-from=/path/to/backup_exclude.txt
に:tar cvzpf backup.tar.gz --exclude-from=/path/to/backup_exclude.txt /DirToBackup1 /DirToBackup2
私のbackup_exclude.txtは次のようになります/var/log/* /cache/* /.cache/*
( https://www.gnu.org/software/tar/manual/html_section/tar_49.html のページの終わりを参照)