์ ์ฅ์ ํ์์ ๋ฒ์ 2๋ก ๋ณ๊ฒฝํ๋ ๊ฒ์ ๋ํ ๋ ผ์๋ฅผ ์์ํ๊ณ ์ถ์ต๋๋ค. ์ด๊ฒ์ ์์ถ์ ์ง์ํ๊ธฐ ์ํด ํ์ํฉ๋๋ค(#21 ์ฐธ์กฐ).
์๋ก์ด ์ ์์ด ๋ค์ด์ค๋ฉด ๋ค์ ๋ชฉ๋ก์ด ์ ๋ฐ์ดํธ๋ฉ๋๋ค.
์๋ฝ๋จ:
README
ํ์ผ์ ์ ๋ฆฌํฌ์งํ ๋ฆฌ์ ์ถ๊ฐํฉ๋๋ค.๋ ผ์ ์์ :
์ฐ๊ธฐ/๊ฑฐ๋ถ:
๋ค๋ฅธ ๊ฑด ์๋์?
ํค๋๋ฅผ ์์ผ๋ก ์ฎ๊ธฐ๋ ๊ฑด ์ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค. ์ด๊ฒ์ด ํ์ฌ ๊ตฌํ๋์ด ์์ง ์๋ค๋ ๊ฒ์ ์๊ณ ์์ง๋ง ๋ก์ปฌ ์ ์ฅ์์ ๊ฒฝ์ฐ ๋์ ํค๋๊ฐ ์๋ค๋ ๊ฒ์ ํ์ผ ์ฌ๋ณธ์ ์ ์ฅํ ์ ์๋ค๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค.
ํฅ๋ฏธ๋ก์ด ์ , ๊ฐ์ฌํฉ๋๋ค. ๋ญ๊ฐ ๋ ๋ซ๋ค๋ ํ๋จ์ ์์ง ์ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค. ์๊ฒฉ ๋ฐฑ์๋์ ๊ฒฝ์ฐ (๋ฐฑ์๋ ์ธํฐํ์ด์ค๋ฅผ ์ฝ๊ฐ ๋ณ๊ฒฝํ ํ) 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(๋๋ 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 ์ ๊ฐ์ง๊ณ ๋์๊ณ ํฉ ํ์ผ์ ๋์ ์ค๋ฅ ์์ ์ฝ๋๋ฅผ ๋ ์ฝ๊ฒ ์ถ๊ฐํ ์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค(ํฉ ํค๋๋ฅผ ํ์ผ์ ์์ ๋ถ๋ถ์ผ๋ก ์ด๋ํ๋ฉด ). ํ์ง๋ง ๋ ๊ฐ์ง ๋จ์ ์ด ์์ต๋๋ค.
์๊ฐ?
๊ทธ๋ ๋ค๋ฉด ๋ฐ์ดํฐ ๋ก๋ ๋ณดํธ๋ ์ ํ ์ฌํญ์ด ๋ ์ ์์ต๋๊น? ๋๋ ํฌ๊ธฐ ์ฆ๊ฐ๊ฐ ํ๊ณ๋ณด๋ค ๋ ํฌ๋ค๊ณ ์๊ฐํฉ๋๋ค (๋ค๋ฅธ ์ฌ๋๋ค์๊ฒ๋ ํ๋ฅญํ ๊ธฐ๋ฅ์ด๋ผ๊ณ ์๊ฐํ์ง๋ง!)
ECC๊ฐ ์์ถ๊ณผ ๊ฒฐํฉ๋ ๋ ์ ์ฅ์๊ฐ ์ผ๋ง๋ ๋ ํฐ์ง(๋๋ ๋ ์์์ง?) ๋๋์ ์ป์ ์ ์๋๋ก ์ด๊ฒ์ผ๋ก ์กฐ๊ธ ํ๋ ์ดํ๊ฒ ์ต๋๋ค. ๋ ์ข ๋ฅ์ ์ฝ๋๋ฅผ ์ถ๊ฐํ ์ ์์ต๋๋ค. ํ๋๋ ํฉ ํค๋์ฉ์ด๊ณ ๋ค๋ฅธ ํ๋๋ ๋ฐ์ดํฐ์ฉ(์ ํ ์ฌํญ์ผ ์ ์์)์ ๋๋ค.
์ฌ์ฉ์ ์ด๋ฆ ๋ฐ ํธ์คํธ ์ญ์
์ข์ ์๊ฐ ๊ฐ์ต๋๋ค. ์ ๋ณด๋ฅผ ์ ์งํ๋ ค๋ฉด ๋ง์คํฐ ํค์ ๋์ผํ ๋ฐฉ์์ผ๋ก ๋ณ๋์ ์ํธํ๋ ํ๋์ ์ ๋ณด๋ฅผ ์ถ๊ฐํ ์ ์์ต๋๋ค.
ECC: ํ์ผ ํฌ๊ธฐ๊ฐ ~14-30% ์ฆ๊ฐํฉ๋๋ค.
ํฉ ํ์ผ ์์ฒด์ ECC๋ฅผ ํฌํจํ๋ ๊ฒ์ ์ข์ ์๊ฐ์ด ์๋๋ผ๊ณ ์๊ฐํฉ๋๋ค. ์ผ๋ฐ์ ์ธ ๋ณต์ ์๋๋ฆฌ์ค์์๋ ์ฌ์ฉ๋์ง ์์ผ๋ฉฐ ํฉ ํ์ผ์ด ์์๋ ๊ฒฝ์ฐ์๋ง ์ฌ์ฉ๋ฉ๋๋ค.
ํจ๋ฆฌํฐ ๋ฐ์ดํฐ๋ฅผ ๋ณ๋์ ๋๋ ํ ๋ฆฌ์ ๋๋ ๊ฒ์ด ์ข์ต๋๋ค.
repo/data/1e/1ef7267...
repo/parity/1e/1ef7267...
๊ตฌํ ๋ฐฉ๋ฒ์ ๊ด๊ณ์์ด; ์์ถ ๋ฐ ์ํธํ ๊ณ์ธต์ด ๋ง๊ธฐ ๋๋ฌธ์ ์ผ์ข ์ 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์ ์ค์ ํ๋ ์ค์ด๋ฉฐ ํด๋ผ์ด์ธํธ ์ค์ ์ด ๊ฐ๋ฅํ ํ ์ฝ๊ณ ๋ฐฑ์ ์ด ์ ๊ธฐ์ ์ผ๋ก ์คํ๋๊ธฐ๋ง ํ๋ฉด ๋๋๋ก ์๊ฒฉ์์ ๋ชจ๋ ์ ์ง ๊ด๋ฆฌ ์์ ์ ์ํํ๊ณ ์ถ์ต๋๋ค.
์ค๋ ์ท ํ์ผ ํ์์ ๋ํ ๋ช ๊ฐ์ง(์ ํ ์ฌํญ์ผ ์ ์์) ์ถ๊ฐ ์ฌํญ์ ๋ํด ๋ ผ์ํ๊ณ ์ถ์ต๋๋ค.
ํฉ ํ์ผ ํ์์ ๋ํด ํค๋๋ฅผ ์์ ํ ์ ๊ฑฐํ์ง ์๋ ์ด์ ๋ฅผ ๋ฌป๊ณ ์ถ์ต๋๋ค.
์ ๋ณด๋ ์์ธ ํ์ผ์ ์ค๋ณต์ผ๋ก ํฌํจ๋ฉ๋๋ค. ์ค๋ฅ ์์ ์ ์ํ ์ค๋ณต์ฑ์ ์ถ๊ฐํ๋ ๊ฒ์ ๋ํ ๋
ผ์๊ฐ ์์์ง๋ง IMO๋ ์ผ๋ฐ repo ํ์๊ณผ ๋ถ๋ฆฌ๋์ด์ผ ํ๊ณ ๊ทธ ์์ ์ถ๊ฐ๋๊ฑฐ๋ ์ถ๊ฐ๋์ง ์์ ์ ์์ต๋๋ค.
๊ฐ๋จํ ๋งํด์ ์ค๋ฅ ์์ ์ ์ํ ์ถ๊ฐ ์ ๋ณด๊ฐ ํ์ํ์ง ์๊ฑฐ๋ ์ํ๋ ๊ฒฝ์ฐ ํฉ ํค๋ ๋ฐ ์ธ๋ฑ์ค ํ์ผ์ ์ ๋ณด๋ฅผ ๋ณต์ ํ ํ์๊ฐ ์์ต๋๋ค. ์ธ๋ฑ์ค ํ์ผ์ ์์ ์ํ์ ํ์ํ๋ฉฐ ๋ชจ๋ ๊ณณ์์ ์ฌ์ฉ๋ฉ๋๋ค. ํฉ ํค๋๋ ๊ฑฐ์ ์ฌ์ฉ๋์ง ์์ผ๋ฉฐ, ์ด์ค ํ์ธ ๋๋ ์ค๋ฅ ์์ ์ ์ํด์๋ง ์ฌ์ฉ๋ฉ๋๋ค.
๋ ๋ค๋ฅธ ์ ์: ์ฌ์ฉ์ ์ด๋ฆ, ํธ์คํธ ์ด๋ฆ ๋ฐ ๊ตฌ์ฑ ํ์ผ์ ๋ด์ฉ์ ํค ํ์ผ์ data
์น์
์ ์ถ๊ฐํฉ๋๋ค. ๋ฐ๋ผ์ ๊ตฌ์ฑ ํ์ผ์ ์์ ํ ์ ๊ฑฐํ์ญ์์ค.
์ด๋ฏธ ์ ์๋ ๋๋ก ์ฌ์ฉ์ ์ด๋ฆ๊ณผ ํธ์คํธ๋ ์ํธํ๋ ํ์์ผ๋ก๋ง ์กด์ฌํด์ผ ํฉ๋๋ค. KDF ํ์ ํค๊ฐ ์ ํจํ์ง ํ์ธํ๋ ค๋ฉด ์ํธํ๋ data
์น์
์ MAC์ ํ์ธํ๋ ๊ฒ์ผ๋ก ์ด๋ฏธ ์ถฉ๋ถํฉ๋๋ค.
IMO์์๋ ํค๋ฅผ ์๋ณํ๋ ๋ฐ ํ์ํ ๋ชจ๋ ์ ๋ณด๋ฅผ ๊ฑฐ๊ธฐ์ ๋๋ ๊ฒ์ด ํฉ๋ฆฌ์ ์
๋๋ค. config
ํ์ผ์ ์ ์ฅ๋ ์ ๋ณด ์ถ๊ฐ ATM์ repo์์ ์ถ๊ฐ ํ์ผ์ ์ ๊ฑฐํ๊ณ repo ์ด๊ธฐํ๋ฅผ ๋ ์ฝ๊ฒ ๋ง๋ญ๋๋ค.
"๋ฉ์ฒญํ" ์ง๋ฌธ์ ๋ํด ์ฃ์กํฉ๋๋ค. ํ์ง๋ง ๊ณง ๊ฐ์ ๋ ํ์์ ๋์ ํ๋ ค๋ ์ง์งํ ๋ ธ๋ ฅ์ด ์์ต๋๊น? ๋๋ ๋ช ๋ ๋์์ด ๋ฌธ์ ๋ฅผ ๋ฐ๋ผ ์์ต๋๋ค. restic์ ํ์ฌ ๋์ฉ๋ ๋ฐ์ดํฐ ์ธํธ๋ ์ค๋ ์ท์ด ๋ง๊ณ ๋ฉ๋ชจ๋ฆฌ๊ฐ ๋ง์ด ํ์ํ ๊ฒฝ์ฐ์๋ ์ ์๋ํ์ง ์์ต๋๋ค. ์์ถ ๋ถ์กฑ๊ณผ JSON ์ธ์ฝ๋ฉ ๋ฉํ๋ฐ์ดํฐ์ ํฐ ์ค๋ฒํค๋๊ฐ restic์ ํฐ ๋ฌธ์ ์ธ ๊ฒ ๊ฐ์ต๋๋ค. "์๋ฒฝํจ"์ ๋ฌ์ฑํด์ผ ํ๋ค๋ ์ธ์ ๋๋ฌธ์ ๋ ธ๋ ฅ์ด ์ค๋จ๋ ๊ฒ์ ์๋๊น์?
๋๋ ๋ํ ๋ฏธ๋๊ฐ ๋ฌด์์ ๊ฐ์ ธ์ฌ์ง ๊ด์ฌ์ด ์์ต๋๋ค. ํนํ ๋น๋์นญ ์ํธํ ๋ฐ ์์ถ์์.
๊ทธ๊ฑด ๊ทธ๋ ๊ณ , ์๋ก์ด ํด์ ํจ์์ ๊ฒฝ์ฐ ๋งค์ฐ ์๋กญ๊ณ ๋งค์ฐ ๋น ๋ฅธ blake3๋ ์์ต๋๋ค. https://github.com/BLAKE3-team/BLAKE3
ํด์ ํจ์์ ๋ณ๊ฒฝ์ ๋ํด ์์ง ๊ฒฐ์ ์ด ๋ด๋ ค์ง์ง ์์๋ค๋ฉด ํฅ๋ฏธ๋ก์ธ ์ ์์ต๋๋ค.
repo.v2์ ๋ํ ๋ช ๊ฐ์ง ์ถ๊ฐ ์์ด๋์ด:
์ด๊ฒ์ 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์ ๋ฐ์ดํฐ)๋ฅผ ์ ์ฅํ๋ ๊ฒ๊ณผ ๊ฐ์ต๋๋ค.
์ผ๋ฐ 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
}
]
}, [...]
]
}
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
์: ํฉ ํค๋๋ ํฉ์ ๋ด์ฉ์ ์ค๋ช ํ๊ณ ์ถ์ถ ํ๋ก์ธ์ค์ ์์๋๋ ์ฌํญ์ ์๋ ค์ค๋๋ค(์์ถ ์๊ณ ๋ฆฌ์ฆ, ์์ถ๋์ง ์์ ํฌ๊ธฐ ๋ฐ ๋์ค์ ์ํธํ์ ์ฌ์ฉ๋ ํค์ ๊ฐ์ ๊ธฐํ ์์ฑ ์ธก๋ฉด์์). restic์ด ํฉ ํค๋์ ๋ชจ๋ blob์ ์กฐํํ ํ์๊ฐ ์๋๋ก ๋์ ๋ ์ธ๋ฑ์ค์์๋ ๋์ผํ ์ฌํญ์ ํ์ํด์ผ ํฉ๋๋ค. ๋ฐ๋ผ์ ๋์ผํ ์ ๋ณด๊ฐ ๊ฑฐ๊ธฐ์ ์์ด์ผ ํฉ๋๋ค.
์ ๋ ์ด ์์ด๋์ด๊ฐ ๋ง์์ ๋ค์ง ์์ต๋๋ค. ํ์ผ ํ์์ด ๋ ๋ณต์กํด์ง๋๋ค. Blob์ ์์ ๋ถ๋ถ๊ณผ ํค๋์ ๋ ๊ฐ์ง ๋ค๋ฅธ ์์น์ ์ ์ด ์ ๋ณด๊ฐ ์์ต๋๋ค. ํค๋๋ ์ ํํ ์ ์ด ์ ๋ณด๋ฅผ ํฌํจํ๋ ์์น์ ๋๋ค.
์์น์ ์ผ๋ก ๋์ํ์ง๋ง ํ์ผ ์์คํ ์ ๋งค์ฐ ๋ณต์กํ๊ณ ์ค๋ฅ ์ ํ(์: ๋งค์ฒด์ ์ฝ๊ธฐ/์ฐ๊ธฐ ์ค๋ฅ)๋ ์ข ์ข ์ฐจ์ ์ฑ ์ ๋๋ค. ๊ณ ๋๋ก ๊ฐ์๋(์: ์ค๋ณต ์ ๊ฑฐ์ ๊ด์ ์์) ๋ฐฑ์ ๋ฐ์ดํฐ์ ๊ฒฝ์ฐ ๋ค๋ฅธ ์ค๋ฅ ์์ ๊ณ์ธต์ ์ถ๊ฐ(๋๋ ์ถ๊ฐ ์ ์)ํ๋ ๊ฒ์ด ์ข์ต๋๋ค.