Restic: ツリーe5457a72:ファイル "XX":メタデータサイズ(8770356)とblobサイズの合計(8770808)が一致しません

作成日 2018年05月22日  ·  5コメント  ·  ソース: restic/restic

こんにちは、

restic 0.9に更新したところ、resticが既存のリポジトリのエラーを報告するようになりました(0.8.3で問題なく、アップグレード後に変更されませんでした)。

error for tree e5457a72: tree e5457a72: file "mail.err": metadata size (1085858) and sum of blob sizes (1085966) do not match tree e5457a72: file "mail.info": metadata size (8770356) and sum of blob sizes (8770808) do not match tree e5457a72: file "mail.log": metadata size (8770356) and sum of blob sizes (8770808) do not match tree e5457a72: file "mail.warn": metadata size (1091226) and sum of blob sizes (1091334) do not match
バックアップの実行中にファイルが変更された可能性があります。

restic version出力

restic 0.9.0 compiled with go1.10.2 on linux/amd64

どのようにしてresticを正確に実行しましたか?

restic check

リポジトリを保存するためにどのバックエンド/サーバー/サービスを使用しましたか?

ローカルディレクトリとRESTサーバー

予想される行動

Resticは、バックアップの整合性を確保するために何もできないことを理解しています(たとえば、いくつかの依存ファイルのコンテンツが一致しているなど)。

しかし、そのような場合、resticはそれ自身のリポジトリが一貫していることを確認する必要があると確信しています(リポジトリのメタデータはリポジトリのデータと一致する必要があります)。 statが呼び出された後、ファイル全体が読み取られる前にファイルに何かが追加された場合、おそらくresticは予想されるファイルサイズまでのみ読み取るか、実際に読み取られたバイト数でメタデータを更新する必要があります。

PS。 おそらく、この問題は0.9で修正されており、新しいスナップショットでは発生しません。
しかし、残念ながらrestic rebuild-indexはそれを修正しません。

0.9.0 bug

最も参考になるコメント

私は同意します、これは警告であるか、まったく表示されないはずです。 ユーザーができること(またはする必要があること)は何もありません。

これは古いアーカイバコードのバグであり、resticがファイルを読み取っているときにファイルが追加されたときに、リポジトリに間違ったサイズが書き込まれていました。 新しいアーカイバはそれを行わず、他のすべての関数は問題なく機能します(正しいサイズ、つまりファイルチャンクの合計を使用するだけです)。

全てのコメント5件

私はあなたとまったく同じ問題を@dionorguaで開こうとしてい

私のリポジトリにも同じエラーがあり(以下を参照)、これらはエラーであってはならず、resticはそれを適切に処理する必要があるという感覚を共有してください。 バックアッププロセス中に発生したことを警告する以外に、バックアップソフトウェアがその下で変更されたファイルに対して実行できることは何もありません。 しかし、後でcheckが実行されたときに、これらはエラーではないはずです。

v0.9.0チェックの結果は、v0.8.3がエラーを報告しないリポジトリで実行されます。

check snapshots, trees and blobs
error for tree c1c7286d:
  tree c1c7286d: file "panacea.dat": metadata size (5975885) and sum of blob sizes (5975910) do not match
error for tree 5908dec5:
  tree 5908dec5: file "panacea.dat": metadata size (5425341) and sum of blob sizes (5425366) do not match
Fatal: repository contains errors

私は同意します、これは警告であるか、まったく表示されないはずです。 ユーザーができること(またはする必要があること)は何もありません。

これは古いアーカイバコードのバグであり、resticがファイルを読み取っているときにファイルが追加されたときに、リポジトリに間違ったサイズが書き込まれていました。 新しいアーカイバはそれを行わず、他のすべての関数は問題なく機能します(正しいサイズ、つまりファイルチャンクの合計を使用するだけです)。

この問題にどのように対処しますか? これにより、バックアップリポジトリのいくつかで毎週の自動チェックが失敗します。

これが私の「resticcheck」の出力です-私はresticdockerイメージを介してそれを行っています。

...
Digest: sha256:9c851e0ba8a9c20ef853ee507af14c4d87c33661c25136262e97506a1cdc7a57
Status: Image is up to date for restic/restic:latest
ID        Date                 Host              Tags        Directory
----------------------------------------------------------------------
8eb0175e  2018-02-28 21:01:38  internal-cluster              /fisheye
a7848682  2018-03-31 09:28:09  internal-cluster              /fisheye
8ad27273  2018-04-30 09:28:09  internal-cluster              /fisheye
97d2e914  2018-05-31 09:28:12  internal-cluster              /fisheye
96ba1cc7  2018-06-30 09:28:13  internal-cluster              /fisheye
23ef9a4b  2018-07-08 09:28:11  internal-cluster              /fisheye
76f8e70a  2018-07-09 09:28:12  internal-cluster              /fisheye
74d46da4  2018-07-10 09:28:14  internal-cluster              /fisheye
a893de2c  2018-07-11 09:28:12  internal-cluster              /fisheye
7dbeb6c0  2018-07-12 09:28:13  internal-cluster              /fisheye
8df2f318  2018-07-13 09:28:11  internal-cluster              /fisheye
e7321bf1  2018-07-14 09:28:13  internal-cluster              /fisheye
----------------------------------------------------------------------
12 snapshots
+ restic check
+ sudo -E docker run --rm -e AWS_ACCESS_KEY_ID=**** -e AWS_SECRET_ACCESS_KEY=**** -e RESTIC_PASSWORD=**** -v /mnt/efs/fisheye:/fisheye:ro -h internal-cluster --user root restic/restic -r s3:s3.amazonaws.com/redacted/restic/fisheye check
using temporary cache in /tmp/restic-check-cache-069761908
create exclusive lock for repository
load indexes
check all packs
check snapshots, trees and blobs
error for tree d93db471:
  tree d93db471: file "atlassian-fisheye-2018-07-13.log": metadata size (52139444) and sum of blob sizes (52165018) do not match
error for tree 8d1b1f5f:
  tree 8d1b1f5f: file "atlassian-fisheye-2018-04-30.log": metadata size (53418588) and sum of blob sizes (53426968) do not match
Fatal: repository contains errors

それは良い質問です! 1つを除くすべてのリポジトリにエラーが発生しています...チェックステージをすべて無効にすることを検討していますが、これもまた、将来起こりうるリグレッションを検出するための良い方法です。 今後の最善の方法は何かわかりません...

@ fd0 、これは非常に深刻なバグですが、リポジトリを再びサイレントにするための回避策はありますか?

申し訳ありませんが、#1887のチェックを無効にしました。 必要に応じて、コミットを選択できます。

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