Restic: 適用されていないパターンを除外する

作成日 2017年06月20日  ·  4コメント  ·  ソース: restic/restic

restic version出力

レスティック0.6.1(v0.6.1-126-gb0fb95df)
darwin / amd64でgo1.8.3を使用してコンパイル

どのようにして正確にresticを始めましたか? (完全なコマンドラインを含む)

restic backup --exclude-file ~/exclude.txt ~

どのバックエンド/サーバー/サービスを使用しましたか?

LANへのsftp

予想される行動

exclude.txtのパターンに一致するファイルをスキップします

実際の動作

パターンがあいまいになりすぎるまでパターンを大幅に緩めない限り、ファイルは含まれていました。

動作を再現する手順

次のような除外ファイルを使用します。

.[^.]*
/matt/Applications
/matt/Dropbox
/matt/Downloads
/matt/VirtualBox VMs
*.vmdk

私の目標は、ドットファイルと$ HOMEディレクトリ内のいくつかの特定のフォルダ( mattという名前)をスキップすることです(ただし、たとえば「アプリケーション」という名前のすべてのフォルダではありません)。 ああ、そしてすべての.vmdkファイル(それらは巨大になる可能性があります!)

私がこれにパターンを緩和したとき:

.[^.]*
Applications
Dropbox
Downloads
VirtualBox VMs
*.vmdk

それは機能しました(つまり、フォルダーをスキップしました)が、たとえばDownloadsという名前のすべてのフォルダーをスキップしたくないので、これはあいまいすぎます。

何がこれを引き起こしたのか分かりますか?

おそらく私はまだ除外パターンを正しく理解していません。 :smile:#1005を読みましたが、-excludeに絶対パスが必要なのか、-includeのようにrepo-absoluteパスが必要なのか混乱していると思います。

documentation bug

最も参考になるコメント

ため息、はい、あなたは絶対に正しいです。 除外パターンは、バックアップするものに関して絶対的なものです。
restic backup /home/mattを実行すると、パターン/home/matt/*.go自宅のすべてのGoファイルに一致します。 アーカイバの動作方法により(#549、修正が必要な設計上の誤った決定を参照)、 /home/プレフィックスが削除され、スナップショットの最上位パスコンポーネントは/mattます。 したがって、復元するには、同じファイルに一致するように/matt/*.goインクルードパターンを使用する必要があります。 私はそれが悪いことを知っています、私はそれを最終的に修正します:)

したがって、これはユースケースの修正された除外ファイルリストです。

.[^.]*
/home/matt/Applications
/home/matt/Dropbox
/home/matt/Downloads
/home/matt/VirtualBox VMs
*.vmdk

全てのコメント4件

更新:さて、 /matt/$HOME/置き換えることはうまくいったようですが、-excludeと--includeの絶対パスの不一致は少し奇妙で驚くべきものです。

通常、 $HOME/blabla/home/matt/blablaですか、それともシステムで何かを変更しましたか?

ため息、はい、あなたは絶対に正しいです。 除外パターンは、バックアップするものに関して絶対的なものです。
restic backup /home/mattを実行すると、パターン/home/matt/*.go自宅のすべてのGoファイルに一致します。 アーカイバの動作方法により(#549、修正が必要な設計上の誤った決定を参照)、 /home/プレフィックスが削除され、スナップショットの最上位パスコンポーネントは/mattます。 したがって、復元するには、同じファイルに一致するように/matt/*.goインクルードパターンを使用する必要があります。 私はそれが悪いことを知っています、私はそれを最終的に修正します:)

したがって、これはユースケースの修正された除外ファイルリストです。

.[^.]*
/home/matt/Applications
/home/matt/Dropbox
/home/matt/Downloads
/home/matt/VirtualBox VMs
*.vmdk

@ibib私のMacでは、ホームディレクトリは/Users/mattですが、 --includeはリポジトリの絶対パスを使用しているため( restic lsように)、適切な絶対パスは次のようになります。 /matt/...

@ fd0ああ! 説明してくれてありがとう、それはもっと理にかなっています。 したがって、 restic backupと一緒に使用した場合の--excludeはファイルシステムに対して絶対的であり、 --includerestic restoreとともに使用した場合)はリポジトリに対して絶対的です。 言い換えれば、パターンはファイルの出所に絶対的です。

説明ありがとうございます。 これで、549が修正したい問題である理由がよくわかりました。 :スマイル:

このページは役に立ちましたか?
0 / 5 - 0 評価