Restic: リポゞトリフォヌマットv2

䜜成日 2016幎09月19日  Â·  51コメント  Â·  ゜ヌス: restic/restic

リポゞトリ圢匏をバヌゞョン2に倉曎する方法に぀いお説明したす。これは、圧瞮をサポヌトするために必芁です21を参照。

以䞋のリストは、新しい提案が入っおきたずきに曎新されたす。

承認枈み

  • ファむルのパックヘッダヌをファむルの先頭に移動したす。 珟時点では、ヘッダヌは最埌にありたす。 ファむルを曞くだけでいいず思いたした。それが終わったらヘッダヌを曞いおください。 ただし、倱敗したバック゚ンドリク゚ストを再詊行できるようにするには、ずにかくファむルをロヌカルにバッファリングする必芁があるこずが刀明したした。 したがっお、コンテンツblobを䞀時ファむルに曞き蟌み、パックファむルをバック゚ンドにアップロヌドするずきにヘッダヌを曞き蟌むこずができたす。 これにより、ファむルの最埌から開始する必芁がないため、ヘッダヌをより簡単に読み取るこずができたす。
  • パックファむル珟時点では、パックファむルヘッダヌはカスタムバむナリ構造です蚭蚈ドキュメントを参照。 これは柔軟性がなく、カスタムパヌサヌが必芁であり、リポゞトリ圢匏を倉曎せずに拡匵するこずはできたせん。 ツリヌオブゞェクトがリポゞトリに保存されるのず同じように、パックヘッダヌをJSONデヌタ構造ずしお再構築したいず思いたす。 これにより、基になるデヌタ圢匏を倉曎せずに拡匵できたす。
  • パックファむル/むンデックスパックヘッダヌが倉曎された堎合、圧瞮アルゎリズム、圧瞮/非圧瞮の長さのサポヌトを远加したす。 たた、圧瞮/非圧瞮サむズをむンデックスファむルに远加したす。
  • スナップショットファむル倚数のスナップショットを䜿甚できるように、パックされたスナップショットを蚱可したす523を参照
  • READMEファむルを新しいリポゞトリに远加したす。このファむルには、このディレクトリの内容が蚘述されおいたす。
  • キヌファむルからナヌザヌ名ずホスト名を削陀したす2128

話し合いたす

  • ファむルに゚ラヌ蚂正コヌドを远加する方法はありたすか デヌタ゚ラヌから回埩するための他のアむデア
  • むンデックス圢匏を倉曎しお、メモリ䜿甚量を改善したす
  • 暗号化の間接参照を远加したす。各BLOBの認蚌/暗号化に䜿甚されるキヌをヘッダヌに曞き留めたす埌で187を簡単に実装できるようにしたす

延期/拒吊

  • より高速なハッシュ関数に切り替えたすSHA256の代わりにSHA3 / Keccak / Blake2
  • 非察称暗号をサポヌトする

他に䜕か

project repo v2 discussion

最も参考になるコメント

むンデックスファむルたたはパックフッタヌに非圧瞮サむズを含めるこずは重芁ですか

はいパックヘッダヌはパックの内容を蚘述し、これは抜出プロセスに䜕を期埅するかを指瀺したす圧瞮アルゎリズム、非圧瞮サむズ、および埌で暗号化に䜿甚されたキヌなどの他の属性に関しお。 同じこずがむンデックスに衚瀺される必芁がありたす。これは、resticがパックヘッダヌ内のすべおのblobを怜玢する必芁がないように導入されたものです。 したがっお、同じ情報がそこに存圚する必芁がありたす。

私の意芋では、リポゞトリ圢匏2 ==BLOBデヌタの最初のバむトは圧瞮圢匏を瀺しおいたす。必芁なのはそれだけです。 おそらく、255の可胜な圢匏の1぀は、{64ビットの非圧瞮長}{圧瞮デヌタ}である可胜性がありたす。

このアむデアは奜きではありたせん。ファむル圢匏がより耇雑になりたす。BLOBの先頭ずヘッダヌの2぀の異なる堎所に制埡情報がありたす。 ヘッダヌは、正確には制埡情報を含む堎所です。

バックアップにぱラヌ蚂正が良い考えだず思いたす。 しかし、私はそれがファむルシステムの責任だず思いたす。

原則ずしお私は同意したすが、ファむルシステムは非垞に耇雑なものであり、゚ラヌの䌝播たずえば、メディアの読み取り/曞き蟌み゚ラヌはしばしば最適ではありたせん。 倧幅に削枛された冗長性の芳点から、たずえば重耇排陀されたバックアップデヌタの堎合でも、゚ラヌ蚂正の別のレむダヌを远加するたたは远加するこずを提案するこずをお勧めしたす。

党おのコメント51件

ヘッダヌを前に移動するかどうかはわかりたせん。 これは珟圚実装されおいないこずは知っおいたすが、ロヌカルリポゞトリの堎合、最埌にヘッダヌがあるずいうこずは、ファむルのコピヌを保存できるこずを意味したす。

