web-dev-qa-db-ja.com

Debianストレッチにアップグレードした後、tar除外リストが機能しなくなりました

私はずっと前にバックアップスクリプトを書きました。それは 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 のページの終わりを参照)

5
Erik