Restic: ์ €์žฅ์†Œ ํ˜•์‹ v2

์— ๋งŒ๋“  2016๋…„ 09์›” 19์ผ  ยท  51์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: restic/restic

์ €์žฅ์†Œ ํ˜•์‹์„ ๋ฒ„์ „ 2๋กœ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒƒ์— ๋Œ€ํ•œ ๋…ผ์˜๋ฅผ ์‹œ์ž‘ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์••์ถ•์„ ์ง€์›ํ•˜๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค(#21 ์ฐธ์กฐ).

์ƒˆ๋กœ์šด ์ œ์•ˆ์ด ๋“ค์–ด์˜ค๋ฉด ๋‹ค์Œ ๋ชฉ๋ก์ด ์—…๋ฐ์ดํŠธ๋ฉ๋‹ˆ๋‹ค.

์ˆ˜๋ฝ๋จ:

  • ํŒŒ์ผ ์••์ถ•: ํ—ค๋”๋ฅผ ํŒŒ์ผ์˜ ์‹œ์ž‘ ๋ถ€๋ถ„์œผ๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค. ํ˜„์žฌ ํ—ค๋”๋Š” ๋์— ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ƒฅ ํŒŒ์ผ์„ ์ž‘์„ฑํ•˜๊ณ  ์™„๋ฃŒ๋˜๋ฉด ํ—ค๋”๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ์ด ์ข‹์„ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์‹คํŒจํ•œ ๋ฐฑ์—”๋“œ ์š”์ฒญ์„ ์žฌ์‹œ๋„ํ•  ์ˆ˜ ์žˆ์œผ๋ ค๋ฉด ์–ด์จŒ๋“  ํŒŒ์ผ์„ ๋กœ์ปฌ๋กœ ๋ฒ„ํผ๋งํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ฝ˜ํ…์ธ (blobs)๋ฅผ ์ž„์‹œ ํŒŒ์ผ์— ์“ด ๋‹ค์Œ ๋ฐฑ ์—”๋“œ์— ํŒฉ ํŒŒ์ผ์„ ์—…๋กœ๋“œํ•  ๋•Œ ํ—ค๋”๋ฅผ ์“ธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ํŒŒ์ผ ๋์—์„œ ์‹œ์ž‘ํ•  ํ•„์š”๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์— ํ—ค๋”๋ฅผ ๋” ์‰ฝ๊ฒŒ ์ฝ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ํŒฉ ํŒŒ์ผ: ํ˜„์žฌ ํŒฉ ํŒŒ์ผ ํ—ค๋”๋Š” ์‚ฌ์šฉ์ž ์ •์˜ ๋ฐ”์ด๋„ˆ๋ฆฌ ๊ตฌ์กฐ์ž…๋‹ˆ๋‹ค( ๋””์ž์ธ ๋ฌธ์„œ ์ฐธ์กฐ). ์ด๊ฒƒ์€ ์œ ์—ฐํ•˜์ง€ ์•Š๊ณ  ์‚ฌ์šฉ์ž ์ •์˜ ๊ตฌ๋ฌธ ๋ถ„์„๊ธฐ๊ฐ€ ํ•„์š”ํ•˜๋ฉฐ ์ €์žฅ์†Œ ํ˜•์‹์„ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๊ณ  ํ™•์žฅ์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํŠธ๋ฆฌ ๊ฐœ์ฒด๊ฐ€ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์— ์ €์žฅ๋˜๋Š” ๋ฐฉ์‹๊ณผ ์œ ์‚ฌํ•˜๊ฒŒ ํŒฉ ํ—ค๋”๋ฅผ JSON ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋กœ ๋‹ค์‹œ ์ž‘์„ฑํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๊ธฐ๋ณธ ๋ฐ์ดํ„ฐ ํ˜•์‹์„ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๊ณ ๋„ ํ™•์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ํŒฉ ํŒŒ์ผ/์ธ๋ฑ์Šค: ํŒฉ ํ—ค๋”๊ฐ€ ๋ณ€๊ฒฝ๋˜๋ฉด ์••์ถ• ์ง€์›์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค(์•Œ๊ณ ๋ฆฌ์ฆ˜, ์••์ถ•/๋น„์••์ถ• ๊ธธ์ด). ๋˜ํ•œ ์ธ๋ฑ์Šค ํŒŒ์ผ์— ์••์ถ•/๋น„์••์ถ• ํฌ๊ธฐ๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
  • ์Šค๋ƒ…์ƒท ํŒŒ์ผ: ๋งŽ์€ ์Šค๋ƒ…์ƒท์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ์••์ถ•๋œ ์Šค๋ƒ…์ƒท์„ ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค(cf #523).
  • ์ด ๋””๋ ‰ํ† ๋ฆฌ์— ํฌํ•จ๋œ ๋‚ด์šฉ์„ ์„ค๋ช…ํ•˜๋Š” README ํŒŒ์ผ์„ ์ƒˆ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์— ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
  • ํ‚ค ํŒŒ์ผ์—์„œ ์‚ฌ์šฉ์ž ์ด๋ฆ„๊ณผ ํ˜ธ์ŠคํŠธ ์ด๋ฆ„ ์ œ๊ฑฐ(#2128)

๋…ผ์˜ ์˜ˆ์ •:

  • ํŒŒ์ผ์— ์˜ค๋ฅ˜ ์ˆ˜์ • ์ฝ”๋“œ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๊นŒ? ๋ฐ์ดํ„ฐ ์˜ค๋ฅ˜๋ฅผ ๋ณต๊ตฌํ•˜๊ธฐ ์œ„ํ•œ ๋‹ค๋ฅธ ์•„์ด๋””์–ด๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?
  • ์ธ๋ฑ์Šค ํ˜•์‹์„ ๋ณ€๊ฒฝํ•˜์—ฌ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ ํ–ฅ์ƒ
  • ์•”ํ˜ธํ™” ๊ฐ„์ ‘ ์ฐธ์กฐ ์ถ”๊ฐ€: ํ—ค๋”์— ๊ฐ blob์˜ ์ธ์ฆ/์•”ํ˜ธํ™”์— ์‚ฌ์šฉ๋˜๋Š” ํ‚ค๋ฅผ ๊ธฐ๋กํ•ฉ๋‹ˆ๋‹ค(๋‚˜์ค‘์— #187์„ ๋” ์‰ฝ๊ฒŒ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋„๋ก).

์—ฐ๊ธฐ/๊ฑฐ๋ถ€:

  • ๋” ๋น ๋ฅธ ํ•ด์‹œ ํ•จ์ˆ˜๋กœ ์ „ํ™˜(SHA256 ๋Œ€์‹  SHA3/Keccak/Blake2)
  • ๋น„๋Œ€์นญ ์•”ํ˜ธํ™” ์ง€์›

๋‹ค๋ฅธ ๊ฑด ์—†๋‚˜์š”?

project repo v2 discussion

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

์ธ๋ฑ์Šค ํŒŒ์ผ์ด๋‚˜ ํŒฉ ๋ฐ”๋‹ฅ๊ธ€์— ์••์ถ•๋˜์ง€ ์•Š์€ ํฌ๊ธฐ๋ฅผ ๊ฐ–๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๊นŒ?

์˜ˆ: ํŒฉ ํ—ค๋”๋Š” ํŒฉ์˜ ๋‚ด์šฉ์„ ์„ค๋ช…ํ•˜๊ณ  ์ถ”์ถœ ํ”„๋กœ์„ธ์Šค์— ์˜ˆ์ƒ๋˜๋Š” ์‚ฌํ•ญ์„ ์•Œ๋ ค์ค๋‹ˆ๋‹ค(์••์ถ• ์•Œ๊ณ ๋ฆฌ์ฆ˜, ์••์ถ•๋˜์ง€ ์•Š์€ ํฌ๊ธฐ ๋ฐ ๋‚˜์ค‘์— ์•”ํ˜ธํ™”์— ์‚ฌ์šฉ๋œ ํ‚ค์™€ ๊ฐ™์€ ๊ธฐํƒ€ ์†์„ฑ ์ธก๋ฉด์—์„œ). restic์ด ํŒฉ ํ—ค๋”์˜ ๋ชจ๋“  blob์„ ์กฐํšŒํ•  ํ•„์š”๊ฐ€ ์—†๋„๋ก ๋„์ž…๋œ ์ธ๋ฑ์Šค์—์„œ๋„ ๋™์ผํ•œ ์‚ฌํ•ญ์„ ํ‘œ์‹œํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋™์ผํ•œ ์ •๋ณด๊ฐ€ ๊ฑฐ๊ธฐ์— ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ œ ์ƒ๊ฐ์—๋Š” ์ €์žฅ์†Œ ํ˜•์‹ 2 == blob ๋ฐ์ดํ„ฐ์˜ ์ฒซ ๋ฒˆ์งธ ๋ฐ”์ดํŠธ๋Š” ์••์ถ• ํ˜•์‹์„ ๋‚˜ํƒ€๋‚ด๋ฉฐ ํ•„์š”ํ•œ ๋ชจ๋“  ๊ฒƒ์ž…๋‹ˆ๋‹ค. 255๊ฐœ์˜ ๊ฐ€๋Šฅํ•œ ํ˜•์‹ ์ค‘ ํ•˜๋‚˜๊ฐ€ {64๋น„ํŠธ ๋น„์••์ถ• ๊ธธ์ด}{์••์ถ• ๋ฐ์ดํ„ฐ}์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ €๋Š” ์ด ์•„์ด๋””์–ด๊ฐ€ ๋งˆ์Œ์— ๋“ค์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํŒŒ์ผ ํ˜•์‹์ด ๋” ๋ณต์žกํ•ด์ง‘๋‹ˆ๋‹ค. Blob์˜ ์‹œ์ž‘ ๋ถ€๋ถ„๊ณผ ํ—ค๋”์˜ ๋‘ ๊ฐ€์ง€ ๋‹ค๋ฅธ ์œ„์น˜์— ์ œ์–ด ์ •๋ณด๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ํ—ค๋”๋Š” ์ •ํ™•ํžˆ ์ œ์–ด ์ •๋ณด๋ฅผ ํฌํ•จํ•˜๋Š” ์œ„์น˜์ž…๋‹ˆ๋‹ค.

์˜ค๋ฅ˜ ์ˆ˜์ •์€ ๋ฐฑ์—…์— ์ข‹์€ ์•„์ด๋””์–ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋‚˜๋Š” ๊ทธ๊ฒƒ์ด ํŒŒ์ผ ์‹œ์Šคํ…œ์˜ ์ฑ…์ž„์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์›์น™์ ์œผ๋กœ ๋™์˜ํ•˜์ง€๋งŒ ํŒŒ์ผ ์‹œ์Šคํ…œ์€ ๋งค์šฐ ๋ณต์žกํ•˜๊ณ  ์˜ค๋ฅ˜ ์ „ํŒŒ(์˜ˆ: ๋งค์ฒด์˜ ์ฝ๊ธฐ/์“ฐ๊ธฐ ์˜ค๋ฅ˜)๋Š” ์ข…์ข… ์ฐจ์„ ์ฑ…์ž…๋‹ˆ๋‹ค. ๊ณ ๋„๋กœ ๊ฐ์†Œ๋œ(์˜ˆ: ์ค‘๋ณต ์ œ๊ฑฐ์˜ ๊ด€์ ์—์„œ) ๋ฐฑ์—… ๋ฐ์ดํ„ฐ์˜ ๊ฒฝ์šฐ ๋‹ค๋ฅธ ์˜ค๋ฅ˜ ์ˆ˜์ • ๊ณ„์ธต์„ ์ถ”๊ฐ€(๋˜๋Š” ์ถ”๊ฐ€ ์ œ์•ˆ)ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

๋ชจ๋“  51 ๋Œ“๊ธ€

ํ—ค๋”๋ฅผ ์•ž์œผ๋กœ ์˜ฎ๊ธฐ๋Š” ๊ฑด ์ž˜ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ํ˜„์žฌ ๊ตฌํ˜„๋˜์–ด ์žˆ์ง€ ์•Š๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์ง€๋งŒ ๋กœ์ปฌ ์ €์žฅ์†Œ์˜ ๊ฒฝ์šฐ ๋์— ํ—ค๋”๊ฐ€ ์žˆ๋‹ค๋Š” ๊ฒƒ์€ ํŒŒ์ผ ์‚ฌ๋ณธ์„ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

ํฅ๋ฏธ๋กœ์šด ์ , ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๋ญ๊ฐ€ ๋” ๋‚ซ๋‹ค๋Š” ํŒ๋‹จ์€ ์•„์ง ์ž˜ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. ์›๊ฒฉ ๋ฐฑ์—”๋“œ์˜ ๊ฒฝ์šฐ (๋ฐฑ์—”๋“œ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์•ฝ๊ฐ„ ๋ณ€๊ฒฝํ•œ ํ›„) io.Reader ๋ฅผ ์ „๋‹ฌํ•˜๋ฉด stdlib๊ฐ€ sendfile ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋””์Šคํฌ์—์„œ ์ง์ ‘ ํŒŒ์ผ์„ ์ŠคํŠธ๋ฆฌ๋ฐํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ํ .

์ฐธ๊ณ ๋กœ ์™œ GCM์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”์ง€ ๊ถ๊ธˆํ•ด์„œ ๋ฒค์น˜๋งˆํฌ๋ฅผ ์‹คํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค. AES-CTR + Poly1305๋Š” CPU์— AES-NI๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ ๊ฝค ๋น ๋ฆ…๋‹ˆ๋‹ค(Go ๋‚ด์žฅ GCM๋ณด๋‹ค 50% ๋น ๋ฆ„). AES-NI๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด Go์˜ ์ตœ์ ํ™”๋œ GCM ์–ด์…ˆ๋ธ”๋ฆฌ ์ฝ”๋“œ๊ฐ€ ๋ฌด์ ์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ธํ…” ์ œ์˜จ 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๊ฐ€ Go 1.5๋ฅผ ์œ„ํ•ด ์ด๋ฅผ ๊ธฐ์ฆํ–ˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๋ธ”๋ก ํฌ๊ธฐ์™€ ๊ด€๋ จํ•˜์—ฌ restic ๋ฒค์น˜๋งˆํฌ ๋Š” 8 MiB ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐ˜๋ฉด studgcm ์€ 4kiB ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์–ด๋ฆฌ์„์€ gcm์— ๋Œ€ํ•ด 8MiB ๋ธ”๋ก ํฌ๊ธฐ๋กœ ๋‹ค์‹œ ์‹œ๋„ํ–ˆ์ง€๋งŒ ๊ฒฐ๊ณผ๋Š” ๊ฑฐ์˜ ๋™์ผํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ ์ด๊ฒƒ์— ์‹œ๊ฐ„์„ ๋‚ญ๋น„ํ•˜์ง€ ๋ง์ž. ๋‚˜๋Š” CTR+Poly1305๊ฐ€ ์ถฉ๋ถ„ํžˆ ๋น ๋ฅด๋‹ค๊ณ  ์ƒ๊ฐํ•œ๋‹ค.

์ธ๋ฑ์Šค ํŒŒ์ผ์ด๋‚˜ ํŒฉ ๋ฐ”๋‹ฅ๊ธ€์— ์••์ถ•๋˜์ง€ ์•Š์€ ํฌ๊ธฐ๋ฅผ ๊ฐ–๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๊นŒ? ๋ธ”๋กญ ๋‚ด์—์„œ๋งŒ ์•Œ๋ฉด ๊ดœ์ฐฎ์„ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด restic์—์„œ ๋” ์ ์€ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์ด ์ด ์ถ”๊ฐ€ ์œ„์น˜์— ์•Œ๋ ค์ง€๊ฒŒ ํ•ฉ๋‹ˆ๊นŒ?

์ œ ์ƒ๊ฐ์—๋Š” ์ €์žฅ์†Œ ํ˜•์‹ 2 == blob ๋ฐ์ดํ„ฐ์˜ ์ฒซ ๋ฒˆ์งธ ๋ฐ”์ดํŠธ๋Š” ์••์ถ• ํ˜•์‹์„ ๋‚˜ํƒ€๋‚ด๋ฉฐ ํ•„์š”ํ•œ ๋ชจ๋“  ๊ฒƒ์ž…๋‹ˆ๋‹ค. 255๊ฐœ์˜ ๊ฐ€๋Šฅํ•œ ํ˜•์‹ ์ค‘ ํ•˜๋‚˜๊ฐ€ {64๋น„ํŠธ ๋น„์••์ถ• ๊ธธ์ด}{์••์ถ• ๋ฐ์ดํ„ฐ}์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์˜ค๋ฅ˜ ์ˆ˜์ •์€ ๋ฐฑ์—…์— ์ข‹์€ ์•„์ด๋””์–ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋‚˜๋Š” ๊ทธ๊ฒƒ์ด ํŒŒ์ผ ์‹œ์Šคํ…œ์˜ ์ฑ…์ž„์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋‹น์‹ ์€ ๋˜ํ•œ restic ๋‚ด๋ถ€์— RAID๋ฅผ ๊ตฌํ˜„ ํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?

์ธ๋ฑ์Šค ํŒŒ์ผ์ด๋‚˜ ํŒฉ ๋ฐ”๋‹ฅ๊ธ€์— ์••์ถ•๋˜์ง€ ์•Š์€ ํฌ๊ธฐ๋ฅผ ๊ฐ–๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๊นŒ?

์˜ˆ: ํŒฉ ํ—ค๋”๋Š” ํŒฉ์˜ ๋‚ด์šฉ์„ ์„ค๋ช…ํ•˜๊ณ  ์ถ”์ถœ ํ”„๋กœ์„ธ์Šค์— ์˜ˆ์ƒ๋˜๋Š” ์‚ฌํ•ญ์„ ์•Œ๋ ค์ค๋‹ˆ๋‹ค(์••์ถ• ์•Œ๊ณ ๋ฆฌ์ฆ˜, ์••์ถ•๋˜์ง€ ์•Š์€ ํฌ๊ธฐ ๋ฐ ๋‚˜์ค‘์— ์•”ํ˜ธํ™”์— ์‚ฌ์šฉ๋œ ํ‚ค์™€ ๊ฐ™์€ ๊ธฐํƒ€ ์†์„ฑ ์ธก๋ฉด์—์„œ). restic์ด ํŒฉ ํ—ค๋”์˜ ๋ชจ๋“  blob์„ ์กฐํšŒํ•  ํ•„์š”๊ฐ€ ์—†๋„๋ก ๋„์ž…๋œ ์ธ๋ฑ์Šค์—์„œ๋„ ๋™์ผํ•œ ์‚ฌํ•ญ์„ ํ‘œ์‹œํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋™์ผํ•œ ์ •๋ณด๊ฐ€ ๊ฑฐ๊ธฐ์— ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ œ ์ƒ๊ฐ์—๋Š” ์ €์žฅ์†Œ ํ˜•์‹ 2 == blob ๋ฐ์ดํ„ฐ์˜ ์ฒซ ๋ฒˆ์งธ ๋ฐ”์ดํŠธ๋Š” ์••์ถ• ํ˜•์‹์„ ๋‚˜ํƒ€๋‚ด๋ฉฐ ํ•„์š”ํ•œ ๋ชจ๋“  ๊ฒƒ์ž…๋‹ˆ๋‹ค. 255๊ฐœ์˜ ๊ฐ€๋Šฅํ•œ ํ˜•์‹ ์ค‘ ํ•˜๋‚˜๊ฐ€ {64๋น„ํŠธ ๋น„์••์ถ• ๊ธธ์ด}{์••์ถ• ๋ฐ์ดํ„ฐ}์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ €๋Š” ์ด ์•„์ด๋””์–ด๊ฐ€ ๋งˆ์Œ์— ๋“ค์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํŒŒ์ผ ํ˜•์‹์ด ๋” ๋ณต์žกํ•ด์ง‘๋‹ˆ๋‹ค. Blob์˜ ์‹œ์ž‘ ๋ถ€๋ถ„๊ณผ ํ—ค๋”์˜ ๋‘ ๊ฐ€์ง€ ๋‹ค๋ฅธ ์œ„์น˜์— ์ œ์–ด ์ •๋ณด๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ํ—ค๋”๋Š” ์ •ํ™•ํžˆ ์ œ์–ด ์ •๋ณด๋ฅผ ํฌํ•จํ•˜๋Š” ์œ„์น˜์ž…๋‹ˆ๋‹ค.

์˜ค๋ฅ˜ ์ˆ˜์ •์€ ๋ฐฑ์—…์— ์ข‹์€ ์•„์ด๋””์–ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋‚˜๋Š” ๊ทธ๊ฒƒ์ด ํŒŒ์ผ ์‹œ์Šคํ…œ์˜ ์ฑ…์ž„์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์›์น™์ ์œผ๋กœ ๋™์˜ํ•˜์ง€๋งŒ ํŒŒ์ผ ์‹œ์Šคํ…œ์€ ๋งค์šฐ ๋ณต์žกํ•˜๊ณ  ์˜ค๋ฅ˜ ์ „ํŒŒ(์˜ˆ: ๋งค์ฒด์˜ ์ฝ๊ธฐ/์“ฐ๊ธฐ ์˜ค๋ฅ˜)๋Š” ์ข…์ข… ์ฐจ์„ ์ฑ…์ž…๋‹ˆ๋‹ค. ๊ณ ๋„๋กœ ๊ฐ์†Œ๋œ(์˜ˆ: ์ค‘๋ณต ์ œ๊ฑฐ์˜ ๊ด€์ ์—์„œ) ๋ฐฑ์—… ๋ฐ์ดํ„ฐ์˜ ๊ฒฝ์šฐ ๋‹ค๋ฅธ ์˜ค๋ฅ˜ ์ˆ˜์ • ๊ณ„์ธต์„ ์ถ”๊ฐ€(๋˜๋Š” ์ถ”๊ฐ€ ์ œ์•ˆ)ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

Reed-Solomon ์ฝ”๋“œ์˜ ๊ฒฝ์šฐ ์ผ๋ถ€ ์„ฑ๋Šฅ ๋ฐ์ดํ„ฐ๊ฐ€ ํฌํ•จ๋œ ์ˆœ์ˆ˜ Go ๊ตฌํ˜„์ด https://github.com/klauspost/reedsolomon ์— ์žˆ์Šต๋‹ˆ๋‹ค.

https://www.usenix.org/legacy/event/fast09/tech/full_papers/plank/plank_html/ ์— ๋”ฐ๋ฅด๋ฉด ZFEC๊ฐ€ ๋” ๋นจ๋ผ์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ตฌํ˜„์€ https://pypi.python.org/pypi/zfec ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋Š” https://gitlab.com/zfec/go-zfec์— ์žˆ์Šต๋‹ˆ๋‹ค.

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์„ ์ œ์™ธํ•œ ๋Œ€๋ถ€๋ถ„์˜ ํ”Œ๋žซํผ์— ํ•ด๋‹น๋ฉ๋‹ˆ๋‹ค.

๋™๊ธฐํ™” ํ† ๋ก  (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

  • ์ €์žฅ์†Œ ์‹๋ณ„

ํ˜„์žฌ๋กœ์„œ๋Š” ์ €์žฅ์†Œ๋ฅผ ์šฐ์—ฐํžˆ ๋ฐœ๊ฒฌํ–ˆ์„ ๋•Œ ์—ฌ๋Ÿฌ๋ถ„์ด ๋ณด๊ณ  ์žˆ๋Š” ์ €์žฅ์†Œ๊ฐ€ ๋‹จ์ˆœ ์ €์žฅ์†Œ์ž„์„ ์•Œ ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด ์—†์Šต๋‹ˆ๋‹ค. ํ˜„์žฌ ํ‚ค ํŒŒ์ผ์—์„œ "created":"TIMESTAMP","username":"XXXXX","hostname":"XXXXX" ์ด ๋ˆ„์ถœ๋˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์ •๋ณด๋ฅผ ์ˆจ๊ธฐ๊ณ  ๋Œ€์‹  restic repository version X ์™€ ๊ฐ™์€ restic์— ๋Œ€ํ•œ ์ผ๋ถ€ ์ •๋ณด๋ฅผ ํฌํ•จํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. README์ฒ˜๋Ÿผ ๊ฐ„๋‹จํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด์ „ ๋…ผ์˜์— ๊ด€ํ•˜์—ฌ; ๋‚˜๋Š” ์–ด๋–ค ํ˜•ํƒœ์˜ ์˜ค๋ฅ˜ ์ˆ˜์ •์„ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ์— ๋งค์šฐ ์ฐฌ์„ฑํ•ฉ๋‹ˆ๋‹ค.

@oysols ์•„์ด๋””์–ด๋ฅผ ์ถ”๊ฐ€ํ•ด์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

์•„๋ž˜์— ๋‚ด ์ƒ๊ฐ์„ ์ถ”๊ฐ€ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

sha256์—์„œ sha512๋กœ ๋ณ€๊ฒฝ(์†๋„์šฉ)

ํ˜„์žฌ๋กœ์„œ๋Š” ์†๋„์— ๊ด€์‹ฌ์ด ์—†์Šต๋‹ˆ๋‹ค(restic์€ ์ด๋ฏธ ๋งค์šฐ ๋น ๋ฆ„). ๋”ฐ๋ผ์„œ ์ ์–ด๋„ ์ €์—๊ฒŒ ์ด ํ•ญ๋ชฉ์€ ์šฐ์„  ์ˆœ์œ„๊ฐ€ ๋‚ฎ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๊ฐ€ ๊ฐ„๋‹จํžˆ ์ „ํ™˜ํ•  ์ˆ˜ ์žˆ๋Š” SIMD ์ง€์› ํ”„๋กœ์„ธ์„œ์šฉ์œผ๋กœ ์ตœ์ ํ™”๋œ SHA256 ๋ฒ„์ „๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐ˜๋ฉด์— ์šฐ๋ฆฌ๊ฐ€ ์†๋„๋ฅผ ๋†’์ด๊ธฐ๋กœ ๊ฒฐ์ •ํ•˜๊ณ  ํ•ด์‹œ์— ๋Œ€ํ•ด ๋…ผ์˜ํ•ด์•ผ ํ•  ๋•Œ ๋‚˜๋Š” Keccak(SHA3) ๋˜๋Š” Blake2๋ฅผ ์„ ํ˜ธํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํ›จ์”ฌ ๋” ๋นจ๋ฆฌ.

๊ทธ๋ž˜์„œ ์ œ ๊ด€์ ์—์„œ ์ด ํ•ญ๋ชฉ์€ ์ผ๋‹จ ์—ฐ๊ธฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๋‹จ์ˆœ ์•”ํ˜ธ ๋Œ€์‹  ๊ณต๊ฐœ ํ‚ค ์•”ํ˜ธํ™” ์‚ฌ์šฉ

์ด ๊ธฐ๋Šฅ์€ ๊ณ„ํš๋˜์–ด ์žˆ์ง€๋งŒ(#187 ์ฐธ์กฐ) ๋ณต์žกํ•˜๊ณ  ๋งŽ์€ ์ƒ๊ฐ๊ณผ ๋ช‡ ๊ฐ€์ง€ ์ฃผ์š” ์ธํ”„๋ผ ๋ณ€๊ฒฝ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ๋˜ํ•œ ์ด๊ฒƒ์„ ์—ฐ๊ธฐํ•˜๊ณ  ๋ชจ๋“  ๊ฒƒ์„ ๋ณ€๊ฒฝ -> ์—ฐ๊ธฐํ•˜๋Š” ๋Œ€์‹  ๋” ์ž‘์€ ์ฆ๋ถ„ ์—…๋ฐ์ดํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

๋ฆฌํฌ์ง€ํ† ๋ฆฌ ์‹๋ณ„(๋ฆฌํฌ์ง€ํ† ๋ฆฌ์— README ํŒŒ์ผ ์ถ”๊ฐ€)

์•„์ฃผ ์ข‹์€ ์ , ์šฐ๋ฆฌ๋Š” ์•„๋ฌด๊ฒƒ๋„ ์ค‘๋‹จํ•˜์ง€ ์•Š๊ณ  ์ง€๊ธˆ ์ถ”๊ฐ€ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฆฌํฌ์ง€ํ† ๋ฆฌ "์ •๋ณด ๋ˆ„์ถœ"(ํ‚ค ํŒŒ์ผ์—์„œ ์‚ฌ์šฉ์ž ์ด๋ฆ„, ํ˜ธ์ŠคํŠธ ์ด๋ฆ„ ๋ฐ ์ƒ์„ฑ๋œ ํƒ€์ž„์Šคํƒฌํ”„ ์ œ๊ฑฐ)

๊ทธ๊ฒƒ๋„ ์ข‹์€ ์ง€์ ์ž…๋‹ˆ๋‹ค. ํ˜„์žฌ ์ด ์ •๋ณด๋Š” key list ๋ช…๋ น์—์„œ ํ‚ค ID์™€ ํ•จ๊ป˜ ํ‘œ์‹œํ•˜๋Š” ๋ฐ๋งŒ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. username ๋ฐ host ๋ฅผ ์‰ฝ๊ฒŒ ์‚ญ์ œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํƒ€์ž„์Šคํƒฌํ”„๋Š” ๋งŽ์€ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•˜์ง€ ์•Š์œผ๋ฉฐ ๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ ํŒŒ์ผ ์ƒ์„ฑ ๋‚ ์งœ์™€ ๋™์ผํ•ฉ๋‹ˆ๋‹ค.

username ๋ฐ host ๋ฅผ ์‚ญ์ œํ•˜๊ณ  ์ƒ์„ฑ๋œ ํƒ€์ž„์Šคํƒฌํ”„๋ฅผ ๊ทธ๋Œ€๋กœ ๋‘๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ์ƒ๊ฐ์ด ์žˆ์œผ์‹ ๊ฐ€์š”?

์ €๋Š” ์˜ค๋Š˜ https://github.com/klauspost/reedsolomon ์„ ๊ฐ€์ง€๊ณ  ๋†€์•˜๊ณ  ํŒฉ ํŒŒ์ผ์˜ ๋์— ์˜ค๋ฅ˜ ์ˆ˜์ • ์ฝ”๋“œ๋ฅผ ๋” ์‰ฝ๊ฒŒ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค(ํŒฉ ํ—ค๋”๋ฅผ ํŒŒ์ผ์˜ ์‹œ์ž‘ ๋ถ€๋ถ„์œผ๋กœ ์ด๋™ํ•˜๋ฉด ). ํ•˜์ง€๋งŒ ๋‘ ๊ฐ€์ง€ ๋‹จ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

  • ํŒŒ์ผ ํฌ๊ธฐ๋Š” reed-solomon์— ๋Œ€ํ•ด ์„ ํƒํ•œ ๋งค๊ฐœ๋ณ€์ˆ˜์— ๋”ฐ๋ผ ~14-30% ์ฆ๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
  • ์šฐ๋ฆฌ๋Š” ํŒฉ ํŒŒ์ผ ์ž์ฒด์— ์žˆ๋Š” ํŒฉ ํŒŒ์ผ ์„น์…˜์˜ ์ฒดํฌ์„ฌ(๋ฐ˜๋“œ์‹œ ์•”ํ˜ธํ™” ํ•ด์‹œ๋Š” ์•„๋‹˜)์„ ์ €์žฅํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์žฌ๊ตฌ์„ฑ์„ ์œ„ํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ํŒŒ์ผ์˜ ์–ด๋Š ๋ถ€๋ถ„์ด ์†์ƒ๋˜์—ˆ๋Š”์ง€ ์•Œ์•„์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์žฌ๊ตฌ์„ฑ์— ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋น ๋ฅธ ์ฒดํฌ์„ฌ(CRC ๋“ฑ)์„ ์‚ฌ์šฉํ•˜๋„๋ก ์„ ํƒํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ๊ณ„์‚ฐํ•˜๋Š” ๋ฐ ์‹œ๊ฐ„์ด ์กฐ๊ธˆ ๋” ๊ฑธ๋ฆฝ๋‹ˆ๋‹ค.

์ƒ๊ฐ?

๊ทธ๋ ‡๋‹ค๋ฉด ๋ฐ์ดํ„ฐ ๋กœ๋“œ ๋ณดํ˜ธ๋Š” ์„ ํƒ ์‚ฌํ•ญ์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ๋‚˜๋Š” ํฌ๊ธฐ ์ฆ๊ฐ€๊ฐ€ ํ•œ๊ณ„๋ณด๋‹ค ๋” ํฌ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค (๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ๋Š” ํ›Œ๋ฅญํ•œ ๊ธฐ๋Šฅ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜์ง€๋งŒ!)

ECC๊ฐ€ ์••์ถ•๊ณผ ๊ฒฐํ•ฉ๋  ๋•Œ ์ €์žฅ์†Œ๊ฐ€ ์–ผ๋งˆ๋‚˜ ๋” ํฐ์ง€(๋˜๋Š” ๋” ์ž‘์€์ง€?) ๋Š๋‚Œ์„ ์–ป์„ ์ˆ˜ ์žˆ๋„๋ก ์ด๊ฒƒ์œผ๋กœ ์กฐ๊ธˆ ํ”Œ๋ ˆ์ดํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๋‘ ์ข…๋ฅ˜์˜ ์ฝ”๋“œ๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜๋‚˜๋Š” ํŒฉ ํ—ค๋”์šฉ์ด๊ณ  ๋‹ค๋ฅธ ํ•˜๋‚˜๋Š” ๋ฐ์ดํ„ฐ์šฉ(์„ ํƒ ์‚ฌํ•ญ์ผ ์ˆ˜ ์žˆ์Œ)์ž…๋‹ˆ๋‹ค.

์‚ฌ์šฉ์ž ์ด๋ฆ„ ๋ฐ ํ˜ธ์ŠคํŠธ ์‚ญ์ œ

์ข‹์€ ์ƒ๊ฐ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ •๋ณด๋ฅผ ์œ ์ง€ํ•˜๋ ค๋ฉด ๋งˆ์Šคํ„ฐ ํ‚ค์™€ ๋™์ผํ•œ ๋ฐฉ์‹์œผ๋กœ ๋ณ„๋„์˜ ์•”ํ˜ธํ™”๋œ ํ•„๋“œ์— ์ •๋ณด๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ECC: ํŒŒ์ผ ํฌ๊ธฐ๊ฐ€ ~14-30% ์ฆ๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

ํŒฉ ํŒŒ์ผ ์ž์ฒด์— ECC๋ฅผ ํฌํ•จํ•˜๋Š” ๊ฒƒ์€ ์ข‹์€ ์ƒ๊ฐ์ด ์•„๋‹ˆ๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์ธ ๋ณต์› ์‹œ๋‚˜๋ฆฌ์˜ค์—์„œ๋Š” ์‚ฌ์šฉ๋˜์ง€ ์•Š์œผ๋ฉฐ ํŒฉ ํŒŒ์ผ์ด ์†์ƒ๋œ ๊ฒฝ์šฐ์—๋งŒ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

ํŒจ๋ฆฌํ‹ฐ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณ„๋„์˜ ๋””๋ ‰ํ† ๋ฆฌ์— ๋‘๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

repo/data/1e/1ef7267...
repo/parity/1e/1ef7267...
  • ํŒจ๋ฆฌํ‹ฐ๋Š” ์™„์ „ํžˆ ์„ ํƒ ์‚ฌํ•ญ์ด๋ฉฐ ๋ฐฑ์—… ํ›„ ์ƒ์„ฑ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋ณต์› ์ž‘์—…์ด ๋Š๋ ค์ง€์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ณต์›์— ์ถ”๊ฐ€ ๋Œ€์—ญํญ์ด ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • ๋™์ผํ•œ ํŒŒ์ผ ์ด๋ฆ„์„ ์‚ฌ์šฉํ•˜๋ฉด ์˜ฌ๋ฐ”๋ฅธ ํŒจ๋ฆฌํ‹ฐ ๋ฐ์ดํ„ฐ๋ฅผ ์‰ฝ๊ฒŒ ์‹๋ณ„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ํŒจ๋ฆฌํ‹ฐ ๋ฐ์ดํ„ฐ๊ฐ€ ์ž์ฒด sha256 ํ•ด์‹œ์˜ ์ด๋ฆ„์„ ๋”ฐ์„œ ๋ช…๋ช…๋˜์ง€ ์•Š์•˜์ง€๋งŒ ์ถ”๊ฐ€ ์ธ๋ฑ์Šค๊ฐ€ ํ•„์š”ํ•˜์ง€ ์•Š์Œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. (ํŒจ๋ฆฌํ‹ฐ ๋ฐ์ดํ„ฐ์˜ ํ™•์ธ์€ ์–ด์จŒ๋“  ํŒฉ ํŒŒ์ผ์„ ํ™•์ธํ•˜์—ฌ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.)
  • ์‚ฌ์šฉ์ž๋Š” ํŒจ๋ฆฌํ‹ฐ ๋ฐ์ดํ„ฐ์˜ ์–‘์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ตฌํ˜„ ๋ฐฉ๋ฒ•์— ๊ด€๊ณ„์—†์ด; ์••์ถ• ๋ฐ ์•”ํ˜ธํ™” ๊ณ„์ธต์ด ๋งŽ๊ธฐ ๋•Œ๋ฌธ์— ์ผ์ข…์˜ ECC๊ฐ€ ํ•„์š”ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ํ•˜๋‚˜์˜ ์ž˜๋ชป๋œ ๋น„ํŠธ๊ฐ€ ๋งŽ์€ ๋ฌธ์ œ๋ฅผ ์ผ์œผํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ท€ํ•˜์˜ ์˜๊ฒฌ์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ํ† ๋ก ์„ ์ œ๊ฐ€ ๋ฐฉ๊ธˆ ๋งŒ๋“  ๋ณ„๋„์˜ ๋ฌธ์ œ์ธ #804๋กœ ์˜ฎ๊ธฐ๊ฒ ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” restic์˜ ์ •๋ฐฉํ–ฅ ์˜ค๋ฅ˜ ์ •์ • ์ฝ”๋“œ์— ๋Œ€ํ•ด ์„œ๋กœ ๊ณผ๊ฑฐ์— ์ด์•ผ๊ธฐํ•˜๋Š” ๋‘ ๊ทธ๋ฃน์ด ์žˆ๋‹ค๋Š” ์ธ์ƒ์„ ๋ฐ›์ง€ ์•Š์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ํ•œ ๊ทธ๋ฃน์€ ๋น„ํŠธํ”Œ๋ฆฝ์ด ์ค‘๋ณต ์ œ๊ฑฐ๋œ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์—์„œ ํฐ ๋ฌธ์ œ๋ฅผ ์ผ์œผํ‚ฌ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋น„ํŠธ๋กœํŠธ๋กœ๋ถ€ํ„ฐ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋ฅผ (๊ทธ๋ƒฅ) ๋ณดํ˜ธํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ๊ทธ๋ฃน์€ ์‚ญ์ œ ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ €์žฅ์†Œ๋ฅผ ์—ฌ๋Ÿฌ ์žฅ์•  ๋„๋ฉ”์ธ(์˜ˆ: ๋น„ RAID ๋””์Šคํฌ)์— ๋ถ„์‚ฐํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ๋‘ ๋ชฉํ‘œ ๋ชจ๋‘ Reed-Solomon ์ฝ”๋“œ๋กœ ์ œ๊ณต๋  ์ˆ˜ ์žˆ์ง€๋งŒ ์„œ๋กœ ๋‹ค๋ฅธ ๋งค๊ฐœ๋ณ€์ˆ˜์™€ ์ €์žฅ ๋ ˆ์ด์•„์›ƒ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

๋‚ด 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.

146GB ๋ฐฑ์—… ์ค‘ ํŠธ๋ฆฌ blob์€ 54MB์— ๋ถˆ๊ณผํ•˜๋ฉฐ ์••์ถ•์„ ๊ตฌํ˜„ํ•  ๋•Œ ์›๋ž˜ ๊ณต๊ฐ„์˜ ์•ฝ 1/3๋กœ ์••์ถ•๋ฉ๋‹ˆ๋‹ค.

๋ฐ์ดํ„ฐ blob์—์„œ ํŠธ๋ฆฌ blob์„ ๋ถ„๋ฆฌํ•˜๋ฉด ์„ฑ๋Šฅ์ด ํ–ฅ์ƒ๋ฉ๋‹ˆ๊นŒ?

๋ณต์› ์ค‘์— ์ˆ˜ํ–‰๋˜๋Š” ๋Œ€๋ถ€๋ถ„์˜ ์ž‘์—…์€ ์‹ค์ œ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณต์›ํ•˜๊ธฐ ์ „์— ํŠธ๋ฆฌ Blob์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์ˆ˜ํ–‰๋˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ด๋“ค์„ ๋ณ„๋„์˜ ํŒฉ ํŒŒ์ผ๋กœ ๋ถ„๋ฆฌํ•˜๋ฉด ๋ฐฑ์—… ํŠธ๋ฆฌ๋ฅผ ๊ตฌ๋ฌธ ๋ถ„์„ํ•˜๊ธฐ ์œ„ํ•ด ๋‹ค์šด๋กœ๋“œํ•ด์•ผ ํ•˜๋Š” ๋ฐ์ดํ„ฐ์˜ ์–‘์ด ์ตœ์†Œํ™”๋ฉ๋‹ˆ๋‹ค. ๋‚˜๋ฌด ๋ฉ์–ด๋ฆฌ์˜ ์ž‘์€ ํฌ๊ธฐ๋ฅผ ๊ฐ์•ˆํ•  ๋•Œ ๋ณต์› ํ”„๋กœ์„ธ์Šค๋ฅผ ์‹œ์ž‘ํ•˜๊ธฐ ์ „์— ๋ชจ๋“  ๋‚˜๋ฌด ๋ฉ์–ด๋ฆฌ๋ฅผ ๋‹ค์šด๋กœ๋“œํ•˜๋Š” ๊ฒƒ์ด ๋” ๋น ๋ฅผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฌผ๋ก ; ์ด ๋ถ„ํฌ๋Š” ๋ชจ๋“  ์ €์žฅ์†Œ์— ๋Œ€ํ•ด ๋™์ผํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์ด ๋” ์กฐ์‚ฌํ•  ๊ฐ€์น˜๊ฐ€ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์‹ญ๋‹ˆ๊นŒ?

๋ฐ์ดํ„ฐ blob์—์„œ ํŠธ๋ฆฌ blob์„ ๋ถ„๋ฆฌํ•˜๋ฉด ์„ฑ๋Šฅ์ด ํ–ฅ์ƒ๋ฉ๋‹ˆ๊นŒ?

์•„๋งˆ๋„ ์ด๊ฒƒ์€ ๋‚ด๊ฐ€ ๋ฏธ๋ž˜๋ฅผ ์œ„ํ•ด ์—ผ๋‘์— ๋‘๊ณ  ์žˆ๋Š” ์ตœ์ ํ™” ์ค‘ ํ•˜๋‚˜์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด ์™ธ์—๋„ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ ๋กœ์ปฌ ์บ์‹œ๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์—์„œ ๊ฐ€์ ธ์˜ฌ ํ•„์š”๊ฐ€ ์ „ํ˜€ ์—†๋„๋ก ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๋งŽ์€ ์ž‘์—…์˜ ์†๋„๋ฅผ ํฌ๊ฒŒ ํ–ฅ์ƒ์‹œํ‚ฌ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋ฐ์ดํ„ฐ blob์—์„œ ํŠธ๋ฆฌ blob์„ ๋ถ„๋ฆฌํ•˜๋ฉด ์„ฑ๋Šฅ์ด ํ–ฅ์ƒ๋ฉ๋‹ˆ๊นŒ?

์ด๊ฒƒ์€ ์ด๋ก ์ ์œผ๋กœ prune ์ž‘์—…์„ ๊ฐœ์„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํŠธ๋ฆฌ ๋ฉ์–ด๋ฆฌ์™€ ๋ฐ์ดํ„ฐ ๋ฉ์–ด๋ฆฌ๊ฐ€ ๋ณ„๋„์˜ ํŒฉ ํŒŒ์ผ์— ์žˆ๋Š” ๊ฒฝ์šฐ ์žฌํŒจํ‚น์ด ๋œ ํ•„์š”ํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค(์ด์ „ ํŒฉ ํŒŒ์ผ์„ ์žฌํŒจํ‚นํ•˜๋Š” ๋Œ€์‹  ์ผ๊ด„ ์‚ญ์ œํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•  ์ˆ˜ ์žˆ์Œ).

#842์—์„œ ์ด๋ฏธ ๋ณด๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

gcm ๋Œ€ ctr: http://www.daemonology.net/blog/2009-06-11-cryptographic-right-answers.html

sym ๋Œ€ asym: ์•„์ด๋””์–ด๋Š” "์„ธ์…˜" ํ‚ค๋ฅผ pubkey-encryptํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋งž์Šต๋‹ˆ๊นŒ?

์ง€๊ธˆ์€ ์—ฐ๊ธฐ๋˜์—ˆ์œผ๋ฏ€๋กœ ์ด ๋ฌธ์ œ์—์„œ ์•”ํ˜ธํ™”์— ๋Œ€ํ•ด ๋…ผ์˜ํ•˜์ง€ ๋ง™์‹œ๋‹ค. ๋น„๋Œ€์นญ ์•”ํ˜ธํ™” ํ† ๋ก ๊ณผ ๊ด€๋ จ๋œ ๋ฌธ์ œ๋Š” #187์ž…๋‹ˆ๋‹ค. ๋˜ํ•œ ์‚ฌ์šฉ ์‚ฌ๋ก€๋ฅผ ํ™•์ •ํ•  ๋•Œ๊นŒ์ง€ ๋…ผ์˜๋ฅผ ๋†’์€ ์ˆ˜์ค€์œผ๋กœ ์œ ์ง€ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ ์ €์ˆ˜์ค€ ์•”ํ˜ธํ™”์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ‚ค ํŒŒ์ผ์—์„œ ์‚ฌ์šฉ์ž ์ด๋ฆ„๊ณผ ํ˜ธ์ŠคํŠธ ์ด๋ฆ„์„ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.

์—„์ฒญ๋‚œ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ์œ ์ถœ!
์˜ˆ๋ฅผ ๋“ค์–ด "username":"WorldBank\\JimYongKim" ๋Š” ์ƒ์œ„ ์†Œ์œ ์ž ๋ฅผ ๋ช…ํ™•ํ•˜๊ฒŒ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.

2017๋…„ 1์›”์— ์ฒซ ๋ฒˆ์งธ Windows ๋ฐ”์ด๋„ˆ๋ฆฌ ๊ฐ€ ์ปดํŒŒ์ผ๋œ ์ดํ›„ ์ด๊ฒƒ์ด _์ œ๊ฑฐ_(๋˜๋Š” _์•”ํ˜ธํ™”_)๋˜๊ธฐ๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
๋‹คํ–‰์Šค๋Ÿฝ๊ฒŒ๋„ ๊ฐœ์ธ ์ •๋ณด ๋ณดํ˜ธ์— ๊ด€์‹ฌ์ด ์žˆ๋Š” ์‚ฌ๋žŒ๋“ค์—๊ฒŒ Restic์„ ์—…๋กœ๋“œํ•˜๊ฑฐ๋‚˜ ์ถ”์ฒœํ•˜๊ธฐ ์ „์— ๋ฐฑ์—…์„ ๊ฒ€ํ† ํ–ˆ์Šต๋‹ˆ๋‹ค.

ํŽธ์ง‘: ์‚ฌ์šฉ์ž์˜ ์‹œ๊ฐ„๋Œ€๋„ ์ผ๋ฐ˜ ํ…์ŠคํŠธ๋กœ ์–ธ๊ธ‰๋˜๋ฉฐ ์ด๋Š” ๊ธฐ๋ฐ€ ์›์น™์—๋„ ์œ„๋ฐฐ๋ฉ๋‹ˆ๋‹ค.

Re: SHA3 -- ์ฑ„ํƒํ•  ๊ฐ€์น˜๊ฐ€ ์—†๋Š” ์ด์œ ์— ๋Œ€ํ•œ ํ•œ ๊ฐ€์ง€ ์˜๊ฒฌ(์•„์ง?): https://www.imperialviolet.org/2017/05/31/skipsha3.html

๋”ฐ๋ผ์„œ SHA-3์„ ์‚ฌ์šฉํ•ด์„œ๋Š” ์•ˆ ๋œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. SHA-2์— ๋น„ํ•ด ๊ฐ•๋ ฅํ•œ ์ด์ ์„ ์ œ๊ณตํ•˜์ง€ ์•Š์œผ๋ฉฐ ๋งŽ์€ ๋น„์šฉ์ด ๋“ญ๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ๋ฏฟ์„ ์ˆ˜ ์žˆ๋Š” ์œ ์ผํ•œ ์ฃผ์žฅ์€ ๋ฐฑ์—… ํ•ด์‹œ ๊ธฐ๋Šฅ์ด ์žˆ๋‹ค๋Š” ๊ฒƒ์ด ์ข‹์ง€๋งŒ SHA-256๊ณผ SHA-512๋Š” ๋ชจ๋‘ ์ผ๋ฐ˜์ ์œผ๋กœ ์ง€์›๋˜๋ฉฐ ๋‹ค๋ฅธ ์ฝ”์–ด๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์šฐ๋ฆฌ๋Š” ์ด๋ฏธ ๋‘ ๊ฐœ์˜ ๋ณด์•ˆ ํ•ด์‹œ ํ•จ์ˆ˜๋ฅผ ๋ฐฐํฌํ–ˆ์œผ๋ฉฐ ๋‹ค๋ฅธ ๊ฒƒ์ด ํ•„์š”ํ•˜์ง€ ์•Š๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š” ๊ฒŒ์‹œ๋ฌผ์„ ์ฝ๊ณ  agl์˜ ์ฃผ์žฅ์„ ์ดํ•ดํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์•”ํ˜ธํ™” ํ”„๋กœํ† ์ฝœ์˜ ๋นŒ๋”ฉ ๋ธ”๋ก์ด ์•„๋‹ˆ๋ผ blob์„ (๊ณ ์œ ํ•˜๊ฒŒ) ์‹๋ณ„ํ•˜๊ธฐ ์œ„ํ•ด ํ•ด์‹œ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ํ•ด์‹œ ํ•จ์ˆ˜๋ฅผ ์‚ดํŽด๋ณด๋ ค๋Š” ์ œ ์ƒ๊ฐ์€ ์ฃผ๋กœ SHA-256์ด ํŠนํžˆ ๋กœ์šฐ์—”๋“œ ์‹œ์Šคํ…œ์—์„œ ๊ณ„์‚ฐ ์†๋„๊ฐ€ ๋Š๋ฆฌ๋‹ค๋Š” ๊ฒƒ์ด์—ˆ์Šต๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ํ•ด์‹œ ํ•จ์ˆ˜๋Š” ํ›จ์”ฌ ๋น ๋ฆ…๋‹ˆ๋‹ค(์˜ˆ: blake2).

์ด๊ฒƒ์ด repo ํ˜•์‹์ธ์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์•”ํ˜ธํ™”๋ฅผ ์„ ํƒ ์‚ฌํ•ญ์œผ๋กœ ๋งŒ๋“œ๋Š” ๊ฒƒ์€ ์–ด๋–ป์Šต๋‹ˆ๊นŒ? ์ด๋ฏธ ์•”ํ˜ธํ™”๋œ ๋””์Šคํฌ๊ฐ€ ์žˆ๋Š” ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฑ์—… ์„œ๋ฒ„์— ์ €์žฅ๋  ๋ฐฑ์—…์„ ์ƒ๊ฐํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

@mschiff ํ•ด๋‹น ํ† ๋ก ์€ #1018์„ ์ฐธ์กฐํ•˜์„ธ์š”. ;)

๋ถ€ํ’ˆ ํฌ๊ธฐ๋ฅผ ์˜ต์…˜์œผ๋กœ ๋งŒ๋“œ๋Š” ๊ฒƒ์€ ์–ด๋–ป์Šต๋‹ˆ๊นŒ?
ํ˜„์žฌ ํŒŒ์ผ๋‹น 4-6MB๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ํŒŒ์ผ์€ ์ ์ง€๋งŒ ํฌ๊ธฐ๊ฐ€ ํฌ๋ฉด ์›๊ฒฉ ๋ฐฑ์—…์ด ํ›จ์”ฌ ๋นจ๋ผ์ง‘๋‹ˆ๋‹ค.

@fd0 ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ผ์Šต๋‹ˆ๋‹ค.

ํ˜„์žฌ๋กœ์„œ๋Š” ์†๋„์— ๊ด€์‹ฌ์ด ์—†์Šต๋‹ˆ๋‹ค(restic์€ ์ด๋ฏธ ๋งค์šฐ ๋น ๋ฆ„). ๋”ฐ๋ผ์„œ ์ ์–ด๋„ ์ €์—๊ฒŒ ์ด ํ•ญ๋ชฉ์€ ์šฐ์„  ์ˆœ์œ„๊ฐ€ ๋‚ฎ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๊ฐ€ ๊ฐ„๋‹จํžˆ ์ „ํ™˜ํ•  ์ˆ˜ ์žˆ๋Š” SIMD ์ง€์› ํ”„๋กœ์„ธ์„œ์šฉ์œผ๋กœ ์ตœ์ ํ™”๋œ SHA256 ๋ฒ„์ „๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐ˜๋ฉด์— ์šฐ๋ฆฌ๊ฐ€ ์†๋„๋ฅผ ๋†’์ด๊ธฐ๋กœ ๊ฒฐ์ •ํ•˜๊ณ  ํ•ด์‹œ์— ๋Œ€ํ•ด ๋…ผ์˜ํ•ด์•ผ ํ•  ๋•Œ ๋‚˜๋Š” Keccak(SHA3) ๋˜๋Š” Blake2๋ฅผ ์„ ํ˜ธํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํ›จ์”ฌ ๋” ๋นจ๋ฆฌ.

๋” ๋น ๋ฅด๊ณ  ๋œ CPU ์ง‘์•ฝ์ ์ธ ํ•ด์‹œ ์•Œ๊ณ ๋ฆฌ์ฆ˜(์˜ˆ: Blake2)์— ๋Œ€ํ•œ ๋˜ ๋‹ค๋ฅธ ๊ณ ๋ ค ์‚ฌํ•ญ์€ ์ „์›์— ์—ฐ๊ฒฐ๋˜์–ด ์žˆ์ง€ ์•Š์€ ์ƒํƒœ์—์„œ ๋ฐฑ์—…์„ ์ˆ˜ํ–‰ํ•  ๋•Œ ๋žฉํ†ฑ์—์„œ ๋ฐฐํ„ฐ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰์„ ์ค„์ด๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ฒซ ๋ฒˆ์งธ ๊ฒŒ์‹œ๋ฌผ์— ๋Œ€ํ•œ ๋‹ต๋ณ€:

ํ‚ค ํŒŒ์ผ์—์„œ ์‚ฌ์šฉ์ž ์ด๋ฆ„๊ณผ ํ˜ธ์ŠคํŠธ ์ด๋ฆ„์„ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.

์ด๊ฒƒ์ด ํ‚ค ์ด๋ฆ„์ด๋‚˜ ์ผ์ข…์˜ ์„ค๋ช…์œผ๋กœ ๋Œ€์ฒด๋ฉ๋‹ˆ๊นŒ? ๋‹ค๋ฅธ ํ‚ค๋ฅผ ๊ตฌ๋ณ„ํ•˜๋Š” ์–ด๋–ค ๋ฐฉ๋ฒ•(์˜ˆ: ์ผ๋ถ€ ์‹œ์Šคํ…œ์— ๋Œ€ํ•œ ์•ก์„ธ์Šค ๊ถŒํ•œ์„ ์ทจ์†Œํ•  ๋•Œ ํ‚ค ์ž์ฒด์— ๋Œ€ํ•œ ์•ก์„ธ์Šค ์—†์ด)์ด ํ‚ค ๊ด€๋ฆฌ๋ฅผ ์œ ์šฉํ•˜๊ฒŒ ๋งŒ๋“œ๋Š” ๋ฐ ์œ ์šฉํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๊นŒ?

ํ•œ ๊ฐ€์ง€ ์ƒˆ๋กœ์šด ์ œ์•ˆ: ์–ผ๋ฃฉ, ๋‚˜๋ฌด ๋ฐ ์Šค๋ƒ…์ƒท์— ๋‹ค๋ฅธ ํ‚ค๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์€ ์–ด๋–ป์Šต๋‹ˆ๊นŒ? ์ด๊ฒƒ์€ AFAICS๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์•„๋‹Œ ๋ฐฑ์—… ์Šคํ† ๋ฆฌ์ง€ ์„œ๋ฒ„์—์„œ ์žŠ์–ด๋ฒ„๋ฆฌ๊ณ  ์ •๋ฆฌํ•˜๋Š” ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค. ์Šคํ† ๋ฆฌ์ง€ ์„œ๋ฒ„์— ํŠธ๋ฆฌ ๋ฐ ์Šค๋ƒ…์ƒท ๊ฐœ์ฒด์— ๋Œ€ํ•œ ์•ก์„ธ์Šค ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•˜๋ฉด ์–ด๋–ค ์Šค๋ƒ…์ƒท์— ํ•„์š”ํ•œ ๊ฐœ์ฒด์™€ ๋” ์ด์ƒ ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š” ๊ฐœ์ฒด๋ฅผ ๊ฒฐ์ •ํ•  ์ˆ˜ ์žˆ๋Š” ์ถฉ๋ถ„ํ•œ ์ •๋ณด๊ฐ€ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์Šคํ† ๋ฆฌ์ง€ ์„œ๋ฒ„๊ฐ€ ์†์ƒ๋  ๋•Œ๋งˆ๋‹ค ํŠธ๋ฆฌ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ์‹ค์ œ ํŒŒ์ผ ๋‚ด์šฉ์—๋Š” ์•ก์„ธ์Šคํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

๋ฉ”ํƒ€๋ฐ์ดํ„ฐ์˜ ๋‚˜๋จธ์ง€ ๋ถ€๋ถ„์— ๋Œ€ํ•œ ์•ก์„ธ์Šค๋Š” ํ—ˆ์šฉํ•˜์ง€ ์•Š๊ณ  ํŠธ๋ฆฌ์—์„œ ์ฐธ์กฐํ•˜๋Š” ๊ฐœ์ฒด ID ๋ชฉ๋ก์—๋งŒ ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜์—ฌ ์ด ๊ธฐ๋Šฅ์„ ์•ฝ๊ฐ„ ๋” ๊ฐ•๋ ฅํ•˜๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(๊ทธ๋Ÿฌ๋‚˜ ์ด๋ ‡๊ฒŒ ํ•˜๋ ค๋ฉด ๊ฐ ํŠธ๋ฆฌ์— ๋Œ€ํ•œ ์ถ”๊ฐ€ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๊ฐ€ ํ•„์š”ํ•จ).

์œ„์˜ ์‚ฌํ•ญ์ด ๊ฐ€๋Šฅํ•˜๋‹ค๋ฉด ์ž๋™ํ™”๋œ ์ •๋ฆฌ๋ฅผ ํฌ์ƒํ•˜์ง€ ์•Š๊ณ ๋„ ์“ฐ๊ธฐ ์ „์šฉ/์ถ”๊ฐ€ ์ „์šฉ ์œ ํ˜•์˜ ์Šคํ† ๋ฆฌ์ง€(๋ฐฑ์—…๋œ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋ฐฑ์—…์„ ์‚ญ์ œํ•  ์ˆ˜ ์—†๋Š” ๊ณณ, #784 ์ฐธ์กฐ)๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด ์—ด๋ฆฝ๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ ๋ณด์•ˆ.

๋‚ด ์ด์ „ ์˜๊ฒฌ(๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ ์ „์ฒด ์•ก์„ธ์Šค๊ฐ€ ํ•„์š”ํ•˜์ง€ ์•Š์€ ๊ฐ€์ง€์น˜๊ธฐ)๊ณผ ๊ด€๋ จํ•˜์—ฌ: ์ด๋Š” ๋ฐฑ์—… ํ™•์ธ ์—๋„ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค(๋” ๊ฐ•๋ ฅํ•  ์ˆ˜ ์žˆ์Œ). ํšจ์œจ์„ฑ์„ ์œ„ํ•ด ์ €์žฅ์†Œ ์„œ๋ฒ„์—์„œ ์ €์žฅ์†Œ๋ฅผ ํ™•์ธํ•˜๋Š” ๊ฒƒ์ด ํ•ฉ๋ฆฌ์ ์ž…๋‹ˆ๋‹ค(AFAICS์—์„œ ์ €์žฅ์†Œ๋ฅผ ์›๊ฒฉ์œผ๋กœ ํ™•์ธํ•˜๋ ค๋ฉด ๋ชจ๋“  ์ฝ˜ํ…์ธ ๋ฅผ ์ „์†กํ•ด์•ผ ํ•จ) ๋˜๋Š” ์ง„์ •ํ•œ ์“ฐ๊ธฐ ์ „์šฉ ์ง€์›์„ ๊ตฌํ˜„ํ•  ๋•Œ(https://github.com/ncw/rclone/issues ์ฐธ์กฐ) /2499).

๋˜ํ•œ ์ง„์ •ํ•œ ์“ฐ๊ธฐ ์ „์šฉ ์ ‘๊ทผ ๋ฐฉ์‹์˜ ๊ฒฝ์šฐ ์ฝ์–ด์•ผ ํ•˜๋Š” ํŒŒ์ผ์„ ์ œํ•œํ•˜๋„๋ก ๋ณ€๊ฒฝํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(https://github.com/ncw/rclone/issues/2499#issuecomment-418609301 ์ฐธ์กฐ). ์ €์žฅ์†Œ ํ˜•์‹ ๋ณ€๊ฒฝ์ด ํ•„์š”ํ•œ์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ์—ฌ๊ธฐ์— ํฌํ•จํ•˜๋Š” ๊ฒƒ์ด ์œ ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

์›๊ฒฉ ์„œ๋ฒ„์—์„œ ์ €์žฅ์†Œ๋ฅผ ํ™•์ธํ•˜๊ณ  ์ •๋ฆฌํ•˜๋Š” ๊ฒƒ์€ ์ •๋ง ์ข‹์Šต๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ ํ˜ธ์ŠคํŠธ๋ฅผ ๋ฐฑ์—…ํ•˜๊ธฐ ์œ„ํ•ด restic์„ ์„ค์ •ํ•˜๋Š” ์ค‘์ด๋ฉฐ ํด๋ผ์ด์–ธํŠธ ์„ค์ •์ด ๊ฐ€๋Šฅํ•œ ํ•œ ์‰ฝ๊ณ  ๋ฐฑ์—…์ด ์ •๊ธฐ์ ์œผ๋กœ ์‹คํ–‰๋˜๊ธฐ๋งŒ ํ•˜๋ฉด ๋˜๋„๋ก ์›๊ฒฉ์—์„œ ๋ชจ๋“  ์œ ์ง€ ๊ด€๋ฆฌ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

์Šค๋ƒ…์ƒท ํŒŒ์ผ ํ˜•์‹์— ๋Œ€ํ•œ ๋ช‡ ๊ฐ€์ง€(์„ ํƒ ์‚ฌํ•ญ์ผ ์ˆ˜ ์žˆ์Œ) ์ถ”๊ฐ€ ์‚ฌํ•ญ์— ๋Œ€ํ•ด ๋…ผ์˜ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

  • ์‚ฌ์šฉ๋œ ์ธ๋ฑ์Šค ํŒŒ์ผ ๋ชฉ๋ก ์ถ”๊ฐ€(#1988 ์ฐธ์กฐ)
  • ์‚ฌ์šฉ์ž ์ •์˜ ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ ๊ฐ€๋Šฅ์„ฑ ์ถ”๊ฐ€(์˜ˆ: ์ถ”๊ฐ€ ์„ค๋ช… ๋“ฑ, ์ง€๊ธˆ์€ ๋ฌธ์ œ๋ฅผ ์ฐพ์ง€ ๋ชปํ•จ)
  • ํŒŒ์ผ/๋ธ”๋กญ ์ˆ˜, ์‚ฌ์šฉ๋œ ๊ณต๊ฐ„ ๋“ฑ๊ณผ ๊ฐ™์€ ํ†ต๊ณ„ ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ํ†ต๊ณ„ ํ‘œ์‹œ๊ฐ€ ํ›จ์”ฌ ๋นจ๋ผ์ง€๊ณ  ์ถ”๊ฐ€ ๊ฒ€์‚ฌ๋„ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

ํŒฉ ํŒŒ์ผ ํ˜•์‹์— ๋Œ€ํ•ด ํ—ค๋”๋ฅผ ์™„์ „ํžˆ ์ œ๊ฑฐํ•˜์ง€ ์•Š๋Š” ์ด์œ ๋ฅผ ๋ฌป๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.
์ •๋ณด๋Š” ์ƒ‰์ธ ํŒŒ์ผ์— ์ค‘๋ณต์œผ๋กœ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. ์˜ค๋ฅ˜ ์ˆ˜์ •์„ ์œ„ํ•œ ์ค‘๋ณต์„ฑ์„ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์— ๋Œ€ํ•œ ๋…ผ์˜๊ฐ€ ์žˆ์—ˆ์ง€๋งŒ IMO๋Š” ์ผ๋ฐ˜ repo ํ˜•์‹๊ณผ ๋ถ„๋ฆฌ๋˜์–ด์•ผ ํ•˜๊ณ  ๊ทธ ์œ„์— ์ถ”๊ฐ€๋˜๊ฑฐ๋‚˜ ์ถ”๊ฐ€๋˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฐ„๋‹จํžˆ ๋งํ•ด์„œ ์˜ค๋ฅ˜ ์ˆ˜์ •์„ ์œ„ํ•œ ์ถ”๊ฐ€ ์ •๋ณด๊ฐ€ ํ•„์š”ํ•˜์ง€ ์•Š๊ฑฐ๋‚˜ ์›ํ•˜๋Š” ๊ฒฝ์šฐ ํŒฉ ํ—ค๋” ๋ฐ ์ธ๋ฑ์Šค ํŒŒ์ผ์— ์ •๋ณด๋ฅผ ๋ณต์ œํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ์ธ๋ฑ์Šค ํŒŒ์ผ์€ ์ž‘์—… ์ˆ˜ํ–‰์— ํ•„์š”ํ•˜๋ฉฐ ๋ชจ๋“  ๊ณณ์—์„œ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ํŒฉ ํ—ค๋”๋Š” ๊ฑฐ์˜ ์‚ฌ์šฉ๋˜์ง€ ์•Š์œผ๋ฉฐ, ์ด์ค‘ ํ™•์ธ ๋˜๋Š” ์˜ค๋ฅ˜ ์ˆ˜์ •์„ ์œ„ํ•ด์„œ๋งŒ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

๋˜ ๋‹ค๋ฅธ ์ œ์•ˆ: ์‚ฌ์šฉ์ž ์ด๋ฆ„, ํ˜ธ์ŠคํŠธ ์ด๋ฆ„ ๋ฐ ๊ตฌ์„ฑ ํŒŒ์ผ์˜ ๋‚ด์šฉ์„ ํ‚ค ํŒŒ์ผ์˜ data ์„น์…˜์— ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๊ตฌ์„ฑ ํŒŒ์ผ์„ ์™„์ „ํžˆ ์ œ๊ฑฐํ•˜์‹ญ์‹œ์˜ค.

์ด๋ฏธ ์ œ์•ˆ๋œ ๋Œ€๋กœ ์‚ฌ์šฉ์ž ์ด๋ฆ„๊ณผ ํ˜ธ์ŠคํŠธ๋Š” ์•”ํ˜ธํ™”๋œ ํ˜•์‹์œผ๋กœ๋งŒ ์กด์žฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. KDF ํŒŒ์ƒ ํ‚ค๊ฐ€ ์œ ํšจํ•œ์ง€ ํ™•์ธํ•˜๋ ค๋ฉด ์•”ํ˜ธํ™”๋œ data ์„น์…˜์˜ MAC์„ ํ™•์ธํ•˜๋Š” ๊ฒƒ์œผ๋กœ ์ด๋ฏธ ์ถฉ๋ถ„ํ•ฉ๋‹ˆ๋‹ค.
IMO์—์„œ๋Š” ํ‚ค๋ฅผ ์‹๋ณ„ํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๋ชจ๋“  ์ •๋ณด๋ฅผ ๊ฑฐ๊ธฐ์— ๋‘๋Š” ๊ฒƒ์ด ํ•ฉ๋ฆฌ์ ์ž…๋‹ˆ๋‹ค. config ํŒŒ์ผ์— ์ €์žฅ๋œ ์ •๋ณด ์ถ”๊ฐ€ ATM์€ repo์—์„œ ์ถ”๊ฐ€ ํŒŒ์ผ์„ ์ œ๊ฑฐํ•˜๊ณ  repo ์ดˆ๊ธฐํ™”๋ฅผ ๋” ์‰ฝ๊ฒŒ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

"๋ฉ์ฒญํ•œ" ์งˆ๋ฌธ์— ๋Œ€ํ•ด ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๊ณง ๊ฐœ์„ ๋œ ํ˜•์‹์„ ๋„์ž…ํ•˜๋ ค๋Š” ์ง„์ง€ํ•œ ๋…ธ๋ ฅ์ด ์žˆ์Šต๋‹ˆ๊นŒ? ๋‚˜๋Š” ๋ช‡ ๋…„ ๋™์•ˆ์ด ๋ฌธ์ œ๋ฅผ ๋”ฐ๋ผ ์™”์Šต๋‹ˆ๋‹ค. 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์™€ ๊ฐ™์ด ๋งค์šฐ ๋Š๋ฆฌ๊ฑฐ๋‚˜ ๋น„์šฉ์ด ๋งŽ์ด ๋“œ๋Š” ๋‹ค์šด๋กœ๋“œ๋กœ '์ฝœ๋“œ' ์Šคํ† ๋ฆฌ์ง€์— ๋Œ€ํ•œ ์ง€์›์„ ๋‹จ์ˆœํ™”ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

"์ฝœ๋“œ ์Šคํ† ๋ฆฌ์ง€" ์ง€์›์€ ๋กœ์ปฌ ์บ์‹œ์™€ ๊ฐ™์ด ์ž์ฃผ ์‚ฌ์šฉ๋˜๋Š” ํŒŒ์ผ์„ ์ œํ•œํ•˜๊ณ  ์ด์ค‘ ์ €์žฅํ•˜๋Š” ๋ช‡ ๊ฐ€์ง€ ๋ฏธ์„ธ ์กฐ์ • ๊ฐ€๋Šฅ์„ฑ์„ ์ถ”๊ฐ€ํ•จ์œผ๋กœ์จ ํ˜„์žฌ์˜ repo ํ˜•์‹์œผ๋กœ ์ด๋ฏธ ๋‹ฌ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ๋งํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ์ฐธ์กฐ #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
์ฒซ ๋ฒˆ์งธ ์ฃผ์„์˜ ๊ฒฐ๊ณผ๋Š” ๋˜ํ•œ ์ด ๋‘ ๊ฐ€์ง€ ์œ ํ˜•์˜ ์–ผ๋ฃฉ์„ ํ˜ผํ•ฉํ•ด๋„ ์˜๋ฏธ ์žˆ๋Š” ๋ฐฉ์‹์œผ๋กœ ํŒŒ์ผ ํฌ๊ธฐ๋ฅผ ๊ฐ€๋ฆฌ์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.

๊ด€๋ จ ํฌ๋Ÿผ ๊ฒŒ์‹œ๋ฌผ:
https://forum.restic.net/t/feature-using-an-index-for-restic-find/1773

@cfbao ๋‹น์‹ ์ด ์–ธ๊ธ‰ํ•˜๋Š” ์ฃผ์„์€ ํ•˜๋‚˜์˜ ๋ฐ์ดํ„ฐ ํŒŒ์ผ(ํŒฉ) ๋‚ด์—์„œ ํŠธ๋ฆฌ์™€ ๋ฐ์ดํ„ฐ ๋ธ”๋กญ์„ ํ˜ผํ•ฉํ•˜๋Š” ๊ฒƒ์— ๊ด€ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์„ ๋ถ„๋ฆฌํ•˜๋ฉด ์บ์‹œ ์ฒ˜๋ฆฌ๋ฅผ ํ™œ์„ฑํ™”ํ•˜๋Š” ๋ฐ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๋˜ํ•œ restic ๋‚ด์—์„œ ์ด๋ฏธ ๋ณ€๊ฒฝ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ๋‹ค๋ฅธ ๋””๋ ‰ํ† ๋ฆฌ์— ํŠธ๋ฆฌ ๋ฐ ๋ฐ์ดํ„ฐ BLOB์„ ์ €์žฅ ํ•˜๋Š” ๊ฒƒ์˜ ์ด์ ์€ ์—ฌ์ „ํžˆ โ€‹โ€‹์—†์Šต๋‹ˆ๋‹ค. ์‚ฌ์šฉ ์‚ฌ๋ก€๋ฅผ ์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? (IMO ์ฐพ๊ธฐ ํฌ๋Ÿผ ์ฃผ์ œ๋Š” ๊ด€๋ จ์ด ์—†์Šต๋‹ˆ๋‹ค. ๊ฑฐ๊ธฐ์—์„œ ๋‹ต๋ณ€ํ•ด ๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค.)

๊ทธ๋Ÿฌ๋‚˜ ๋ณ„๋„์˜ ์ธ๋ฑ์Šค ํŒŒ์ผ(์˜ˆ: "index-data" ๋ฐ "index-tree" ๋””๋ ‰ํ† ๋ฆฌ)์—์„œ ํŠธ๋ฆฌ ๋ฐ ๋ฐ์ดํ„ฐ blob ํ•ญ๋ชฉ์„ ๋ถ„๋ฆฌํ•˜๋ฉด ์ผ๋ถ€ ๊ฐœ์„ ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

ํŠธ๋ฆฌ ๋ธ”๋กญ์€ ์ด๋ฏธ ๋ณ„๋„์˜ ํŒฉ ํŒŒ์ผ์— ์ €์žฅ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค(์บ์‹œ์™€ ํ•จ๊ป˜ ๋„์ž…๋จ).
๋‹ค๋ฅธ ๋””๋ ‰ํ† ๋ฆฌ์— ์“ฐ๊ธฐ๋งŒ ํ•˜๋ฉด ๋‹ค์šด๋กœ๋“œ ์†๋„๊ฐ€ ๋งค์šฐ ๋Š๋ฆฐ ์Šคํ† ๋ฆฌ์ง€(Amazon Glacier ํ‘œ์ค€์˜ ๊ฒฝ์šฐ 3-5์‹œ๊ฐ„)์— ๋Œ€ํ•œ ์ง€์›์„ ๊ฐœ์„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ(์ผ๋ฐ˜ S3์˜ ์ธ๋ฑ์Šค+์Šค๋ƒ…์ƒท+ํŠธ๋ฆฌ, Glacier์˜ ๋ฐ์ดํ„ฐ)๋ฅผ ์ €์žฅํ•˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

2504๋Š” ๊ทธ๊ฒƒ์„ ์•ฝ๊ฐ„ ๊ฐœ์„ ํ•˜์ง€๋งŒ '๋กœ์ปฌ ์บ์‹œ'์— ์˜์กดํ•˜๊ฑฐ๋‚˜ ์บ์‹œ๋ฅผ ์ฑ„์šฐ๊ธฐ ์œ„ํ•ด ๋งŽ์ด ๊ธฐ๋‹ค๋ฆฌ๋Š” ์•„์ด๋””์–ด๋ฅผ ์ข‹์•„ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ผ๋ฐ˜ S3 ๋˜๋Š” ๋‹ค๋ฅธ ์žฅ์†Œ์— tree+index+snapshots ๋ฅผ ์ €์žฅํ•˜์ง€๋งŒ ๋ฐ์ดํ„ฐ๋ฅผ ๋”ฅ ์•„์นด์ด๋ธŒ์— ์ €์žฅํ•˜๋Š” ๋ฆฌ๋ฒ„์Šค ํ”„๋ก์‹œ๋ฅผ ๊ฐ–๋Š” ๊ฒƒ์ด ํ›จ์”ฌ ๋” ์ข‹์Šต๋‹ˆ๋‹ค.
์–ด์จŒ๋“  restic ๋ฅผ ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉํ•  ์ˆ˜๋Š” ์žˆ์ง€๋งŒ ๋ช‡ ๊ฐ€์ง€ ์ œํ•œ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ผ๋ถ€ ํ˜•์‹ ๋ณ€๊ฒฝ์€ ์ƒํ™ฉ์„ ๊ฐœ์„ /๋‹จ์ˆœํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

restic find ์ฝ”๋“œ์—์„œ ๋‚ด๊ฐ€ ๋ณด๋Š” ํ•œ @cfbao ๋Š” ์ด์ ์„ ์–ป์ง€ ๋ชปํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ์ด๋ฏธ ์Šค๋ƒ…์ƒท์„ ํ†ตํ•ด ์ด๋™ํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ restic ls <all-snapshots> | grep something ์™€ ๊ฑฐ์˜ ๋™์ผํ•ฉ๋‹ˆ๋‹ค.

@dionorgua
๋ฐ์ดํ„ฐ ํŒฉ์„ ์ œ์™ธํ•œ ๋ชจ๋“  ํ•ญ๋ชฉ์ด ์บ์‹œ๋˜๋Š” "์ถ”๊ฐ€" ์บ์‹œ๋กœ ์ž„์˜์˜ ์ €์žฅ์†Œ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ์•„์ด๋””์–ด๊ฐ€ ๋งˆ์Œ์— ๋“ญ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ๋ ˆ์ด์•„์›ƒ์„ ๋ณ€๊ฒฝํ•  ํ•„์š”๊ฐ€ ์—†์œผ๋ฉฐ IMO๋Š” ํ›จ์”ฌ ๋” ์œ ์—ฐํ•ฉ๋‹ˆ๋‹ค.
์ €๋Š” ์ด๋ฏธ ์ด ์ž‘์—…์„ ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. #2516, ๋งˆ์ง€๋ง‰ ๋Œ“๊ธ€๋„ ์ฐธ์กฐํ•˜์„ธ์š”.

์–ด๋ฆฌ์„์€ ์ƒ๊ฐ์ผ ์ˆ˜๋„ ์žˆ์ง€๋งŒ borg ๋˜๋Š” kopia์™€ ํ˜ธํ™˜๋˜๋Š” ํ˜•์‹์€ ์–ด๋–ป์Šต๋‹ˆ๊นŒ?

@aawsome

๋‹น์‹ ์ด ์–ธ๊ธ‰ํ•˜๋Š” ์ฃผ์„์€ ํ•˜๋‚˜์˜ ๋ฐ์ดํ„ฐ ํŒŒ์ผ(ํŒฉ) ๋‚ด์—์„œ ํŠธ๋ฆฌ์™€ ๋ฐ์ดํ„ฐ ๋ธ”๋กญ์„ ํ˜ผํ•ฉํ•˜๋Š” ๊ฒƒ์— ๊ด€ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ง„์‹ค. ๋‚ด ์ž˜๋ชป์ด์•ผ. ๋„ค, ์ œ๊ฐ€ ์‹ ๊ฒฝ ์“ฐ๋Š” ๊ฒƒ์€ ์ด๊ฒƒ๋ฟ์ž…๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ๋˜ํ•œ restic ๋‚ด์—์„œ ์ด๋ฏธ ๋ณ€๊ฒฝ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์ด ๋ณ€๊ฒฝ๋œ PR/๋ฒ„์ „์„ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ? ๋งˆ์ง€๋ง‰์œผ๋กœ ๋‚ด ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋ฅผ ํ™•์ธํ–ˆ์„ ๋•Œ ๋™์ผํ•œ ํŒฉ ํŒŒ์ผ์— ๋ฐ์ดํ„ฐ์™€ ํŠธ๋ฆฌ ๋ธ”๋กญ์ด ํ˜ผํ•ฉ๋œ ๊ฒƒ์„ ๋ฐœ๊ฒฌํ–ˆ์Šต๋‹ˆ๋‹ค. ์–ด๋–ค ๋ฐฉ๋ฒ•์œผ๋กœ๋“  ๋‚ด ์ €์žฅ์†Œ๋ฅผ ๋” ์ž˜ ๋ถ„๋ฆฌ๋˜๋„๋ก ๋ณ€ํ™˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

๋‹ค๋ฅธ ๋””๋ ‰ํ„ฐ๋ฆฌ์— ํŠธ๋ฆฌ ๋ฐ ๋ฐ์ดํ„ฐ Blob์„ ์ €์žฅํ•˜๋Š” ๊ฒƒ์˜ ์ด์ ์€ ์—ฌ์ „ํžˆ โ€‹โ€‹์—†์Šต๋‹ˆ๋‹ค. ์‚ฌ์šฉ ์‚ฌ๋ก€๋ฅผ ์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

๋‚˜๋Š” ์•„๋ฌด ์ƒ๊ฐ์ด ์—†๋‹ค. ์•ž์„œ ์–ธ๊ธ‰ํ–ˆ๋“ฏ์ด ๋‚˜๋Š” ์ด๊ฒƒ์— ๋Œ€ํ•ด ๋ณ„๋กœ ์‹ ๊ฒฝ ์“ฐ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.


@dionorgua

๋‚ด๊ฐ€ ์ฝ”๋“œ์—์„œ ๋ณด๋Š” ํ•œ restic find๋Š” ์ด๊ฒƒ์˜ ์ด์ ์„ ์–ป์ง€ ๋ชปํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ์ด๋ฏธ ์Šค๋ƒ…์ƒท์„ ํ†ตํ•ด ์ด๋™ํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ restic ls์™€ ๊ฑฐ์˜ ๋™์ผํ•ฉ๋‹ˆ๋‹ค.| ๊ทธ๋ ™ ๋ญ”๊ฐ€.

๋ฐ์ดํ„ฐ blob์—์„œ ํŠธ๋ฆฌ blob์„ ๋ถ„๋ฆฌํ•˜๋ฉด ์ฐพ๊ธฐ์— ํ•„์š”ํ•œ API ํ˜ธ์ถœ ์ˆ˜๊ฐ€ ์ค„์–ด๋“ค์ง€ ์•Š์Šต๋‹ˆ๊นŒ? ์ง‘์ค‘๋˜๋ฉด ํŠธ๋ฆฌ ๋ฉ์–ด๋ฆฌ๊ฐ€ ํฌํ•จ๋œ ํŒฉ ํŒŒ์ผ์˜ ์ˆ˜๊ฐ€ ์ค„์–ด๋“ค๊ณ  restic์€ ๋งŽ์€ ํŒฉ ํŒŒ์ผ์—์„œ ๋งŽ์€ ์„ธ๊ทธ๋จผํŠธ๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ๋Œ€์‹  ๋” ์ ์€ ์ˆ˜์˜ ์ „์ฒด ํŒŒ์ผ์„ ๋‹ค์šด๋กœ๋“œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ์ƒ๋Œ€์ ์œผ๋กœ ๋Š๋ฆฌ๊ณ  ์†๋„ ์ œํ•œ์ด ๋” ์—„๊ฒฉํ•œ ๋ฐฑ์—”๋“œ(์˜ˆ: Google ๋“œ๋ผ์ด๋ธŒ)์— ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.

์–ด๋–ป๊ฒŒ ํ•ด์„œ๋“  ๋‚ด repo๋ฅผ ๋” ๋‚˜์€ ๊ฒƒ์œผ๋กœ ๋ณ€ํ™˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๋ถ„๋ฆฌ?

์ตœ์‹  ๋ฒ„์ „์˜ restic์„ ์‚ฌ์šฉํ•˜์—ฌ 'prune'์„ ์‹คํ–‰ํ•˜๋ฉด ์ด๋Ÿฌํ•œ ํ˜ผํ•ฉ ํŒฉ์„ ๋‹ค์‹œ ๋นŒ๋“œํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
'prune'์˜ ์‹ค์ œ ๊ตฌํ˜„์€ ์›๊ฒฉ ์ €์žฅ์†Œ์— ๋Œ€ํ•ด ๋งŽ์€ ํŠธ๋ž˜ํ”ฝ์„ ์ƒ์„ฑํ•œ๋‹ค๋Š” ์ ์— ์œ ์˜ํ•˜์‹ญ์‹œ์˜ค. #2718์˜ ์‹คํ—˜์ ์ธ ์žฌ๊ตฌํ˜„์„ ํ†ตํ•ด ํŠธ๋ž˜ํ”ฝ์„ ์ตœ์†Œํ™”ํ•˜๋ฉด์„œ ํ˜ผํ•ฉ ํŒฉ๋งŒ ์žฌํฌ์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฐ์ดํ„ฐ blob์—์„œ ํŠธ๋ฆฌ blob์„ ๋ถ„๋ฆฌํ•˜์ง€ ์•Š์œผ๋ฉด 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 ๋“ฑ๊ธ‰