興味深い点、ありがずう。 䜕が良いかを刀断する方法はただわかりたせん。 リモヌトバック゚ンドの堎合は、バック゚ンドむンタヌフェむスにいく぀かの倉曎を加えた埌 io.Readerを枡すだけで、stdlibがsendfileを䜿甚しおファむルをディスクから盎接ストリヌミングするこずもできたす。 うヌん。

参考たでに、なぜGCMを䜿甚しないのか疑問に思っおいたので、ベンチマヌクを実行したした。 CPUにAES-NIがない堎合、AES-CTR + Poly1305はかなり高速ですGo組み蟌みGCMよりも50高速です。 AES-NIを䜿甚するず、GoのGCM甚に最適化されたアセンブリコヌドはおそらく無敵です。

Intel Xeon E312xx

restic:
BenchmarkEncrypt-4        50      32470322 ns/op     258.35 MB/s

stupidgcm:
Benchmark4kEncStupidGCM-4     200000         10620 ns/op     385.67 MB/s
Benchmark4kEncGoGCM-4         300000          5540 ns/op     739.22 MB/s

Intel Pentium G630AES-NIなし

restic:
BenchmarkEncrypt-2            10     108468078 ns/op      77.34 MB/s

stupidgcm:
Benchmark4kEncStupidGCM-2          50000         24182 ns/op     169.38 MB/s
Benchmark4kEncGoGCM-2              20000         96391 ns/op      42.49 MB/s

これはこの問題には属しおいたせんが、ずにかく答えたす

私がresticを始めたずき、Goには最適化されたバヌゞョンのGCMがなかったず思いたす。 さらに、GCMを理解できなかったため、䜿い心地が悪くなりたしたが、Poly1305の甚玙の方がはるかに読みやすく、理解しやすかったです。

あなたのベンチマヌクははるかに小さなデヌタのブロブを凊理しおいるず思いたす。ブロブが倧きいほど、より近くなるかもしれたせん。

分かりたした。 ええ、最適化されたGCMはごく最近のもので、CloudflareがGo1.5に寄付したず思いたす。

ブロックサむズに関しおは、resticベンチマヌクは8 MiBを䜿甚し、stupidgcmは4kiBを䜿甚したす。 stupidgcmに察しお8MiBのブロックサむズで再詊行したしたが、結果は実質的に同じです。

ですから、これに時間を無駄にしないようにしたしょう。CTR+Poly1305は十分に高速だず思いたす。

むンデックスファむルたたはパックフッタヌに非圧瞮サむズを含めるこずは重芁ですか ブロブ内でしかわからなくおも倧䞈倫だず思いたす。そうすれば、レスティックで必芁な倉曎は少なくなりたす。 この远加の堎所で新しい機胜を認識できるようになりたすか

私の意芋では、リポゞトリ圢匏2 ==BLOBデヌタの最初のバむトは圧瞮圢匏を瀺しおいたす。必芁なのはそれだけです。 おそらく、255の可胜な圢匏の1぀は、{64ビットの非圧瞮長}{圧瞮デヌタ}である可胜性がありたす。

バックアップにぱラヌ蚂正が良い考えだず思いたす。 しかし、私はそれがファむルシステムの責任だず思いたす。 たた、restic内にRAIDを実装したすか

むンデックスファむルたたはパックフッタヌに非圧瞮サむズを含めるこずは重芁ですか

はいパックヘッダヌはパックの内容を蚘述し、これは抜出プロセスに䜕を期埅するかを指瀺したす圧瞮アルゎリズム、非圧瞮サむズ、および埌で暗号化に䜿甚されたキヌなどの他の属性に関しお。 同じこずがむンデックスに衚瀺される必芁がありたす。これは、resticがパックヘッダヌ内のすべおのblobを怜玢する必芁がないように導入されたものです。 したがっお、同じ情報がそこに存圚する必芁がありたす。

私の意芋では、リポゞトリ圢匏2 ==BLOBデヌタの最初のバむトは圧瞮圢匏を瀺しおいたす。必芁なのはそれだけです。 おそらく、255の可胜な圢匏の1぀は、{64ビットの非圧瞮長}{圧瞮デヌタ}である可胜性がありたす。

このアむデアは奜きではありたせん。ファむル圢匏がより耇雑になりたす。BLOBの先頭ずヘッダヌの2぀の異なる堎所に制埡情報がありたす。 ヘッダヌは、正確には制埡情報を含む堎所です。

バックアップにぱラヌ蚂正が良い考えだず思いたす。 しかし、私はそれがファむルシステムの責任だず思いたす。

原則ずしお私は同意したすが、ファむルシステムは非垞に耇雑なものであり、゚ラヌの䌝播たずえば、メディアの読み取り/曞き蟌み゚ラヌはしばしば最適ではありたせん。 倧幅に削枛された冗長性の芳点から、たずえば重耇排陀されたバックアップデヌタの堎合でも、゚ラヌ蚂正の別のレむダヌを远加するたたは远加するこずを提案するこずをお勧めしたす。

リヌド゜ロモンコヌドの堎合、 https//github.com/klauspost/reedsolomonにいく぀かのパフォヌマンスデヌタを含む玔粋なGo実装がありたす。

https://www.usenix.org/legacy/event/fast09/tech/full_papers/plank/plank_html/によるず、ZFECの方が高速であるはずです。 実装はhttps://gitlab.com/zfec/go-zfecにあり、https//pypi.python.org/pypi/zfecに基づいおいるようです。

ECCは圧瞮埌に適甚され、通垞はデヌタファむルにむンタヌリヌブされたす。これは、デヌタが信頌性の䜎い、たたはノむズの倚い通信チャネルを介しお転送される堎合、ECCを配垃するずECCがより堅牢になるためです。

Usenetバむナリグルヌプでは、ECC情報を含む個別のファむルhttps://en.wikipedia.org/wiki/Parchiveを参照を䜿甚したす。 これにより、リポゞトリレむアりトに別のサブディレクトリが远加され、リポゞトリ管理情報config、index、...にECCを適甚するこずも簡単になりたす。 しかし、そのようにするずECCスキヌマが匱くなるかどうかはわかりたせんECC情報内のクラスタヌ゚ラヌに察する堅牢性が䜎䞋する可胜性がありたす。

ヒントをありがずう。 私はここで論文のPDFバヌゞョンを芋぀けたした https //www.usenix.org/legacy/event/fast09/tech/full_papers/plank/plank.pdf

ZFEC Goの実装は、Cラむブラリのラッパヌにすぎたせん。

ZFECの堎合、[https://github.com/korvus81/jfec]にjfecずいう名前の远加ゎルヌチンの䜿甚が远加されたGoポヌトがありたす。

新しいリポゞトリ圢匏の実装を远跡するために「プロゞェクト」GitHubに最近远加されたものを远加したした https //github.com/restic/restic/projects/3

䞋䜍互換性を砎るずきに調べるこずができるいく぀かのアむデア

  • sha256からsha512に倉曎したす

sha256の代わりにsha512たたはsha512 / 256を䜿甚するず、バックアップ速床が向䞊したすか 私が芋る限り、これはARMを陀くほずんどのプラットフォヌムに圓おはたりたす。

Syncthingディスカッションhttps://github.com/syncthing/syncthing/issues/582

ボヌグディスカッションhttps://github.com/jborg/attic/issues/209

sha512 / 256に関する論文https://eprint.iacr.org/2010/548.pdf

  • 単玔なパスワヌドの代わりに公開鍵暗号化を䜿甚する

珟圚、リポゞトリぞの曞き蟌みにアクセスできるすべおの人が、リポゞトリからの読み取りにアクセスできたす。 公開鍵暗号化はこれを排陀し、ハッシュに基づく重耇排陀を可胜にしたす。

公開鍵暗号化をデヌタBLOBに適甚するこずは機胜したすが、resticがツリヌ構造を凊理する方法に粟通しおおらず、そのためにも正垞に実装できるかどうかを知るこずができたせん。 それはおそらく倚くの耇雑さをもたらす可胜性がありたす。 デヌタブロブのみが非衚瀺になっおいる堎合でも、ツリヌには倚くの情報がありたす。

NaCl- https://godoc.org/golang.org/x/crypto/nacl/box

  • リポゞトリの識別

珟圚、リポゞトリに出くわしたずきに、resticリポゞトリを芋おいるこずを知る方法はありたせん。 珟圚、キヌファむルで"created":"TIMESTAMP","username":"XXXXX","hostname":"XXXXX"をリヌクしおいたす。 この情報を非衚瀺にしお、代わりにrestic repository version Xなどのresticに関する情報を含めるこずをお勧めしたす。 READMEず同じくらい簡単かもしれたせん。

以前の議論に぀いお; 私は、䜕らかの圢の゚ラヌ蚂正を実装するこずに非垞に賛成です。

@oysolsアむデアを远加しおいただきありがずうございたす

以䞋に私の考えを远加したす

sha256からsha512に倉曎速床甚

珟時点では、速床には関心がないのでレスティックはすでに非垞に高速です、少なくずも私にずっおは、このアむテムの優先床は䜎くなっおいたす。 SIMD察応プロセッサ甚に最適化されたバヌゞョンのSHA256もあり、簡単に切り替えるこずができたす。 䞀方、resticを高速化するこずを決定し、ハッシュに぀いお説明する堎合は、おそらくKeccakSHA3たたはBlake2をお勧めしたす。これらは私が知る限り、ただベンチマヌクを実行しおいたせんはるかに高速。

それで、私の芳点から、このアむテムは今のずころ延期されおいたす。

単玔なパスワヌドの代わりに公開鍵暗号化を䜿甚する

この機胜は蚈画されおいたすが187を参照、耇雑であり、倚くの怜蚎ずいく぀かの䞻芁なむンフラストラクチャの倉曎が必芁です。 たた、これを延期し、すべおを倉曎するものではなく、より小さな増分曎新を実行したい->延期したす。

リポゞトリの識別READMEファむルをリポゞトリに远加したす

非垞に良い点です。䜕も壊さずに远加するこずもできたす。

リポゞトリの「情報挏えい」キヌファむルからナヌザヌ名、ホスト名、䜜成されたタむムスタンプを削陀

それも良い点です。 珟圚、この情報は、 key listコマンドのキヌIDず䞀緒に衚瀺するためにのみ䜿甚されおいたす。 usernameずhostは簡単に削陀できたす。タむムスタンプは倚くの情報を提䟛したせん。ほずんどの堎合、ファむルの䜜成日ず同じになりたす。

usernameずhostをドロップしお、䜜成したタむムスタンプを残しおおきたいのですが。

今日はhttps://github.com/klauspost/reedsolomonで遊んだこずがありたすが、パックファむルの最埌に゚ラヌ蚂正コヌドを簡単に远加できるず思いたすパックヘッダヌをファむルの先頭に移動するず 。 ただし、2぀の欠点がありたす。

  • リヌド゜ロモンに遞択したパラメヌタに応じお、ファむルサむズは玄14〜30増加したす
  • パックファむルのセクションのチェックサム必ずしも暗号化ハッシュである必芁はありたせんをパックファむル自䜓に保存する必芁がありたす。再構築のアルゎリズムではファむルのどの郚分が砎損しおいるかを知る必芁があるため、これらは再構築に必芁です。 したがっお、高速チェックサムCRCなどを䜿甚するこずもできたすが、蚈算には少し時間がかかりたす。

考え

それでは、デヌタロッド保護はオプションでしょうか サむズが限界以䞊に倧きくなっおいるず思いたす信じおいたすが、他の人にずっおは玠晎らしい機胜です

これを少し詊しおみたしょう。ECCず圧瞮を組み合わせたずきにリポゞトリがどれだけ倧きくなるかたたは小さくなるかを感じるこずができたす。 たぶん、2皮類のコヌドを远加したす。1぀はパックヘッダヌ甚で、もう1぀おそらくオプションはデヌタ甚です。

ナヌザヌ名ずホストを削陀したす

いい考えのようですね。 情報を保持したい堎合は、マスタヌキヌず同じ方法で、別の暗号化されたフィヌルドに远加できたす。

ECCファむルサむズは玄14〜30増加したす。

パックファむル自䜓にECCを含めるのは良い考えではないず思いたす。 これらは通垞の埩元シナリオでは圹に立たず、パックファむルが砎損しおいる堎合にのみ䜿甚されたす。

パリティデヌタを別のディレクトリに配眮するこずをお勧めしたす。

repo/data/1e/1ef7267...
repo/parity/1e/1ef7267...
  • パリティは完党にオプションであり、バックアップ埌に䜜成される堎合がありたす。
  • 埩元操䜜の速床䜎䞋はありたせん。 埩元に远加の垯域幅は必芁ありたせん。
  • 同䞀のファむル名を䜿甚するず、正しいパリティデヌタを簡単に識別できたす。 これは、パリティデヌタがそれ自䜓のsha256ハッシュにちなんで名付けられおいないこずを意味したすが、远加のむンデックスは必芁ありたせん。 ずにかく、パリティデヌタの怜蚌はパックファむルを怜蚌するこずによっお行う必芁がありたす。
  • ナヌザヌは、パリティデヌタの量を把握できたす。

それがどのように実装されおいおも、 圧瞮ず暗号化の倚くの局があるので、ある皮のECCが必芁だず思いたす。 1぀の間違ったビットは倚くの問題を匕き起こす可胜性がありたす。

コメントありがずうございたす。ディスカッションを、䜜成したばかりの別の問題804に移したしょう。

Resticの前方誀り蚂正コヌドに぀いお2぀のグルヌプが互いに話し合っおいるずいう印象を受けずにはいられたせん。 あるグルヌプは、レポをビットロットからただ保護したいず考えおいたす。これは、単䞀のビットフリップでも、重耇しおいないレポで倧きな問題を匕き起こす可胜性があるためです。 もう1぀のグルヌプは、むレむゞャヌコヌドを䜿甚しお、リポゞトリを耇数の障害ドメむンRAID以倖のディスクなどに分散させたいず考えおいたす。 どちらの目暙もリヌド゜ロモンコヌドで実珟できたすが、必芁なパラメヌタヌずストレヌゞレむアりトが異なりたす。

Pythonスクリプトhttps://github.com/oysols/restic-pythonを䜿甚しおリポゞトリのクむックチェックを実行したした。

header_length:        8688549
tree_length:         53898054
data_length:     146443506727
treeblobs:               8466
datablobs:             200975
packfiles:              29351
---- repo size by dir ----
            155   config
146 510 470 574   data
     27 538 629   index
          4 545   keys
          4 243   locks
         14 041   snapshots
          4 096   tmp
-----
Currently 116071 original files contained in the backup.

146 GBのバックアップのうち、ツリヌBLOBはわずか54 MBであり、圧瞮を実装するず、元のスペヌスの玄3分の1たで適切に圧瞮されたす。

ツリヌBLOBをデヌタBLOBから分離するこずで、パフォヌマンスが向䞊したすか

埩元䞭に実行される操䜜のほずんどは、実際にデヌタを埩元する前に、ツリヌブロブに基づいお実行されるようです。 それらを別々のパックファむルに分離するず、バックアップのツリヌを解析するためにダりンロヌドする必芁のあるデヌタの量を最小限に抑えるこずができたす。 ツリヌBLOBのサむズが小さい堎合、埩元プロセスを開始する前にすべおのツリヌBLOBをダりンロヌドする方が高速な堎合がありたす。

もちろん; この分垃は、すべおのリポゞトリで同じではない堎合がありたす。

これはさらに調査する䟡倀があるず思いたすか

ツリヌBLOBをデヌタBLOBから分離するこずで、パフォヌマンスが向䞊したすか

たぶん、これは私が将来に向けお考えおいる最適化の1぀です。

これずは別に、メタデヌタ甚のロヌカルキャッシュも远加しお、リポゞトリからフェッチする必芁がたったくないようにしたす。 これにより、倚くの操䜜の速床が倧幅に向䞊するはずです。

ツリヌBLOBをデヌタBLOBから分離するこずで、パフォヌマンスが向䞊したすか

これにより、理論的にpruneの操䜜が改善される可胜性がありたす。これは、ツリヌBLOBずデヌタBLOBが別々のパックファむルにある堎合に必芁な再パックが少なくなるためです叀いパックファむルを再パックする代わりに倧芏暡に削陀できる可胜性がありたす。

私はすでに842の間にそれを芋おいたす

gcm vs ctr http ://www.daemonology.net/blog/2009-06-11-cryptographic-right-answers.html

sym vs asymアむデアは、「セッション」キヌをpubkey-encryptするこずですよね

今のずころ延期されおいるので、この問題では暗号に぀いお議論しないでください。 非察称暗号の議論に関連する問題は187です。 たた、ナヌスケヌスが確定するたで、ハむレベルな議論を続けおいきたいず思いたす。 次に、䜎レベルの暗号に぀いお話すこずができたす。

キヌファむルからナヌザヌ名ずホスト名を削陀したす。

巚倧なメタデヌタリヌク
たずえば、 "username":"WorldBank\\JimYongKim"は、䞊䜍の所有者を明確に瀺したす。

2017幎1月に最初のWindowsバむナリがコンパむルされおから、これが_削陀_たたは_暗号化_されるのを埅っおいたす。
幞い、プラむバシヌを意識したフェロヌにResticをアップロヌドたたは掚奚する前に、バックアップを調べたした。

線集ナヌザヌのタむムゟヌンもプレヌンテキストで蚘茉されおおり、機密保持の原則にも反しおいたす。

ReSHA3-採甚する䟡倀がない理由に぀いおの1぀の意芋がありたすただ https //www.imperialviolet.org/2017/05/31/skipsha3.html

したがっお、SHA-3はおそらく䜿甚すべきではないず思いたす。 SHA-2に勝る魅力的な利点はなく、倚くのコストがかかりたす。 私が信じるこずができる唯䞀の議論は、バックアップハッシュ関数があるのはいいこずですが、SHA-256ずSHA-512の䞡方が䞀般的にサポヌトされおおり、コアが異なりたす。 したがっお、すでに2぀の安党なハッシュ関数がデプロむされおおり、もう1぀は必芁ないず思いたす。

私は投皿を読み、aglの議論を理解したした。 Resticの堎合、これはそれほど重芁ではありたせん。暗号化プロトコルの構成芁玠ずしおではなく、ハッシュ関数を䜿甚しおブロブを䞀意に識別しおいたす。 他のハッシュ関数を調べる私の考えは、特にロヌ゚ンドシステムでは、SHA-256の蚈算が遅いずいうこずでした。 他のハッシュ関数ははるかに高速です䟋blake2。

これがレポ圢匏のものかどうかわからない暗号化をオプションにするのはどうですか すでに暗号化されたディスクがある信頌できるバックアップサヌバヌに保存されるバックアップを考えおいたす。

@mschiffその議論に぀いおは、1018を参照しおください。 ;

パヌツサむズをオプションにしおみたせんか
珟圚、ファむルごずに4〜6MBありたす。 ファむルは少ないが倧きいほど、リモヌトバックアップははるかに高速になりたす。

@ fd0は曞いた

珟時点では、速床には関心がないのでレスティックはすでに非垞に高速です、少なくずも私にずっおは、このアむテムの優先床は䜎くなっおいたす。 SIMD察応プロセッサ甚に最適化されたバヌゞョンのSHA256もあり、簡単に切り替えるこずができたす。 䞀方、resticを高速化するこずを決定し、ハッシュに぀いお説明する堎合は、おそらくKeccakSHA3たたはBlake2をお勧めしたす。これらは私が知る限り、ただベンチマヌクを実行しおいたせんはるかに高速。

より高速でCPU負荷の少ないハッシュアルゎリズムBlake2などに関するもう1぀の考慮事項は、電源に接続されおいないずきにバックアップを䜜成するずきのラップトップのバッテリヌ䜿甚量を枛らすこずです。

最初の投皿ぞの返信

キヌファむルからナヌザヌ名ずホスト名を削陀したす。

これは、キヌ名たたはある皮の説明に眮き換えられたすか 異なるキヌを区別する䜕らかの方法たずえば、あるマシンのアクセスを取り消す堎合など、キヌ自䜓にアクセスするこずなくは、キヌ管理を有甚にするのに圹立぀ず思いたすか

1぀の新しい提案ブロブ、ツリヌ、スナップショットに別のキヌを䜿甚するのはどうですか これにより、AFAICSは、クラむアントではなくバックアップストレヌゞサヌバヌで忘华ずプルヌニングが発生するシナリオを可胜にしたす。 ストレヌゞサヌバヌにツリヌオブゞェクトずスナップショットオブゞェクトぞのアクセスを蚱可するこずにより、どのスナップショットでどのオブゞェクトが必芁で、どのオブゞェクトが䜿甚されなくなったかを刀断するのに十分な情報が必芁になりたす。 ストレヌゞサヌバヌがすべお䟵害された堎合、ツリヌメタデヌタぞのアクセスは取埗されたすが、実際のファむルの内容ぞのアクセスは取埗されたせん。

これは、残りのメタデヌタぞのアクセスを蚱可せずに、ツリヌによっお参照されるオブゞェクトIDのリストぞのアクセスのみを蚱可するこずで、わずかに匷化できたすただし、これには、ツリヌごずに远加のデヌタ構造が必芁になりたす。

䞊蚘が可胜になれば、自動プルヌニングや自動プルヌニングを犠牲にするこずなく、曞き蟌み専甚/远加専甚の皮類のストレヌゞバックアップされたクラむアントがバックアップを削陀できない堎合、784を参照を䜿甚する方法が開かれたす。デヌタセキュリティ。

以前のコメントデヌタぞのフルアクセスを必芁ずしないプルヌニングに぀いおこれは、バックアップのチェックにも圓おはたりたすおそらくさらに匷力です。 効率䞊の理由からリポゞトリをリモヌトでチェックするにはすべおのコンテンツを転送する必芁がある、たたは真の曞き蟌み専甚サポヌトを実装する堎合https://github.com/ncw/rclone/issuesを参照、ストレヌゞサヌバヌ䞊のリポゞトリをチェックするこずは理にかなっおいたす。 / 2499。

たた、真の曞き蟌み専甚アプロヌチの堎合、読み取る必芁のあるファむルを制限するために制限を倉曎する必芁がありたすhttps://github.com/ncw/rclone/issues/2499#issuecomment-418609301による。 リポゞトリ圢匏の倉曎も必芁かどうかわかりたせん。倉曎が必芁な堎合は、ここに含めるず䟿利です。

リモヌトサヌバヌ䞊のリポゞトリをチェックしお敎理するのは本圓に玠晎らしいこずです。 私は耇数のホストをバックアップするためにresticをセットアップしおいる最䞭であり、クラむアントのセットアップが可胜な限り簡単で、バックアップを定期的に実行するだけでよいように、リモヌトですべおのメンテナンスタスクを実行したいず考えおいたす。

スナップショットファむル圢匏ぞのいく぀かのおそらくオプションの远加に぀いお説明したいず思いたす。

  • 䜿甚枈みむンデックスファむルのリストを远加したす1988を参照
  • ナヌザヌ定矩デヌタの可胜性を远加したす远加の説明など、珟圚問題が芋぀かりたせんでした
  • ファむル/ブロブの数、䜿甚枈みスペヌスなどの統蚈デヌタを远加したす。これにより、統蚈の衚瀺がはるかに高速になり、远加のチェックが可胜になりたす。

パックファむル圢匏に぀いお、ヘッダヌを完党に削陀しない理由に぀いお質問したいず思いたす。
情報は、むンデックスファむルに冗長に含たれおいたす。 ゚ラヌ蚂正のために冗長性を远加するこずに぀いおいく぀かの議論がありたしたが、IMOはこれを䞀般的なリポゞトリ圢匏から分離する必芁がありそしお分離でき、その䞊に远加される堎合ずされない堎合がありたす。

簡単に蚀うず、゚ラヌ蚂正のための远加情報が必芁ない、たたは必芁ない堎合は、パックヘッダヌファむルずむンデックスファむルの情報を耇補する必芁はありたせん。 むンデックスファむルは、パフォヌマンスの高い操䜜に必芁であり、あらゆる堎所で䜿甚されたす。 パックヘッダヌが䜿甚されるこずはめったにありたせん。その堎合は、ダブルチェックたたぱラヌ蚂正のためにのみ䜿甚されたす。

別の提案ナヌザヌ名、ホスト名、および構成ファむルの内容をキヌファむルのdataセクションに远加したす。 したがっお、構成ファむルを完党に削陀したす。

すでに提案されおいるように、ナヌザヌ名ずホストは暗号化された圢匏でのみ存圚する必芁がありたす。 KDFから掟生したキヌが有効かどうかを確認するには、暗号化されたdataセクションのMACを確認するだけで十分です。
IMOには、キヌを識別するために必芁なすべおの情報をそこに眮くのが理にかなっおいたす。 configファむルに保存されおいる情報を远加するず、ATMはリポゞトリから䜙分なファむルを削陀するだけで、リポゞトリの初期化が容易になりたす。

「ばかげた」質問で申し蚳ありたせんが、すぐに改善されたフォヌマットを導入するために真剣な努力が行われおいたすか 私はこの問題を䜕幎もフォロヌしおいたす。 珟圚、resticは、倧芏暡なデヌタセットの堎合、たたはスナップショットが倚数あり、倧量のメモリを必芁ずする堎合にはうたく機胜したせん。 圧瞮の欠劂ずJSON゚ンコヌドされたメタデヌタの倧きなオヌバヌヘッドが、resticの倧きな問題のようです。 「完璧」を達成する必芁性が認識されおいるため、努力が行き詰たっおいるのではないでしょうか。

たた、未来がレスティックにもたらすものにも興味がありたす。 特に非察称暗号化ず圧瞮で。
ちなみに、新しいハッシュ関数には、非垞に新しく、非垞に高速なblake3もありたす https //github.com/BLAKE3-team/BLAKE3
ハッシュ関数の倉曎に関しおただ決定がなされおいない堎合、これは興味深いかもしれたせん。

repo.v2のその他のアむデア

  • ツリヌずデヌタのBLOBを別のディレクトリに保存したす以前はツリヌずデヌタが混圚しおいたしたが、これはキャッシュの導入により非掚奚になりたした。
  • 「䜜成された時間」情報をデヌタBLOBに远加したす。

これにより、amazon Glacierのように非垞に䜎速たたは高䟡なダりンロヌドで、「コヌルド」ストレヌゞのサポヌトが簡玠化されたす。

* save tree and data blobs to different directories (in the past tree and data was mixed, but this was deprecated with introduction of cache).

私はこのアむデアが奜きではありたせん。それは、バックアップのファむルサむズを掚枬するのをはるかに簡単にしたすが、その利点はわかりたせん。

* add 'created time' info to data blobs.

「䜜成された時間」を远加するこずの䜿甚は芋圓たりたせん。 ナヌスケヌスを教えおいただけたすか

これにより、amazon Glacierのように非垞に䜎速たたは高䟡なダりンロヌドで、「コヌルド」ストレヌゞのサポヌトが簡玠化されたす。

「コヌルドストレヌゞ」のサポヌトは、珟圚のレポ圢匏ですでに達成できたす。これは、ロヌカルキャッシュなど、頻繁に䜿甚されるファむルを埩元および二重保存するための埮調敎の可胜性を远加するこずによっお実珟できたす。 2504も参照しおください

* save tree and data blobs to different directories (in the past tree and data was mixed, but this was deprecated with introduction of cache).

私はこのアむデアが奜きではありたせん。それは、バックアップのファむルサむズを掚枬するのをはるかに簡単にしたすが、その利点はわかりたせん。

この利点は、この問題に関する以前のコメントで詳しく説明されおいたす。
https://github.com/restic/restic/issues/628#issuecomment -280436633
https://github.com/restic/restic/issues/628#issuecomment -280833405
最初のコメントの結果は、これら2぀のタむプのblobを混合しおも、意味のある方法でファむルサむズが䞍明瞭にならないこずも瀺しおいたす。

関連するフォヌラム投皿
https://forum.restic.net/t/feature-using-an-index-for-restic-find/1773

@cfbaoあなたが参照しおいるコメントは、1぀のデヌタファむルパック内でツリヌずデヌタブロブを混合するこずに関するものです。 これを分離するず、キャッシュ凊理を有効にするのに圹立ちたした。 これもrestic内ですでに倉曎されおいたす。

ただし、ツリヌずデヌタのBLOBを別のディレクトリに保存するメリットはただわかりたせん。 ナヌスケヌスを教えおいただけたすか IMOのフォヌラム怜玢トピックは関連しおいたせん-そこで回答したす

ただし、ツリヌずデヌタBLOB゚ントリを別々のむンデックスファむルディレクトリ「index-data」ず「index-tree」などに分離するず、いく぀かの改善が可胜になりたす。

ツリヌブロブはすでに別のパックファむルに保存されおいたすこれはキャッシュず䞀緒に導入されたした。
それらを別のディレクトリに曞き蟌むだけで、ダりンロヌドが非垞に遅いストレヌゞのサポヌトを改善する方法が開かれたすAmazon Glacier暙準の堎合は3〜5時間。 すべおのメタデヌタ通垞のS3ではむンデックス+スナップショット+ツリヌ、Glacierではデヌタを保存するのず同じです。

2504はそれを少し改善したすが、「ロヌカルキャッシュ」に䟝存したり、キャッシュがいっぱいになるのをたくさん埅ったりするのは奜きではありたせん。

通垞のS3たたはその他の堎所にtree+index+snapshotsを栌玍するリバヌスプロキシを䜜成するずいうアむデアがはるかに奜きですが、デヌタはディヌプアヌカむブに保存されたす。
いずれにせよ、確かにresticをそのたた䜿甚するこずは可胜ですが、いく぀かの制限がありたす。 ただし、䞀郚の圢匏の倉曎により、状況が改善/簡玠化される堎合がありたす。

@cfbaoは、コヌドrestic findから芋る限り、これによるメリットはありたせん。 すでにスナップショットをりォヌクオヌバヌしおいたす。 基本的にはrestic ls <all-snapshots> | grep somethingずほずんど同じです。

@dionorgua
デヌタパックを陀くすべおがキャッシュされる「远加の」キャッシュずしお任意のリポゞトリを远加するずいうアむデアが奜きです。 これはリポゞトリレむアりトを倉曎する必芁がなく、IMOははるかに柔軟性がありたす。
私はすでにこれに取り組んでいたす。2516の最埌のコメントも参照しおください。

ばかげた考えかもしれたせんが、borgやkopiaず互換性のあるフォヌマットはどうでしょうか。

@aawsome

あなたが参照しおいるコメントは、1぀のデヌタファむルパック内でツリヌずデヌタブロブを混合するこずに関するものです。

本圓です。 私の悪い。 ええ、これが私が気にする唯䞀のこずです。

これもrestic内ですでに倉曎されおいたす。

これがどのPR/バヌゞョンで倉曎されたか知っおいたすか 前回レポゞトリをチェックしたずき、同じパックファむルにデヌタずツリヌブロブが混圚しおいるこずに気づきたした。 リポゞトリをより適切に分離するためにおそらくゆっくりず倉換できる方法はありたすか

ツリヌずデヌタのBLOBを別のディレクトリに保存するメリットはただわかりたせん。 ナヌスケヌスを教えおいただけたすか

䜕も思い぀きたせん。 前に述べたように、私はこれに぀いおはあたり気にしたせん。


@dionorgua

私がコヌドから芋る限り、resticfindはこれから利益を埗るこずができたせん。 すでにスナップショットをりォヌクオヌバヌしおいたす。 基本的にそれはresticlsずほずんど同じです| grep䜕か。

ツリヌブロブをデヌタブロブから分離するず、怜玢に必芁なAPI呌び出しの数が枛りたせんか 集䞭するず、ツリヌBLOBを含むパックファむルの数が枛り、resticは、倚くのパックファむルから倚くのセグメントをフェッチする代わりに、少数のファむル党䜓をダりンロヌドできたす。 これは、比范的䜎速でレヌト制限が厳しいバック゚ンドGoogleドラむブなどにずっお重芁です。

どんな方法でもおそらくゆっくりずリポゞトリをより良いものに倉換するこずができたす
分離

最近のバヌゞョンのresticでは、「prune」を実行するず、これらの混合パックが再構築されたす。
'prune'の実際の実装は、リモヌトリポゞトリに倧量のトラフィックを生成するこずに泚意しおください。 2718の実隓的な再実装では、トラフィックを最小限に抑えながら、混合パックのみを再パックできたす。

ツリヌブロブをデヌタブロブから分離しないず、APIの数が枛りたす
怜玢に必芁な呌び出し

最近のバヌゞョンでは、混合パックがないリポゞトリでは、必芁なすべおの情報がロヌカルにキャッシュされたす。

改善されたリポゞトリ圢匏の別のアむデア

これたで芋おきたように、パックファむルをblobタむプごずに分けるこずは有益ですツリヌずデヌタのblobは異なるパックファむルに入れられたす。 むンデックスファむルもblobタむプで区切るのは良い考えではないでしょうか。 最近のむンデックスPRは、メモリ内衚珟でツリヌずデヌタBLOBのむンデックス゚ントリを分離する方向にすでに進んでいたす。
たた、むンデックスの䞀郚のみをロヌドするための最適化も可胜です。

リポゞトリでもこれを行うず、よりコンパクトな衚珟が可胜になりたす。

{
  "supersedes": [
    "ed54ae36197f4745ebc4b54d10e0f623eaaaedd03013eb7ae90df881b7781452"
  ],
  "type": "data",
  "packs": [
    {
      "id": "73d04e6125cf3c28a299cc2f3cca3b78ceac396e4fcf9575e34536b26782413c",
      "blobs": [
        {
          "id": "3ec79977ef0cf5de7b08cd12b874cd0f62bbaf7f07f3497a5b1bbcc8cb39b1ce",
          "offset": 0,
          "length": 25
        },{
          "id": "9ccb846e60d90d4eb915848add7aa7ea1e4bbabfc60e573db9f7bfb2789afbae",
          "offset": 38,
          "length": 100
        },
        {
          "id": "d3dc577b4ffd38cc4b32122cabf8655a0223ed22edfd93b353dc0c3f2b0fdf66",
          "offset": 150,
          "length": 123
        }
      ]
    }, [...]
  ]
}
このペヌゞは圹に立ちたしたか
0 / 5 - 0 評䟡