Restic: ์••์ถ• ๊ตฌํ˜„

์— ๋งŒ๋“  2014๋…„ 11์›” 15์ผ  ยท  167์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: restic/restic

์ด ๋ฌธ์ œ๋Š” ์••์ถ• ๊ตฌํ˜„ ์š”์ฒญ๊ณผ ๊ด€๋ จ๋œ ํ† ๋ก  ๋ฐ ๊ธฐํƒ€ ๋ฌธ์ œ/PR์„ ์ถ”์ ํ•˜๊ธฐ ์œ„ํ•œ ์ถ”์  ๋ฌธ์ œ ์ž…๋‹ˆ๋‹ค.

๋‹ค์Œ ๋ฌธ์ œ/PR์ด ์ด ์ฃผ์ œ์™€ ๊ด€๋ จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค(๋”ฐ๋ผ์„œ ์ด ์ฃผ์ œ์— ์ฐฌ์„ฑํ•˜์—ฌ ๋งˆ๊ฐ๋  ์ˆ˜ ์žˆ์Œ).

  • ํ™๋ณด #2441
backend backup feature suggestion tracking

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

์••์ถ•์„ ์ถ”๊ฐ€ํ•˜๋Š” ๋ฌธ์ œ์— ๋Œ€ํ•ด์„œ๋Š” ์ถฉ๋ถ„ํ•œ ๋…ผ์˜๊ฐ€ ์žˆ์—ˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋งค์šฐ ๊ธฐ๋Œ€๋˜๋Š” ๊ธฐ๋Šฅ์ž„์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ƒˆ ์•„์นด์ด๋ฒ„ ์ฝ”๋“œ(#1494 ์ฐธ์กฐ)๋ฅผ ์™„๋ฃŒํ•œ ํ›„ ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

๋” ์ด์ƒ ์˜๊ฒฌ์„ ์ถ”๊ฐ€ํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค. ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

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

์ด๊ฒƒ์„ ๊ตฌํ˜„ํ•  ๋•Œ ๋ฒค์น˜๋งˆํฌ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ  ํŠนํžˆ -benchmem ๋ฐ benchcmp๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰์„ ์‚ดํŽด๋ณด์‹ญ์‹œ์˜ค!

lz4, lzo, lzma, null. bz2๋Š” ๋‹ค์†Œ ๋Š๋ฆฝ๋‹ˆ๋‹ค.

snappy๋Š” ์ ๋‹นํ•œ ์••์ถ•์œผ๋กœ ๋น ๋ฆ…๋‹ˆ๋‹ค.

์••์ถ•์ด ์ฒญํฌ๋ณ„๋กœ ์ˆ˜ํ–‰๋˜๋Š” ๊ฒฝ์šฐ ์›Œํ„ฐ๋งˆํ‚น/์ง€๋ฌธ ๊ณต๊ฒฉ์— ๋Œ€ํ•œ ์ผ๋ฐ˜ ๋ฐฑ์—…์ด ์—ด๋ ค ์žˆ์ง€ ์•Š๋„๋ก ์ฃผ์˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ๋ณธ์งˆ์ ์œผ๋กœ CDC ์ค‘๋ณต ์ œ๊ฑฐ ํ”„๋กœ์„ธ์Šค์˜ ์ง€๋ฌธ ์ฑ„์ทจ์™€ ๊ด€๋ จํ•˜์—ฌ ๋…ผ์˜ํ•œ ๊ฒƒ๊ณผ ๋™์ผํ•œ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค.
"์ˆœ์ง„ํ•œ" CDC๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๊ณต๊ฒฉ์ž๊ฐ€ ๊ฐœ๋ณ„ ๋ธ”๋ก์˜ ํฌ๊ธฐ๋ฅผ ๊ด€์ฐฐํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ "์•Œ๋ ค์ง„ ์ผ๋ฐ˜ ํ…์ŠคํŠธ" ํŒŒ์ผ์ด ๋ฐฑ์—… ๋‚ด์— ์กด์žฌํ•˜๋Š”์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฒญํฌ ๊ธธ์ด.
์•ž์„œ ๋…ผ์˜ํ•œ ๋ฐ”์™€ ๊ฐ™์ด, ์ด๊ฒƒ์€ ๋‹ค๋ฝ๋ฐฉ์—์„œ ์ˆ˜ํ–‰๋˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ CDC ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๋น„๋ฐ€ ๊ฐ’์œผ๋กœ ์†”ํŠธํŒ…ํ•จ์œผ๋กœ์จ ์–ด๋Š ์ •๋„ ์™„ํ™”๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์†”ํ‹ฐ๋“œ CDC๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ฌธ์ œ๊ฐ€ ์žˆ๋Š” ํŒŒ์ผ์„ ์ฒญํฌ๋กœ ๋ถ„ํ• ํ•œ ํ›„ ๊ฐ ๊ฐœ๋ณ„ ์ฒญํฌ์—์„œ ์••์ถ•์ด ๋ฐœ์ƒํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค. Restic ์ฒญํฌ์˜ ๋ฒ”์œ„๋Š” 512KB์—์„œ 8MB์ž…๋‹ˆ๋‹ค(๊ทธ๋Ÿฌ๋‚˜ ๊ณ ๋ฅด๊ฒŒ ๋ถ„์‚ฐ๋˜์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค. ๋งž๋‚˜์š”?).

  • ๊ณต๊ฒฉ์ž๋Š” CDC ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ๋น„๋ฐ€ ์†”ํŠธ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์œผ๋ฏ€๋กœ ๊ณต๊ฒฉ์ž๋Š” ๊ฐ ์œ ํšจํ•œ ์ฒญํฌ ๊ธธ์ด์— ๋Œ€ํ•ด ํ•˜๋‚˜์”ฉ ํŒŒ์ผ์˜ ์ฒ˜์Œ 512KB์—์„œ 8MB๋กœ ๊ตฌ์„ฑ๋œ ์ฒญํฌ ๋ฒ”์œ„๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ๊ณต๊ฒฉ์ž๋Š” ๋˜ํ•œ ์••์ถ•๋œ ์ฒญํฌ์˜ ๊ธธ์ด๋ฅผ ๊ฒฐ์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๊ทธ๋Ÿฐ ๋‹ค์Œ ๊ณต๊ฒฉ์ž๋Š” ์••์ถ• ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•˜์—ฌ ํ•ด๋‹น ์ฒญํฌ๋ฅผ ์••์ถ•ํ•ฉ๋‹ˆ๋‹ค.
  • ๊ณต๊ฒฉ์ž๋Š” ๊ฒฐ๊ณผ ์ฒญํฌ์˜ ๊ธธ์ด๋ฅผ ๋‚˜๋จธ์ง€ ๋ฐฑ์—… ์„ธํŠธ์˜ ์ฒซ ๋ฒˆ์งธ ์ฒญํฌ์™€ ๋น„๊ตํ•ฉ๋‹ˆ๋‹ค.
  • ์ผ์น˜ํ•˜๋Š” ๋ธ”๋ก ๊ธธ์ด๊ฐ€ ๋ฐœ๊ฒฌ๋˜๋ฉด ๊ณต๊ฒฉ์ž๋Š” ๋‹ค์Œ ์ฒญํฌ, ๋‹ค์Œ ์ฒญํฌ, ๋‹ค์Œ ์ฒญํฌ, ... ๋ฐ ๋‹ค์Œ ์ฒญํฌ๋กœ ์—ฐ์Šต์„ ๋ฐ˜๋ณตํ•ฉ๋‹ˆ๋‹ค.
  • ์ถฉ๋ถ„ํžˆ ํฐ ํŒŒ์ผ์„ ์‚ฌ์šฉํ•˜๊ณ  CDC ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ์•ฝ 1MB์˜ ๋ธ”๋ก์„ ์ƒ์„ฑํ•˜๋Š” ์ชฝ์œผ๋กœ "ํŽธํ–ฅ์ "์ด๋ผ๋Š” ์‚ฌ์‹ค์„ ๊ณ ๋ คํ•˜๋ฉด ์ด๊ฒƒ์ด ํŠน์ • ํฐ ํŒŒ์ผ์ด ๋ฐฑ์—…์— ์žˆ์Šต๋‹ˆ๋‹ค.

ํ•ญ์ƒ ๊ทธ๋ ‡๋“ฏ์ด ํŽธ์ง‘์ฆ์ ์ด๊ณ  ๋งค์šฐ ๋น„๊ณผํ•™์ ์ธ ์˜์‹์˜ ํ๋ฆ„.

์ƒ๊ฐ?

ํฅ๋ฏธ๋กœ์šด. ๋‚˜๋Š” ๋‹น์‹ ์ด ์„ค๋ช…ํ•˜๋Š” ๊ณต๊ฒฉ์ด ์••์ถ• ์‚ฌ์šฉ ์—ฌ๋ถ€์— ๋”ฐ๋ผ ์–ด๋–ป๊ฒŒ ๋‹ฌ๋ผ์ง€๋Š”์ง€ ์ดํ•ดํ•˜์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค. ์ „ํ˜€ ํ•„์š”ํ•ฉ๋‹ˆ๊นŒ? ์ด ๊ณต๊ฒฉ์€ ์••์ถ•์„ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๊นŒ?

ํ˜„์žฌ #56์„ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์ƒ๊ฐํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ Blob์„ ๋‹จ์ผ ํŒŒ์ผ๋กœ ๋ฌถ๋Š” ๊ฒƒ์— ๋Œ€ํ•ด ์–ด๋–ป๊ฒŒ ์ƒ๊ฐํ•˜์‹ญ๋‹ˆ๊นŒ?

CDC ๊ตฌํ˜„์˜ ์ •ํ™•ํ•œ ์ž‘๋™์€ ๋‚˜์—๊ฒŒ ์•ฝ๊ฐ„ ๋ถˆ๋ถ„๋ช…ํ•ฉ๋‹ˆ๋‹ค.

  • ์ •ํ™•ํ•œ ๋ฐ”์ดํŠธ ๊ฒฝ๊ณ„๋กœ ๋ถ„ํ• ํ•ฉ๋‹ˆ๊นŒ, ์•„๋‹ˆ๋ฉด 512KB - 8MB ๋ธ”๋ก์ด ๋ฌด์–ธ๊ฐ€์˜ ๋ฐฐ์ˆ˜๋กœ "๋ฐ˜์˜ฌ๋ฆผ"๋ฉ๋‹ˆ๊นŒ?
  • (์ง„์งœ ์งˆ๋ฌธ์€ (15 * 512 * 1024) / (AES-CTR ๋•Œ๋ฌธ์— 16) ๊ฐ€๋Šฅํ•œ ์ฒญํฌ ํฌ๊ธฐ ๋˜๋Š” ๊ทธ ์ดํ•˜๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?)
  • ๋‚˜๋Š” ๋˜ํ•œ ์•Œ๋ ค์ง„ ํŒŒ์ผ์˜ ์ถฉ๋ถ„ํ•œ ๋ฉ์–ด๋ฆฌ๊ฐ€ ์ฃผ์–ด์ง€๋ฉด ์‹œ๋“œ๋ฅผ ์žฌ๊ตฌ์„ฑํ•˜๋Š” ๊ฒƒ์ด ์–ผ๋งˆ๋‚˜ ์‹คํ˜„ ๊ฐ€๋Šฅํ•œ์ง€ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค.

์ฒซ ๋ฒˆ์งธ ์งˆ๋ฌธ์— ๋‹ตํ•˜๋ ค๋ฉด:
์‹œ๋“œ๋œ CDC๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด "์ง€๋ฌธ"์€ (๋‚ด์šฉ + ๋น„๋ฐ€ ์‹œ๋“œ)์— ๋”ฐ๋ผ ๋‹ค๋ฅด์ง€๋งŒ ์ฒญํฌ _ํ›„_ ์••์ถ•์ด ์™„๋ฃŒ๋˜๋ฉด ๊ฐœ๋ณ„ ๋ธ”๋ก์„ ์„œ๋กœ ๊ตฌ๋ณ„ํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜๋ฉด ์ง€๋ฌธ/ ์ด ์‹œ๋‚˜๋ฆฌ์˜ค์—์„œ ์•Œ๋ ค์ง„ ์ผ๋ฐ˜ ํ…์ŠคํŠธ์ธ ์ฝ˜ํ…์ธ ์—๋งŒ ์˜์กดํ•˜๋Š” ์›Œํ„ฐ๋งˆํฌ(ํŠน์ • ๋ธ”๋ก์˜ ์••์ถ•๋ฅ ).

์˜ˆ์‹œ:
์›Œํ„ฐ๋งˆํฌ๊ฐ€ ์žˆ๋Š” ํŒŒ์ผ์— 64MB(8-128 ์ฒญํฌ)์˜ "AAAA", 64MB์˜ "ABCABCABCABC", 64MB์˜ ์ž„์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ํฌํ•จ๋œ ๊ฒฝ์šฐ ์ฒ˜์Œ 16-256 ์ฒญํฌ๋Š” ๋งค์šฐ ์ž‘์Šต๋‹ˆ๋‹ค(ํ•ด๋‹น ์‹œํ€€์Šค๊ฐ€ โ€‹โ€‹๋งค์šฐ ์ž˜ ์••์ถ•๋˜๊ธฐ ๋•Œ๋ฌธ์— , ์—ฌ๊ธฐ์„œ 8-128 ์ฒญํฌ๋Š” ์••์ถ•์ด ์ž˜ ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.)
๊ณต๊ฒฉ์ž๋Š” ๋˜ํ•œ ๊ฐ€์žฅ ๋งˆ์ง€๋ง‰(24~384๋ฒˆ์งธ) ์ฒญํฌ๋ถ€ํ„ฐ ๊ฑฐ๊พธ๋กœ ์ž‘์—…ํ•˜์—ฌ ๊ณต๊ฒฉ์ž๊ฐ€ ์ •ํ™•ํžˆ ๋™์ผํ•œ ์ฒญํฌ ํฌ๊ธฐ๋กœ ์••์ถ•๋˜๋Š” ํฌ๊ธฐ๋ฅผ ์ฐพ์„ ๋•Œ๊นŒ์ง€ 512KB-8MB๋ฅผ ์••์ถ•ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์ด ๋ฐœ๊ฒฌ๋˜๋ฉด ์›๋ž˜ ํ‰๋ฌธ์˜ "๋‹ค์Œ" 512KB-8MB๊ฐ€ ์••์ถ•๋˜์–ด ๊ณต๊ฒฉ์ž๊ฐ€ ๋งŒ๋‚  ๋•Œ๊นŒ์ง€ ๋งˆ์ง€๋ง‰์—์„œ ๋‘ ๋ฒˆ์งธ ๋ธ”๋ก(23๋ฒˆ์งธ - 383๋ฒˆ์งธ)์˜ ๊ธธ์ด๋กœ ์••์ถ•๋˜๋Š” ๊ธธ์ด๋ฅผ ์ฐพ๋Š” ์‹์œผ๋กœ ์ง„ํ–‰๋ฉ๋‹ˆ๋‹ค. "AAAA" ๋ฌธ์ž์—ด์˜ ๊ฒฐ๊ณผ์ธ ์ž‘์€ ์ฒญํฌ.
์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ๊ณต๊ฒฉ์ž๊ฐ€ ์›Œํ„ฐ๋งˆํฌ๊ฐ€ ํ‘œ์‹œ๋œ ํŒŒ์ผ์ด ๋ฐฑ์—…์— ์ €์žฅ๋˜์–ด ์žˆ๋Š”์ง€ ๊ธ์ •์ ์œผ๋กœ ํ™•์ธํ•  ์ˆ˜๋Š” ์—†์ง€๋งŒ ์ถฉ๋ถ„ํ•œ ๋ฐ์ดํ„ฐ๊ฐ€ ์ฃผ์–ด์ง€๋ฉด ํ†ต๊ณ„์ ์œผ๋กœ ์ƒ๋‹นํžˆ ๋ช…ํ™•ํ•œ ๊ฒฐ๊ณผ๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๋ช‡ ๊ฐ€์ง€ ์ž ์žฌ์ ์ธ ์†”๋ฃจ์…˜์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์•„๋งˆ๋„ ๋” ๋งŽ์€ ์•„์ด๋””์–ด๊ฐ€ ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

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

์„ค๋ช…ํ•ด์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์ด์ œ ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ์ดํ•ดํ–ˆ์Šต๋‹ˆ๋‹ค.

restic์—์„œ ์ค‘๋ณต ์ œ๊ฑฐ๋ฅผ ํ•ด์ œํ•˜๋Š” ์˜ต์…˜์€ ์—†์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํ”„๋กœ๊ทธ๋žจ์˜ ํ˜„์žฌ ๊ตฌ์กฐ๋ฅผ ๊ฐ์•ˆํ•  ๋•Œ ๊ทธ๋ ‡๊ฒŒ ํ•˜๊ธฐ๊ฐ€ ์ •๋ง ์–ด๋ ต๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. restic์€ CDC๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ตฌ์ถ•๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์••์ถ• ์ง€์›์„ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์€ ํ˜„์žฌ ์šฐ์„  ์ˆœ์œ„๊ฐ€ ๋‚ฎ์œผ๋ฉฐ ์•ŒํŒŒ ๋ฆด๋ฆฌ์Šค์˜ ๋ชฉํ‘œ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค.

๊ท€ํ•˜์˜ ์„ธ ๋ฒˆ์งธ ์•„์ด๋””์–ด๋Š” #56(์—ฌ๋Ÿฌ ์ฒญํฌ ๋ฌถ์Œ)์—์„œ ๊ตฌํ˜„๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ง€๊ธˆ ์ž‘์—… ์ค‘์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์•„๋งˆ๋„ ์ฒญ์ปค์˜ ์ž‘๋™ ๋ฐฉ์‹์— ๊ด€ํ•ด doc/Design.md ์— ๋” ๋งŽ์€ ๋ฌธ์„œ๋ฅผ ์ถ”๊ฐ€ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ์ œ์‹œํ•ด ์ฃผ์…”์„œ ๋‹ค์‹œ ํ•œ ๋ฒˆ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค!

@cfcs๋ฅผ ๋”ฐ๋ฅด๋Š”์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์••์ถ•๋œ ํฌ๊ธฐ๊ฐ€ ์—„์ฒญ๋‚˜๊ฒŒ ๋‚˜์œ ํ•ด์‹œ์™€ ๊ฐ™์ง€ ์•Š์Šต๋‹ˆ๊นŒ? ์••์ถ•๋œ ํŒŒ์ผ ํฌ๊ธฐ๊ฐ€ ์ฃผ์–ด์ง€๋ฉด ํ•ด๋‹น ํŒŒ์ผ ํฌ๊ธฐ๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ฐ€๋Šฅํ•œ ์ž…๋ ฅ ์ˆ˜๋Š” ๋ฌดํ•œํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์•„๋งˆ๋„ ๋‚˜๋Š” ์ดํ•ดํ•˜์ง€ ๋ชปํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์–ด์จŒ๋“ . ๋‚ด๊ฐ€ ๋งŒ๋“  ์ˆ˜์ •๋œ deflate/gzip ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ฅผ ๋ป”๋ป”ํ•˜๊ฒŒ ์•Œ๋ ค์ฃผ๊ณ  ์‹ถ์—ˆ์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•ด ~150MB/s/์ฝ”์–ด ์ฒ˜๋ฆฌ๋Ÿ‰์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•˜๋Š” ์ผ์ • ์‹œ๊ฐ„ ์••์ถ• ๋ชจ๋“œ ๋ฅผ ์„ค์ •ํ•˜๋ฉด ๋ฐฑ์—… ์‹œ๋‚˜๋ฆฌ์˜ค์—์„œ ๊ฑฐ์˜ ๋ณด์ด์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ ์ฝ”์–ด์—์„œ ๋” ํฐ ํŒŒ์ผ์„ gzip์œผ๋กœ ์••์ถ•ํ•˜๋Š” ๋ณ‘๋ ฌ gzip ํŒจํ‚ค์ง€ ๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

@klauspost : ์šฐ๋ฆฌ๋Š” ํŒŒ์ผ์ด ์•„๋‹Œ ๊ฐœ๋ณ„ ์ฒญํฌ ์˜ ์••์ถ•๋œ ํฌ๊ธฐ์— ๋Œ€ํ•ด ๋…ผ์˜ํ•˜๊ณ  ์žˆ์Œ์„ ๋ช…์‹ฌํ•˜์‹ญ์‹œ์˜ค. ํ‰๊ท  ์ฒญํฌ ํฌ๊ธฐ๊ฐ€ 1MB์ธ 100GB ํŒŒ์ผ์—๋Š” ์•ฝ 100 x 1024 ์ฒญํฌ๊ฐ€ ์žˆ์œผ๋ฉฐ ๊ฐ ์ฒญํฌ๋Š” ํŒŒ์ผ์˜ ํŠน์ • ๋ถ€๋ถ„์— ๋Œ€ํ•œ ์••์ถ• ๋น„์œจ์„ ๋ˆ„์ถœํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๋‹จ์ผ ์••์ถ• ํŒŒ์ผ์˜ ํฌ๊ธฐ๋ณด๋‹ค ํ›จ์”ฌ ๋” ๋งŽ์€ ํ†ต๊ณ„ ๋ฐ์ดํ„ฐ๋ฅผ ์ƒ์„ฑํ•˜๋ฏ€๋กœ CDC ์†”ํŠธ(๋”ฐ๋ผ์„œ ์ฒญํฌ์˜ ์ •ํ™•ํ•œ ์ •๋ ฌ ๊ฒฝ๊ณ„)๋ฅผ ์•Œ ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ์—๋„ ์•Œ๋ ค์ง„ ์ผ๋ฐ˜ ํ…์ŠคํŠธ๋ฅผ ์••์ถ• ๋ฐ ์ฒญํฌ ํŒŒ์ผ๊ณผ ๋น„๊ตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ 151์ด ๋ณ‘ํ•ฉ๋˜์—ˆ์œผ๋ฏ€๋กœ ์ง€๊ธˆ์€ ๋ฌธ์ œ๊ฐ€ ๋˜์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋‚ด ์ƒ๊ฐ์—, ์ด ์ •๋ณด ๋ˆ„์ถœ์€ ์‹œ๋“œ๋œ ์ฒญ์ปค(์‚ฌ์šฉ์ž ์ง€์ • repo๋ณ„ ๋‹คํ•ญ์‹์„ ํ†ตํ•ด)์™€ blob ํŒจํ‚น(๊ณต๊ฒฉ์ž๊ฐ€ ๊ฐœ๋ณ„ ์ฒญํฌ๋ฅผ ๋ณผ ์ˆ˜ ์—†์ง€๋งŒ ์ฒญํฌ ๊ทธ๋ฃน๊ณผ ์ฒญํฌ ์ˆ˜๋งŒ ๋ณผ ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ)์ด ์žˆ๋‹ค๋Š” ์ ์„ ๊ณ ๋ คํ•  ๋•Œ ์ค‘์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฃน์—์„œ ์ผ๋ฐ˜ ํ…์ŠคํŠธ ํ—ค๋” ๊ธธ์ด๋ฅผ ํ†ตํ•ด). ์†๋„๋‚˜ ๊ฐœ์ธ ์ •๋ณด ๋ณดํ˜ธ ๋ฌธ์ œ๋ฅผ ์œ„ํ•ด ์••์ถ•์„ ์™„์ „ํžˆ ๋น„ํ™œ์„ฑํ™”ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์€ ์•„์ด๋””์–ด๋ผ๊ณ  ์ƒ๊ฐํ•˜์ง€๋งŒ ๊ธฐ๋ณธ๊ฐ’(๊ตฌํ˜„๋œ ๊ฒฝ์šฐ)์€ ์•„๋งˆ๋„ "ํ™œ์„ฑํ™”"์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@klauspost ์ง€์ ํ•ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

@fd0 ์œ„์˜ ๊ด€์ฐฐ์— ๋™์˜ํ•˜์ง€๋งŒ ์ด๋ฏธ ์ง€์ •๋œ ๋ฉ€ํ‹ฐ๋ฏธ๋””์–ด ํ˜•์‹์„ ๋ฐฑ์—…ํ•  ๋•Œ์™€ ๊ฐ™์ด ํŠน์ • ๋Œ€์ƒ ํŒŒ์ผ/๋””๋ ‰ํ† ๋ฆฌ/์žฅ์น˜์— ๋Œ€ํ•œ ์••์ถ•์„ ์„ ํƒ์ ์œผ๋กœ ๋น„ํ™œ์„ฑํ™”ํ•˜๋Š” ๋˜ ๋‹ค๋ฅธ ์ค‘์š”ํ•œ ์‚ฌ์šฉ ์‚ฌ๋ก€๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์••์ถ•์ด ์ž˜ ๋˜์ง€ ์•Š๋Š” ๋†’์€ ์—”ํŠธ๋กœํ”ผ๋ฅผ ๊ฐ€์ง„ ์••์ถ•๋œ ๋ฐ”์ด๋„ˆ๋ฆฌ ํŒŒ์ผ ๋˜๋Š” ์•”ํ˜ธํ™”๋œ ๋ณผ๋ฅจ์˜ ์ฆ๋ถ„ ๋ฐฑ์—…์„ ์ˆ˜ํ–‰ํ•  ๋•Œ.

@cfcs - ok - ๊ท€ํ•˜์˜ ํ…์ŠคํŠธ์—์„œ ๊ท€ํ•˜๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”๋ก ํ•  ์ˆ˜ ์žˆ์Œ์„ ์•”์‹œํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ด๊ฒƒ์ด ์ฐจ์ด๋ฅผ ๋งŒ๋“ค๋ ค๋ฉด ๋“œ๋ฌธ ๊ฒฝ์šฐ์ธ ์›๋ณธ ๋ฐ์ดํ„ฐ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

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

๋‹ค์Œ์€ ๋ช‡ ๊ฐ€์ง€ ๋ฒค์น˜๋งˆํฌ ์ž…๋‹ˆ๋‹ค. ๋ฐฑ์—…์— ๊ฐ€์žฅ ์ ํ•ฉํ•œ ๊ฒƒ์€ ์•„๋งˆ๋„ "Medium Compression"(์••์ถ• ๊ฐ€๋Šฅ ๋ฐ ๋น„์••์ถ• 10GB ํ˜ผํ•ฉ ์ฝ˜ํ…์ธ )์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ธฐ๋ณธ์ ์œผ๋กœ gzip Huffman๋งŒ ์‚ฌ์šฉํ•˜๊ณ  CPU๋ฅผ ๋” ๋งŽ์ด ์‚ฌ์šฉํ•˜๋Š” ์••์ถ• ์ˆ˜์ค€์„ ์ง€์ •ํ•˜๋Š” ์˜ต์…˜์ด ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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

์••์ถ•์„ ์‚ฝ์ž…ํ•˜๋Š” ๊ฒƒ์ด ํƒ€๋‹นํ•  ์ˆ˜ ์žˆ๋Š” ๋ช‡ ๊ฐ€์ง€ "ํฌ์ธํŠธ"๋ฅผ ์‚ดํŽด๋ณด์•˜์Šต๋‹ˆ๋‹ค. ๊ฐ€์žฅ ํˆฌ๋ช…ํ•˜๊ณ  ๋‹ค์žฌ๋‹ค๋Šฅํ•œ ์žฅ์†Œ๋Š” ์ €์žฅ์†Œ์™€ ๋ฐฑ์—”๋“œ ์‚ฌ์ด์˜ ์–ด๋”˜๊ฐ€์ž…๋‹ˆ๋‹ค.

Repository.Encrypt ๋ฐ Repository.DecryptTo ์ˆ˜์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๊ฐ„๋žตํ•˜๊ฒŒ ์‚ดํŽด๋ณด์•˜์ง€๋งŒ ์œ ํ˜•์ด ์—†๊ณ  ํฌ๊ธฐ๊ฐ€ ๋‹ค์–‘ํ•˜๋ฉด ๋ฌธ์ œ๊ฐ€ ๋ณต์žกํ•ด์ง‘๋‹ˆ๋‹ค.

๋‚ด ์ œ์•ˆ์€ ์••์ถ•๊ณผ _encryption_์„ "๋ฐฑ์—”๋“œ"๋กœ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ์ด๋ฉฐ ๋‘˜ ๋‹ค ๊ธฐ๋ณธ ๋ฐฑ์—”๋“œ์— ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์••์ถ• ๋ฐ ์•”ํ˜ธํ™”๊ฐ€ ์ €์žฅ์†Œ์— ํˆฌ๋ช…ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

์•”ํ˜ธํ™”๋ฅผ ๋ถ„๋ฆฌํ•ด์•ผ ํ•˜๋Š” ์ด์œ ๋Š” ์•”ํ˜ธํ™”๋œ ๋ฐ์ดํ„ฐ๊ฐ€ ์••์ถ•๋˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

์ €์žฅ์†Œ.์ €์žฅ์†Œ

์••์ถ• ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ์ดˆ๊ธฐํ™” ์‹œ์—๋งŒ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ๊ตฌ์„ฑ์„ ์ œ์™ธํ•œ ๋ชจ๋“  ํ•ญ๋ชฉ์€ ํ•ด๋‹น ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ ์••์ถ•๋œ ๊ฒƒ์œผ๋กœ ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค.

์ €์žฅ์†Œ.๊ตฌ์„ฑ

๊ตฌ์„ฑ์„ ์••์ถ•ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ๊ฒƒ์— ์‚ฌ์šฉํ•  ์••์ถ• ํ•ด์ œ ์œ ํ˜•์„ ๋‚˜ํƒ€๋‚ด๋Š” ๋ฌธ์ž์—ด์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ๋น„์–ด ์žˆ์Œ("")์€ ์••์ถ• ํ•ด์ œ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ์‚ฌ์šฉ๋œ ์••์ถ• ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํŒจํ‚ค์ง€ ์ด๋ฆ„์˜ ๋งˆ์ง€๋ง‰ ๋ถ€๋ถ„์ž…๋‹ˆ๋‹ค.

์••์ถ• ์ˆ˜์ค€์€ ๊ฐ ์‹คํ–‰/์œ ํ˜• ๊ฐ„์— ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์••์ถ• ํ•ด์ œ๊ธฐ๊ฐ€ ๋™์ผํ•˜๋‹ค๋ฉด ์ผ๋ถ€ ์Šค๋ƒ…์ƒท/์œ ํ˜•์ด deflate ์ˆ˜์ค€ 0(์ €์žฅ)์ด๊ณ  ์ผ๋ถ€๋Š” ์ˆ˜์ค€ 9(์ตœ์ƒ์˜ ์••์ถ•)์ธ ์ €์žฅ์†Œ๋ฅผ ๊ฐ–๋Š” ๋ฐ ๋ฌธ์ œ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

type Config struct {
    Version           uint        `json:"version"`
    ID                string      `json:"id"`
    ChunkerPolynomial chunker.Pol `json:"chunker_polynomial"`
+   Compression       string
}

์ƒ์„ฑ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์••์ถ•์ด ์ถ”๊ฐ€๋ฉ๋‹ˆ๋‹ค.

-func CreateConfig(r JSONUnpackedSaver) (Config, error) {
+func CreateConfig(r JSONUnpackedSaver, compression string) (Config, error) {

๋ฐฑ์—”๋“œ๋Š” LoadConfig/CreateConfig ํ›„์— ๊ต์ฒด๋ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ์€ ํ‘œ์‹œ ๋ฐฉ๋ฒ•์˜ ์˜ˆ์ž…๋‹ˆ๋‹ค.

// SearchKey finds a key with the supplied password, afterwards the config is
// read and parsed.
func (r *Repository) SearchKey(password string) error {
    key, err := SearchKey(r, password)
    if err != nil {
        return err
    }

-   r.key = key.master
-   r.keyName = key.Name()
    r.Config, err = LoadConfig(r)
+   r.be, err = FindCompressor(r.Config.Compression, Encryption(key, r.be))
    return err
}

์••์ถ• ๊ตฌํ˜„

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

๋ฌธ์ œ

HELPME/FIXME: ๊ฐ ํŒŒ์ผ์—์„œ ์•”ํ˜ธํ™”๊ฐ€ ๋‹ค์‹œ ์‹œ์ž‘๋˜๊ธฐ ๋•Œ๋ฌธ์— "ํฌ์žฅ๋œ" ํŒŒ์ผ์ด ๋ฌธ์ œ์ธ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์•”ํ˜ธํ™”๊ฐ€ ๋ฐฑ ์—”๋“œ๋กœ ์ด๋™ํ•˜๋Š” ๊ฒฝ์šฐ ์•”ํ˜ธํ™”๋Š” ๊ฐ ํŒŒ์ผ์ด ์•„๋‹ˆ๋ผ ์ „์ฒด Blob์— ๋Œ€ํ•ด ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ทธ๊ฒƒ์ด ๋ฌธ์ œ๋ผ๊ณ  ๊ฐ€์ •ํ•˜๊ณ  ์ข‹์€ ํ•ด๊ฒฐ์ฑ…์ด ์—†์Šต๋‹ˆ๋‹ค.

TODO: ๋งค๊ฐœ๋ณ€์ˆ˜/๊ตฌ์„ฑ์ด ์••์ถ•๊ธฐ๋กœ ์ „์†ก๋˜๋Š” ์ข‹์€ ๋ฐฉ๋ฒ•์„ ์ฐพ์œผ์‹ญ์‹œ์˜ค. ์ฒซ ๋ฒˆ์งธ ๊ตฌํ˜„์—๋Š” ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

TODO: ๋””์Šคํฌ ํฌ๊ธฐ์— ๊ด€์‹ฌ์ด ์žˆ์Šต๋‹ˆ๊นŒ? ์œ„์˜ ์‚ฌํ•ญ์ด ๊ตฌํ˜„๋˜๋ฉด ์ €์žฅ์†Œ๋Š” ์ด๋ฅผ ์•Œ์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค.

์˜๊ฒฌ์„ ๊ณต์œ ํ•ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์ œ ์˜๊ฒฌ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

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

๋˜ํ•œ ์••์ถ•๋œ ํŒŒ์ผ์€ ๊ทธ ์ž์ฒด๋กœ ์ถ”์ƒํ™” ์ˆ˜์ค€(์˜ˆ: ๋ฌผ๊ฑด์„ ๋‹ค์‹œ ์••์ถ•ํ•  ์ˆ˜ ์žˆ์Œ)์œผ๋กœ ์•”ํ˜ธํ™” ์ถ”์ƒํ™”์™€ ํ•จ๊ป˜ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

Repository ๊ฐœ์ฒด๊ฐ€ ๋„ˆ๋ฌด ๋ณต์žกํ•˜๊ณ  ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์ „์— ์ „๋ฐ˜์ ์ธ ์ ๊ฒ€์ด ํ•„์š”ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ง€๊ธˆ ๋‹น์žฅ์€ ์ข‹์€ ๊ณ„ํš์ด ์—†์Šต๋‹ˆ๋‹ค.

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

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

๋‹ค๋ฅธ ์•Œ๊ณ ๋ฆฌ์ฆ˜๊ณผ ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค(๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋‹น๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๋ฐฑ์—… ์‹คํ–‰๋‹น). "๋ชจ๋“  ์‚ฌ์šฉ ์‚ฌ๋ก€์— ๊ฐ€์žฅ ์ ํ•ฉํ•œ" ์••์ถ•์€ ์—†์Šต๋‹ˆ๋‹ค.

์‹ค์šฉ์ ์ธ ์˜ˆ๋กœ์„œ:

ํšŒ์‚ฌ ์„œ๋ฒ„์—์„œ ์ง‘์— ์žˆ๋Š” ๋ฐฑ์—… ์„œ๋ฒ„๋กœ ๋ฐฑ์—…์„ ํ•ฉ๋‹ˆ๋‹ค. ~700kbit/s์˜ dsl ์—…๋งํฌ
์ด๋ฅผ ์œ„ํ•ด ๋‚˜๋Š” ์ตœ๊ณ ์˜ ์••์ถ•(lzma + ๋†’์€ ์ˆ˜์ค€๊ณผ ๊ฐ™์€)์„ ์›ํ•ฉ๋‹ˆ๋‹ค. cpu๋Š” ๋‹ค์Œ ํŒจํ‚ท์„ ์ˆ˜๋ฝํ•˜๊ธฐ ์œ„ํ•ด ํ˜•ํŽธ์—†๋Š” ์—ฐ๊ฒฐ์„ ๊ธฐ๋‹ค๋ฆฌ๋Š” ๋™์•ˆ ๋ฐค์— ๋งŽ์€ ์—ฌ๊ฐ€ ์‹œ๊ฐ„์„ ๊ฐ€์ง‘๋‹ˆ๋‹ค.

๊ฐ™์€ ์ €์žฅ์†Œ์— ์ง‘์— ์žˆ์„ ๋•Œ๋„ ๋žฉํ†ฑ์„ ๋ฐฑ์—…ํ•ฉ๋‹ˆ๋‹ค. ๋ฌด์„  "N" ์—ฐ๊ฒฐ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฌผ๋ก  lzma + ๋†’์€ ์ˆ˜์ค€์„ ์‚ฌ์šฉํ•˜์—ฌ ์—ฐ๊ฒฐ ์†๋„๋ฅผ ๋Šฆ์ถ”๊ณ  ์‹ถ์ง€๋Š” ์•Š์ง€๋งŒ lz4์™€ ๊ฐ™์ด ์†๋„๊ฐ€ ์ „ํ˜€ ๋Š๋ ค์ง€์ง€ ์•Š๋Š” ๋งค์šฐ ๋น ๋ฅธ ๊ฒƒ์„ ์›ํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ์—ฌ์ „ํžˆ ์••์ถ•์„ ์›ํ•˜์ง€๋งŒ lz4๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋ฉด ์•ฝ 2๋ฐฐ์˜ ๊ณต๊ฐ„์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š” ์—ฌ๊ธฐ์— lzma๋ฅผ ์›ํ•˜์ง€๋งŒ ๊ฑฐ๊ธฐ์—๋Š” lz4๋ฅผ ์›ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๊ฒŒ ์ „๋ถ€์ž…๋‹ˆ๋‹ค imho... ํ•ฉ๋ฆฌ์ ์ธ ๊ธฐ๋ณธ๊ฐ’์„ ์„ ํƒํ•˜๊ณ  ๋„ˆ๋ฌด ๋งŽ์€ ๊ตฌ์„ฑ์„ ๋…ธ์ถœํ•˜์ง€ ์•Š๋„๋ก ํ•ฉ์‹œ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ์ ์€ ์ด๋“์„ ์œ„ํ•ด ๋งŽ์€ ๋ณต์žก์„ฑ์ด ๋„์ž…๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. imho.

Repository ๊ฐœ์ฒด๊ฐ€ ๋„ˆ๋ฌด ๋ณต์žกํ•˜๊ณ  ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์ „์— ์ „๋ฐ˜์ ์ธ ์ ๊ฒ€์ด ํ•„์š”ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ง€๊ธˆ ๋‹น์žฅ์€ ์ข‹์€ ๊ณ„ํš์ด ์—†์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿด ์ˆ˜ ์žˆ์ง€. ๋‚˜๋Š” repository.go๋ฅผ ๋’ค์ง€๊ธฐ ์‹œ์ž‘ํ–ˆ๊ณ  ์••์ถ•/์••์ถ• ํ•ด์ œ ๋‹จ๊ณ„๋ฅผ ์‚ฝ์ž…ํ•  ๋ชจ๋“  ์œ„์น˜๋ฅผ ์ฐพ์•˜๊ณ  ์ถ”๊ฐ€๋œ ๋ณต์žก์„ฑ์€ ์ข‹์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. backend ์ธํ„ฐํŽ˜์ด์Šค๋กœ ๊ตฌํ˜„ํ•˜๋ฉด ๊ฐ‘์ž๊ธฐ ๋ชจ๋“  ์•”ํ˜ธํ™”๋ฅผ ์ œ๊ฑฐํ•˜๊ณ  ๋ฐฑ์—”๋“œ ์ฒด์ธ์˜ ์ผ๋ถ€๋กœ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์••์ถ• ๋ฐ ์•”ํ˜ธํ™”๋ฅผ ํฌํ•จํ•˜์—ฌ ๋ฐฑ์—”๋“œ ๋ถ€๋ถ„์˜ ๋Œ€์นญ์„ ๋ณด์žฅํ•˜๋Š” ์ผ๋ฐ˜ ํ…Œ์ŠคํŠธ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์•”ํ˜ธํ™”์™€ ๊ด€๋ จํ•˜์—ฌ: ๋‚˜์ค‘์— ๋‚˜๋จธ์ง€๋ฅผ ์œ„ํ•œ ๋น„์•”ํ˜ธํ™” ๋ชจ๋“œ๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ์ง€๋งŒ ํ˜„์žฌ๋กœ์„œ๋Š” ์•”ํ˜ธ๊ฐ€ ์„ ํƒ ์‚ฌํ•ญ์ด ์•„๋‹™๋‹ˆ๋‹ค.

์ด๊ฒƒ์ด ๋ฐฑ์—”๋“œ ์ฒด์ด๋‹์ด ์ข‹์€ ์ด์œ ์ž…๋‹ˆ๋‹ค. ์•”ํ˜ธํ™”๋ฅผ ์ƒ๋žตํ•˜๊ฑฐ๋‚˜(๋˜๋Š” ํ†ต๊ณผ ๋ฐฑ์—”๋“œ๋ฅผ ์ƒ์„ฑ) ์›ํ™œํ•˜๊ฒŒ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

์••์ถ•์„ ์ถ”๊ฐ€ํ•˜๋Š” ์ผ๋ฐ˜์ ์ธ ๊ฒฝ์šฐ์—๋Š” ์ด์ ์„ ๋ณผ ์ˆ˜ ์žˆ์ง€๋งŒ ์˜จ๋””์Šคํฌ ํ˜•์‹์˜ ๋ณต์žก์„ฑ๊ณผ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

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

์••์ถ•๋œ ์ €์žฅ์†Œ๋Š” ๋ถ„๋ช…ํžˆ ๊ทธ๋ ‡์ง€ ์•Š์ง€๋งŒ ์ €์žฅ์†Œ๊ฐ€ ์••์ถ•๋œ ๊ฒฝ์šฐ์—๋งŒ version ๋ฅผ 2๋กœ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์ด์ „ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์‹คํŒจํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ํ™•์ธ์ด ๋ถ„๋ช…ํžˆ if cfg.Version > RepoVersion { ๋กœ ๋ณ€๊ฒฝ๋˜์–ด์•ผ ํ•˜์ง€๋งŒ ํ˜ธํ™˜์„ฑ ๋ฌธ์ œ๋Š” ์—†์Šต๋‹ˆ๋‹ค.

๊ทธ๊ฒŒ ์ „๋ถ€์ž…๋‹ˆ๋‹ค imho... ํ•ฉ๋ฆฌ์ ์ธ ๊ธฐ๋ณธ๊ฐ’์„ ์„ ํƒํ•˜๊ณ  ๋„ˆ๋ฌด ๋งŽ์€ ๊ตฌ์„ฑ์„ ๋…ธ์ถœํ•˜์ง€ ์•Š๋„๋ก ํ•ฉ์‹œ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ์ ์€ ์ด๋“์„ ์œ„ํ•ด ๋งŽ์€ ๋ณต์žก์„ฑ์ด ๋„์ž…๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. imho.

๋™์˜ํ•˜๋‹ค. ๋Œ€๋ถ€๋ถ„์˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜(lzma/deflate)์€ ๋™์ผํ•œ ์••์ถ• ํ•ด์ œ ํ˜•์‹ ๋‚ด์—์„œ ๋งŽ์€ ์œ ์—ฐ์„ฑ์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์••์ถ•์„ฑ์„ ํ…Œ์ŠคํŠธํ•˜๊ธฐ ์œ„ํ•ด DataSmoke๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค: https://github.com/Bulat-Ziganshin/DataSmoke

๋˜ํ•œ pcompress๋Š” ๋‹ค์–‘ํ•œ ์••์ถ• ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. https://github.com/moinakg/pcompress

์Šค์ฟผ์‹œ ์••์ถ• ์ถ”์ƒํ™” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—๋Š” ์ข‹์€ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ชฉ๋ก๊ณผ ๋ฒค์น˜๋งˆํฌ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. https://quixdb.github.io/squash/

์—ฌ๊ธฐ์— ํ…์ŠคํŠธ ์••์ถ• ๋ฒค์น˜๋งˆํฌ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค: http://mattmahoney.net/dc/text.html

์‰ฌ์šด ์ ‘๊ทผ ๋ฐฉ์‹์€ ํ•ญ์ƒ crypto/crypto.go ์•”ํ˜ธํ™”/๋ณตํ˜ธํ™” ๊ธฐ๋Šฅ ๋‚ด๋ถ€๋ฅผ ํ•„ํ„ฐ๋งํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

gzip-compression-v1.patch.txt ๋จธ๋ฆฌ์— ์ ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐœ๋… ์ฆ๋ช… diff์ž…๋‹ˆ๋‹ค.

@mappu ๋ฅผ ์‚ฌ์šฉํ•ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ด๋ฅผ ๊ตฌํ˜„ํ•˜๊ธฐ ์ „์— ์ „๋žต์— ๋™์˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์—ด๋ฆฐ ์งˆ๋ฌธ (๋‚ด ๋จธ๋ฆฌ ๊ผญ๋Œ€๊ธฐ์—์„œ)์€ ์ ์–ด๋„ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • ์••์ถ•์€ ์–ธ์ œ ์ ์šฉ๋ฉ๋‹ˆ๊นŒ? (๋ฐ์ดํ„ฐ? ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ/JSON?)
  • ์–ด๋–ค ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๊ตฌํ˜„ํ•ด์•ผ ํ• ๊นŒ์š”? @klauspost ์— ๋ช‡ ๊ฐ€์ง€ ์ œ์•ˆ ์‚ฌํ•ญ์ด ์žˆ๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. :)
  • ํด๋ผ์ด์–ธํŠธ๋ฅผ ์†์ƒ์‹œํ‚ค์ง€ ์•Š๊ณ  ์ €์žฅ์†Œ์— ์ด๊ฒƒ์„ ์–ด๋–ป๊ฒŒ ์ €์žฅํ•ฉ๋‹ˆ๊นŒ?

์••์ถ•์€ ์–ธ์ œ ์ ์šฉ๋ฉ๋‹ˆ๊นŒ? (๋ฐ์ดํ„ฐ? ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ/JSON?)

๋ฐ์ดํ„ฐ๋Š” ๋ถ„๋ช…ํžˆ ๊ทธ๋ ‡์Šต๋‹ˆ๋‹ค.
Metadata/json, ์–ด์ฉŒ๋ฉด ๋ฌด์˜๋ฏธํ•  ์ˆ˜๋„ ์žˆ์ง€๋งŒ JSON ๋ฐ์ดํ„ฐ๋Š” ๋Œ€๋ถ€๋ถ„ ASCII์ด๊ณ  ์‚ฐ์ˆ  ์ฝ”๋”ฉ/ํ—ˆํ”„๋งŒ ๋‹จ๊ณ„(gzip์ด ์žˆ์Œ)์˜ ์ด์ ์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ํฐ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ํŒŒ์ผ์— ๋„์›€์ด ๋  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๋ฐ์ดํ„ฐ/๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋Š” ํ•ญ์ƒ ์•”ํ˜ธํ™”๋˜๊ธฐ ๋•Œ๋ฌธ์— ์•”ํ˜ธํ™”/๋ณตํ˜ธํ™” ๋ฃจํ‹ด์— ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์€ "repository.go๋ฅผ ์‚ดํŽด๋ณด๊ธฐ ์‹œ์ž‘ํ–ˆ๊ณ  ์••์ถ•/์••์ถ• ํ•ด์ œ ๋‹จ๊ณ„๋ฅผ ์‚ฝ์ž…ํ•  ๋ชจ๋“  ์œ„์น˜๋ฅผ ์ฐพ์•˜์Šต๋‹ˆ๋‹ค. ์ถ”๊ฐ€๋œ ๋ณต์žก์„ฑ์€ ์ข‹์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค." @klauspost์˜ .
๋˜ํ•œ blob์€ hash(ciphertext)๊ฐ€ ์•„๋‹Œ hash(plaintext)๋ผ๋Š” ์ด๋ฆ„์œผ๋กœ ์ €์žฅ๋˜๊ธฐ ๋•Œ๋ฌธ์— {{๋ถ„๋ช…ํžˆ ์ค‘๋ณต ์ œ๊ฑฐ์— ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ์ž„์˜์˜ IV๊ฐ€ ์ค‘๋ณต ์ œ๊ฑฐ๋ฅผ ํŒŒ๊ดดํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค}}. ์ค‘๋ณต ์ œ๊ฑฐ๋ฅผ ์†์ƒ์‹œํ‚ค์ง€ ์•Š๊ณ  ์ด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์ด ์•ˆ์ „ํ•ฉ๋‹ˆ๋‹ค.

์–ด๋–ค ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๊ตฌํ˜„ํ•ด์•ผ ํ• ๊นŒ์š”? @klauspost ์— ๋ช‡ ๊ฐ€์ง€ ์ œ์•ˆ ์‚ฌํ•ญ์ด ์žˆ๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. :)

์‹ ๊ฒฝ์“ฐ์ง€ ๋งˆ์„ธ์š”. @ThomasWaldmann์˜ ๋ง์— ๋™์˜ํ•˜์ง€๋งŒ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ ์–ด๋„ --best ๋ฐ --fast ์‚ฌ์šฉ ์‚ฌ๋ก€์—์„œ๋Š”.

๋‚˜๋Š” ์ˆœ์ˆ˜ ์ด๋™์ด๊ณ  golang ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ์žˆ๊ณ  Google์—์„œ ์„ฑ๋Šฅ์ฃผ์˜๋ฅผ ๋ฐ›๊ธฐ ๋•Œ๋ฌธ์— gzip์„ ์ œ์•ˆํ•ฉ๋‹ˆ๋‹ค. xz๋Š” ํ›จ์”ฌ ๋” ๊ฐ•๋ ฅํ•œ ๋Š๋ฆฐ ์••์ถ•์ž…๋‹ˆ๋‹ค. lz4๋Š” ํ›จ์”ฌ ์•ฝํ•œ ๋น ๋ฅธ ์••์ถ•์ž…๋‹ˆ๋‹ค. gzip์€ ๊ท ํ˜•์ด ์žกํžˆ๊ณ  ์‰ฝ๊ฒŒ ์กฐ์ •๋˜์ง€๋งŒ, ์–ด๋Š ์ชฝ๋„ ๊ทน๋‹จ์— ๋„๋‹ฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

ํด๋ผ์ด์–ธํŠธ๋ฅผ ์†์ƒ์‹œํ‚ค์ง€ ์•Š๊ณ  ์ €์žฅ์†Œ์— ์ด๊ฒƒ์„ ์–ด๋–ป๊ฒŒ ์ €์žฅํ•ฉ๋‹ˆ๊นŒ?

์ €์žฅ์†Œ๋Š” ํ•œ ๋ฐฉํ–ฅ์œผ๋กœ๋งŒ ํ˜ธํ™˜๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. new restic์ด ์ด์ „ repo๋ฅผ ์ฝ์„ ์ˆ˜ ์žˆ๋Š” ํ•œ old restic์ด ์ƒˆ repo๋ฅผ ์ฝ์„ ์ˆ˜ ์—†์–ด๋„ ๊ดœ์ฐฎ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

MAC ๋’ค์— ํƒœ๊ทธ ๋ฐ”์ดํŠธ๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์กด์žฌํ•˜์ง€ ์•Š์Œ - ์••์ถ• ์—†์Œ(์ด์ „ ์ œํ•œ). ๊ทธ๋Ÿฐ ๋‹ค์Œ ๋ฐ”์ดํŠธ๋Š” ์‚ฌ์šฉ๋œ ์••์ถ• ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๋‚˜ํƒ€๋‚ผ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. 0x01 gzip 0x02 lz4 ์ •๋„.

๋‹ค๋ฝ๋ฐฉ๊ณผ ๋™์ผํ•œ(๋˜๋Š” ๋” ๋‚˜์œ) ๋ฌธ์ œ๊ฐ€ ์žˆ๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค(ํ˜„์žฌ ํ˜•์‹์—์„œ ์‚ฌ์šฉ๋˜๋Š” ์••์ถ• ์œ ํ˜•/๋งค๊ฐœ๋ณ€์ˆ˜ ๋ฐ”์ดํŠธ ์—†์Œ).

๋‹ค๋ฝ๋ฐฉ(๋ณด๊ทธ)์—์„œ๋Š” ์ด์ „ ํ˜•์‹์ด gzip ์ „์šฉ์ด์—ˆ๊ณ  ์ฒ˜์Œ 2๋ฐ”์ดํŠธ์—์„œ gzip ํ˜•์‹์„ ๊ฐ์ง€ํ•  ์ˆ˜ ์žˆ์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์šด์ด ์ข‹์•˜์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์ถ”๊ฐ€ ๋ฐ”์ดํŠธ ์—†์ด gzip์„ ์œ ์ง€ํ•˜๊ณ (์ด์ „ ์ €์žฅ์†Œ์™€ ๋™์ผ) ์œ ํ˜• ๋ฐ”์ดํŠธ(์••์ถ• ์—†์Œ ๋˜๋Š” ๊ธฐํƒ€ ์••์ถ•์šฉ)๋ฅผ ์ถ”๊ฐ€ํ–ˆ์œผ๋ฉฐ ์ฒ˜์Œ 2gzip ๋ฐ”์ดํŠธ์™€ ์ ˆ๋Œ€ ๋ชจํ˜ธํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ด์ „ ํ˜•์‹์ด ์›์‹œ ๋ฐ์ดํ„ฐ์ธ ๊ฒฝ์šฐ์—๋Š” ๋ถ„๋ช…ํžˆ ๊ทธ๋ ‡๊ฒŒ ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

์•„๋‹ˆ์š”. ํ•˜์ง€๋งŒ ์ด ์ •๋ณด๋ฅผ ์•Œ๋ฆฌ๋Š” ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์•”ํ˜ธํ™”๋œ ์ฒญํฌ์˜ ์‹œ์ž‘ ๋ถ€๋ถ„์— ์žˆ๋Š” IV๊ฐ€ ์ •ํ™•ํžˆ "NEWFORMAT"(1 :: 2^xyz ์ถฉ๋Œ ๊ฐ€๋Šฅ์„ฑ)์ด๋ฉด ์ƒˆ ํ˜•์‹์œผ๋กœ ๊ตฌ๋ฌธ ๋ถ„์„ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡๊ฒŒ "๊นจ๋—ํ•œ" ๊ฒƒ์€ ์•„๋‹ˆ์ง€๋งŒ ์‹ค์ œ๋กœ๋Š” ๊ดœ์ฐฎ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

nmdc ์ž ๊ธˆ ํ•ธ๋“œ ์…ฐ์ดํฌ์—์„œ EXTENDEDPROTOCOL๋กœ ์ˆ˜ํ–‰๋˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ.

์˜ค, ์šฐ๋ฆฌ๋Š” ์ด์™€ ๊ฐ™์ด ์ถ”ํ•œ ์ผ์„ ํ•˜์ง€ ์•Š์„ ๊ฒƒ์ด๋ฉฐ ๊ทธ๋Ÿด ํ•„์š”๋„ ์—†์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์„ ๊ตฌํ˜„ํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ•œ ๊ฒฝ์šฐ ํŒฉ ํŒŒ์ผ์—๋Š” ๊ฐ blob์— ๋Œ€ํ•œ type ํ•„๋“œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ uint8 ์ด๋ฉฐ ํ˜„์žฌ data ๋ฐ tree ๋Œ€ํ•ด์„œ๋งŒ ์ •์˜๋˜์–ด ์žˆ์œผ๋ฉฐ compressed data ๋ฐ compressed tree ์‰ฝ๊ฒŒ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. https://github.com/restic/restic/blob/master/doc/Design.md#pack ํ˜•์‹

ํ˜„์žฌ๋กœ์„œ๋Š” ์ด ๊ธฐ๋Šฅ์„ ๋†’์€ ์šฐ์„  ์ˆœ์œ„๋กœ ์ƒ๊ฐํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

ํŒฉ ํ˜•์‹์— ์ƒˆ blob ์œ ํ˜•์„ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์€ ๋ฐ์ดํ„ฐ ์••์ถ•์— ์ ํ•ฉํ•˜์ง€๋งŒ ์ธ๋ฑ์Šค ์••์ถ•์€ ์ œ๊ณตํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ธ๋ฑ์Šค๊ฐ€ ์ปค์งˆ ์ˆ˜ ์žˆ๊ณ  JSON์˜ ์••์ถ•๋ฅ ์ด ์ข‹๊ณ  ์ธ๋ฑ์Šค์— ๋กœ์ปฌ ์บ์‹œ๊ฐ€ ์—†์„ ์ˆ˜๋„ ์žˆ์œผ๋ฏ€๋กœ ์ธ๋ฑ์Šค๋„ ์••์ถ•ํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์‰ฝ๊ฒŒ ์—…๊ทธ๋ ˆ์ด๋“œํ•  ์ˆ˜ ์žˆ๋„๋ก new-restic์ด old-repo์™€ ํ•จ๊ป˜ ์ž‘๋™ํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ๋งค๋„๋Ÿฝ๊ฑฐ๋‚˜(์„ ํ˜ธ) restic upgrade-repo ๋„๊ตฌ๊ฐ€ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(์„ ํ˜ธํ•˜์ง€ ์•Š์Œ).

๊ทธ๋Ÿผ ์ด๊ฑด ์–ด๋•Œ์š”?

๋ชจ๋“  restic ๋ช…๋ น์€ ์ด๋ฏธ config ๋จผ์ € ๋กœ๋“œ+๋ณตํ˜ธํ™”ํ•ฉ๋‹ˆ๋‹ค.

  • ์ฒซ ๋ฒˆ์งธ config ๋ฐ”์ดํŠธ๊ฐ€ { ์ด๋ฉด(json ๊ฐ์ฒด ์ฒซ ๋ฒˆ์งธ ๋ฐ”์ดํŠธ) ์ „์ฒด ์ €์žฅ์†Œ๋Š” ์ด์ „ ํ˜•์‹(์••์ถ•๋˜์ง€ ์•Š์Œ)์ž…๋‹ˆ๋‹ค.
  • ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ์ฒซ ๋ฒˆ์งธ config ๋ฐ”์ดํŠธ๋Š” {ํƒœ๊ทธ ๋ฐ”์ดํŠธ}์ด๊ณ  ์ „์ฒด ์ €์žฅ์†Œ๋Š” ์ƒˆ ํ˜•์‹์ž…๋‹ˆ๋‹ค. ๋ณตํ˜ธํ™” ๋ฐ์ดํ„ฐ ์‹œ์ž‘ ๋ถ€๋ถ„์˜ {ํƒœ๊ทธ ๋ฐ”์ดํŠธ}๋Š” ์••์ถ• ํ˜•์‹์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ์˜ˆ 0x00 ์••์ถ•๋˜์ง€ ์•Š์€ 0x01 gzip

์ œ์•ˆํ•ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๊ตฌ์„ฑ์„ ์••์ถ•ํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ด ํŒŒ์ผ์€ ์ •๋ง ์ž‘์€ ํŒŒ์ผ์ด๊ณ  ํ•ญ์ƒ JSON ํ˜•์‹์œผ๋กœ ์œ ์ง€๋  ์ˆ˜ ์žˆ๊ณ  ํ•„์š”์— ๋”ฐ๋ผ ํ•„๋“œ๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(์˜ˆ: ์ธ๋ฑ์Šค ํŒŒ์ผ ์••์ถ• ์—ฌ๋ถ€).

์–ด์ œ ์ข‹์€ ๋ฐฑ์—… ์†”๋ฃจ์…˜์„ ์ฐพ๋‹ค๊ฐ€ ๊ฒจ์šฐ ์ฐพ์•˜์Šต๋‹ˆ๋‹ค. ๋‚ด ์ฃผ์š” ๊ด€์‹ฌ์‚ฌ ์ค‘ ํ•˜๋‚˜๋Š” ๋‚ด ๋ฐ์ดํ„ฐ๊ฐ€ ์ฐจ์ง€ํ•˜๋Š” ๊ณต๊ฐ„์„ ์ œํ•œํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํŠนํžˆ S3์™€ ๊ฐ™์ด ๋‚ด๊ฐ€ ๋น„์šฉ์„ ์ง€๋ถˆํ•˜๋Š” ๊ณณ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ด๋Š” ๊ฒฝ์šฐ. Dedup์€ ํ™•์‹คํžˆ ๋„์›€์ด ๋  ๊ฒƒ์ด์ง€๋งŒ ์˜ˆ์ƒ๋˜๋Š” ์••์ถ•์€ ๋ฐฑ์—… ์†”๋ฃจ์…˜์˜ ์ผ๋ถ€์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค... https://github.com/restic/restic/issues/21#issuecomment -185920429์—์„œ ๋‹น์‹ ์€ ( @fd0 ) ์ด๋ ‡๊ฒŒ ๋งํ•ฉ๋‹ˆ๋‹ค. ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋‚ฎ์Šต๋‹ˆ๋‹ค. ์ด์œ ๋ฅผ ์„ค๋ช…ํ•ด ์ฃผ์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? ์–ด๋””์—์„œ๋‚˜ ๋ณผ ์ˆ˜ ์žˆ๋Š” ๋กœ๋“œ๋งต์ด ์žˆ์Šต๋‹ˆ๊นŒ?

๋˜ํ•œ +1. ;)

ํ˜„์žฌ ์˜ค๋ž˜๋œ ๋ฐฑ์—… ๋ฐ์ดํ„ฐ(#518)๋ฅผ ์ œ๊ฑฐํ•˜๋Š” ์ž‘์—…์„ ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ฌ๋ฐ”๋ฅธ ์••์ถ•๊ณผ ๋ณด์•ˆ์„ ๋™์‹œ์— ์–ป๋Š” ๊ฒƒ์€ ์‰ฝ์ง€ ์•Š์€๋ฐ, ์ด๊ฒƒ์„ ์ €์žฅ์†Œ ํ˜•์‹์œผ๋กœ ํ†ตํ•ฉํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์กฐ๊ธˆ ๋” ์ƒ๊ฐํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋Š” ์••์ถ•์„ ๊ตฌํ˜„ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค(์ด ๋ฌธ์ œ๊ฐ€ ๋ฌด์—‡์ธ์ง€ ์•Œ๊ณ  ๋‚˜๋ฉด), ์•„์ง ์ˆ˜ํ–‰๋˜์ง€ ์•Š์•˜์„ ๋ฟ์ž…๋‹ˆ๋‹ค. restic์€ ๋‹ค์†Œ ์ƒˆ๋กœ์šด ํ”„๋กœ์ ํŠธ์ž…๋‹ˆ๋‹ค. ์ €ํฌ์™€ ํ•จ๊ป˜ ํ•ด์ฃผ์„ธ์š” :)

์ด ๋ฌธ์ œ๋Š” #116๊ณผ ๊ด€๋ จ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์•”ํ˜ธํ™” ๋•Œ๋ฌธ์— ๋‹ค๋ฅธ ๋„๊ตฌ๋กœ ๋ฐฑ์—…์„ ์••์ถ•ํ•  ์ˆ˜ ์—†์ž–์•„์š”? ์••์ถ•๊ณผ ์•”ํ˜ธํ™”๋ฅผ ์„ ํƒ ์‚ฌํ•ญ์œผ๋กœ ๋งŒ๋“œ๋Š” ๊ฒƒ ์‚ฌ์ด์— ์–ด๋–ค ์šฐ์„  ์ˆœ์œ„๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ? (๋‚˜๋Š” ๋จผ์ € ์••์ถ•์— ๋ฒ ํŒ…ํ•ฉ๋‹ˆ๋‹ค!)
_์ด ๋ฌธ์ œ์— ๋Œ€ํ•ด ์••๋ ฅ์„ ๊ฐ€ํ•ด ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค. ์ €์žฅ์†Œ ํ˜•์‹์„ ์ฃผ์˜ํ•ด์„œ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค๋Š” ๋ง์”€์ด ๋งž์Šต๋‹ˆ๋‹ค!_

์ด๊ฒƒ์€ ๋Œ€๋‹ตํ•˜๊ธฐ ์‰ฝ์Šต๋‹ˆ๋‹ค. ์••์ถ•์ด ๋จผ์ € ๊ตฌํ˜„๋ฉ๋‹ˆ๋‹ค.

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

@fd0 ์ œ ์งˆ๋ฌธ์— ๋‹ต๋ณ€ํ•ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๋‚ด ๊ฐœ๋ฐœ ๊ธฐ์ˆ ์ด ์ด๊ฒƒ์— ๋„์›€์ด ๋˜์—ˆ์œผ๋ฉด ํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ go๋Š” ๊ฑฐ์˜ ๊ฑด๋“œ๋ฆฌ์ง€ ์•Š์•˜์œผ๋ฉฐ ๋‹ค๋ฅธ xp์˜ ๋Œ€๋ถ€๋ถ„์€ webdev ๋˜๋Š” sysadmin ์Šคํฌ๋ฆฝํŠธ์— ์žˆ์Šต๋‹ˆ๋‹ค.

์••์ถ•์ด "์˜ฌ๋ฐ”๋ฅด๊ณ  ์•ˆ์ „ํ•˜๊ฒŒ" ์ˆ˜ํ–‰๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•ด์•ผ ํ•œ๋‹ค๋Š” ๋ฐ ์ „์ ์œผ๋กœ ๋™์˜ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์ด ์ผ์„ ์ง€์—ฐ์‹œํ‚จ๋‹ค๋ฉด, ๊ทธ๋ ‡๊ฒŒ ํ•˜์‹ญ์‹œ์˜ค. :์›ƒ๋‹ค:

https://github.com/viric/restic/tree/snappy ์—์„œ restic์—์„œ ๋น ๋ฅธ ์••์ถ•์„ ๊ตฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ƒฅ ์ œ์•ˆ์ž…๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ ๋‚˜๋Š” ํŒฉ์— ์žˆ๋Š” ๋ธ”๋กญ์— ๋Œ€ํ•œ ๋น ๋ฅธ ์••์ถ•/์••์ถ• ํ•ด์ œ๋ฅผ ์ถ”๊ฐ€ํ–ˆ์œผ๋ฉฐ ์•ฝ๊ฐ„์˜ ๋ธ”๋กญ ์œ ํ˜• ๋ฐ”์ดํŠธ๋ฅผ ํ‘œ์‹œ๋กœ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ํŒฉ ์ธ๋ฑ์Šค์— ํ•„๋“œ๋ฅผ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค. PLength(์ผ๋ฐ˜ ํ…์ŠคํŠธ ๊ธธ์ด)๋Š” ๊ทธ๋•Œ๊นŒ์ง€ ์ €์žฅ๋˜์ง€ ์•Š์•˜์ง€๋งŒ "bloblength - crypto.Extension"์œผ๋กœ ๊ณ„์‚ฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์ผ๋ถ€ ๋ฐฑ์—…์˜ ๊ฒฝ์šฐ ๊ณต๊ฐ„์„ ๋œ ์ฐจ์ง€ํ•  ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๋” ๋น ๋ฅด๊ฒŒ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค(์ฒ˜๋ฆฌํ•  ๋ฐ์ดํ„ฐ๊ฐ€ ์ ์Œ).

๋ชจ๋“  restic ํ…Œ์ŠคํŠธ๋Š” ์ž˜ ํ†ต๊ณผํ•ฉ๋‹ˆ๋‹ค. ์ด์ „ restic ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์—์„œ ์ž‘๋™ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ์ผ๋ฐ˜ restic(๋งˆ์Šคํ„ฐ์˜ ์ €์žฅ์†Œ)์€ ์ƒˆ blob์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” @fd0์˜ ์†๋„ ๋ชฉํ‘œ์— ๋œ ์˜ํ–ฅ์„ ์ค„ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— snappy(https://github.com/golang/snappy)๋ฅผ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค.

๋งˆ์Šคํ„ฐ์— ์••์ถ• ์ฐฉ๋ฅ™์— ๋Œ€ํ•œ $50 ํ˜„์ƒ๊ธˆ ์ถ”๊ฐ€

Bountysource

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

@klauspost์˜ ์ฒซ ๋ฒˆ์งธ ๋Œ“๊ธ€์—์„œ ์–ธ๊ธ‰ํ•œ ์ผ์ • ์‹œ๊ฐ„ ์••์ถ• ๋ชจ๋“œ์™€ ๊ฐ™์ด ์ด๋ฅผ ํˆฌ๋ช…ํ•˜๊ฒŒ ์ฒ˜๋ฆฌํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€์žฅ ์‰ฝ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ํŒŒ์ผ ์œ ํ˜• ๋ชฉ๋ก์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๋ธ”๋ž™๋ฆฌ์ŠคํŠธ๋Š” ์ ˆ๋Œ€ ์••์ถ•๋˜์ง€ ์•Š๊ณ  ํ™”์ดํŠธ๋ฆฌ์ŠคํŠธ๋Š” ํ•ญ์ƒ ์••์ถ•๋˜๋ฉฐ ๋‚˜๋จธ์ง€๋Š” ํŒŒ์ผ์˜ ์ž‘์€ ๋ถ€๋ถ„์„ ์••์ถ•ํ•˜๋ ค๊ณ  ์‹œ๋„ํ•˜๊ณ  ํฌ๊ธฐ ์ถ•์†Œ๊ฐ€ ์‹คํŒจํ•˜๋ฉด ํฌ๊ธฐํ•ฉ๋‹ˆ๋‹ค. ์ฃผ์–ด์ง„ ์ž„๊ณ„๊ฐ’ ์ด์ƒ.

์ด๊ฒƒ์ด ํŒŒ์ผ ์ˆ˜์ค€์ด ์•„๋‹Œ ์ฒญํฌ์—์„œ ์–ผ๋งˆ๋‚˜ ์ž˜ ๋งคํ•‘๋˜๋Š”์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ๊ทธ๊ฒƒ์„ ์•”ํ˜ธํ™”/์•”ํ˜ธ ํ•ด๋… ํŒจ์Šค์— ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์— ๋ฐ˜๋Œ€ํ•ฉ๋‹ˆ๋‹ค.
์ผ๋ถ€๋Š” ์˜ˆ์ธกํ•  ์ˆ˜ ์žˆ๊ณ  ๊ฒฐ๊ณผ ํŒฉ/๋ธ”๋กญ ๊ธธ์ด๋Š” ์˜ˆ์ธกํ•  ์ˆ˜ ์—†๋Š”/๋น„๋ฐ€ ๋ฐ์ดํ„ฐ์˜ ์ผ๋ฐ˜ ํ…์ŠคํŠธ์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ๋ˆ„์ถœํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์„œ๋กœ ๋‹ค๋ฅธ ์ข…๋ฅ˜์˜ ๋ฐ์ดํ„ฐ๋ฅผ ํ˜ผํ•ฉํ•˜๊ณ  ์‹ถ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
์ด๊ฒƒ์ด "๋œ ๋ฉ‹์ง€๋‹ค"๊ณ  ํ•ด๋„ ํŒŒ์ผ๋ณ„๋กœ ํ•ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ํŒŒ์ผ์„ ์ฝ๊ธฐ ์œ„ํ•ด ์ˆ˜๋งŽ์€ ํŒฉ ํŒŒ์ผ(๊ฐ BLOB์ด ํ•˜๋‚˜๋งŒ ์ค‘์š”ํ•จ)์˜ ์••์ถ• ํ•ด์ œ๋ฅผ ์ˆ˜ํ–‰ํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค๋Š” ์ด์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

@teknico

์œ„์—์„œ ์–ธ๊ธ‰ํ–ˆ๋“ฏ์ด ๋ฏธ๋””์–ด, ์•”ํ˜ธํ™”๋œ ํŒŒ์ผ ๋˜๋Š” ์ด๋ฏธ ์••์ถ•๋œ ํŒŒ์ผ๊ณผ ๊ฐ™์ด ์••์ถ•ํ•  ์ˆ˜ ์—†๋Š” ํŒŒ์ผ์„ ์••์ถ•ํ•˜์ง€ ์•Š๋„๋ก ๊ตฌ์„ฑํ•  ์ˆ˜ ์—†๋Š” ์ž๋™ํ™”๋œ ๋ฐฉ๋ฒ•์ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ˆ˜์ •๋œ ์ˆ˜์ถ• ํŒจํ‚ค์ง€๋Š” ์ด๋ฏธ ์••์ถ•๋œ ๋ฐ์ดํ„ฐ ๊ฑด๋„ˆ๋›ฐ๊ธฐ๋ฅผ ๊ตฌํ˜„ํ•˜๋ฉฐ ์ฝ”์–ด๋‹น ~250MB/s์˜ ์†๋„๋กœ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. Go 1.7 ์ˆ˜์ถ•์€ ๊ฐ€์žฅ ๋น ๋ฅธ ์••์ถ• ์ˆ˜์ค€์—์„œ๋งŒ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

Snappy ๋ฐ LZ4๋Š” ์œ ์‚ฌํ•œ ๊ฑด๋„ˆ๋›ฐ๊ธฐ ๊ธฐ๋Šฅ์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

์ผ์ • ์‹œ๊ฐ„ ์••์ถ• ๋ชจ๋“œ์™€ ๊ฐ™์ด ์ด๋ฅผ ํˆฌ๋ช…ํ•˜๊ฒŒ ์ฒ˜๋ฆฌํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€์žฅ ์‰ฝ์Šต๋‹ˆ๋‹ค.

๋ฐ˜๋“œ์‹œ ์„ ํƒ์‚ฌํ•ญ์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. Go 1.7(ํ˜„์žฌ HuffmanOnly ๋ฐ ์ด์— ์ƒ์‘ํ•˜๋Š” ๊ฒƒ์œผ๋กœ ๋ถˆ๋ฆผ)์—์„œ ์ด ๋ชจ๋“œ๋Š” ์ž…๋ ฅ์— ๊ด€๊ณ„์—†์ด ์ฝ”์–ด๋‹น ~200MB/s๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์••์ถ•์€ ์ผ๋ฐ˜์ ์œผ๋กœ 80MB/s/์ฝ”์–ด์—์„œ ์ž‘๋™ํ•˜๋Š” "์ตœ๊ณ  ์†๋„"์— ๋น„ํ•ด ์‹ฌ๊ฐํ•˜๊ฒŒ ์ €ํ•˜๋ฉ๋‹ˆ๋‹ค.

@cfcs

์ด๊ฒƒ์ด "๋œ ๋ฉ‹์ง€๋‹ค"๊ณ  ํ•ด๋„ ํŒŒ์ผ๋ณ„๋กœ ํ•ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์ผ๋ฐ˜์ ์œผ๋กœ ๋™์˜ํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” restic์— ์œ„๋กœ ์ฝ์–ด์•ผ ํ•  ๊ฒƒ์ด๋‹ค. ๊ฐ ํŒฉ ํฌ๊ธฐ์˜ ๋ฐ”์ด๋„ˆ๋ฆฌ ํฌ๊ธฐ๋Š” ์•”ํ˜ธํ™”๋˜์ง€ ์•Š์€ ์ƒํƒœ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

@klauspost ๊ฐœ์„  ์‚ฌํ•ญ ์ค‘ ์ผ๋ถ€๊ฐ€ Go 1.7 DEFLATE "BestSpeed" ๋ชจ๋“œ์— ๋ณ‘ํ•ฉ๋œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋งž์Šต๋‹ˆ๊นŒ? ์–ด์ฉŒ๋ฉด ๊ทธ๊ฒƒ์€ ํ•ฉ๋ฆฌ์ ์ธ ๊ธฐ๋ณธ๊ฐ’์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

DEFLATE ํ˜•์‹์„ ์‚ฌ์šฉํ•˜๋Š” ์žฅ์ ์€ ํ˜ธํ™˜ ๊ฐ€๋Šฅํ•œ ๋น„ํŠธ์ŠคํŠธ๋ฆผ์„ ์ƒ์„ฑํ•˜๋Š” ๋‹ค์–‘ํ•œ ์••์ถ•๊ธฐ๊ฐ€ ์žˆ์œผ๋ฏ€๋กœ ์••์ถ• ํ•ด์ œ๊ธฐ์— ์™„์ „ํžˆ ํˆฌ๋ช…ํ•˜๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

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

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

"์••์ถ• ๊ฐ€๋Šฅํ•œ" ํ…Œ์ŠคํŠธ ํœด๋ฆฌ์Šคํ‹ฑ์€ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๊ธฐ ์‰ฝ๊ณ  ๋น„์šฉ์ด ๋งŽ์ด ๋“ญ๋‹ˆ๋‹ค. AMD64์˜ ์ค‘๋ณต ์ œ๊ฑฐ ํŒจํ‚ค์ง€ ์—์„œ 1์ฐจ ์กฐํšŒ ์†๋„์ธ 200MB/s/์ฝ”์–ด๋ฅผ ํ›จ์”ฌ ์ดˆ๊ณผํ•˜๋Š” ๊ฒƒ์€ ์–ด๋ ค์šธ ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒ๋ฉ๋‹ˆ๋‹ค.

๋˜ํ•œ ์‚ฌ์šฉํ•˜๋Š” ์••์ถ•๊ธฐ์— ๋”ฐ๋ผ ํฌ๊ฒŒ ๋‹ฌ๋ผ์ง‘๋‹ˆ๋‹ค. Snappy๋Š” ์ž„์˜์˜ base 64 ๋ฐ์ดํ„ฐ๋ฅผ ์••์ถ•ํ•  ์ˆ˜ ์—†์ง€๋งŒ, ์˜ˆ๋ฅผ ๋“ค์–ด deflate๋Š” ์••์ถ•ํ•  ๊ฒƒ์ด๋ฏ€๋กœ ๊ทธ ๋ถ€๋ถ„์€ ์••์ถ•๊ธฐ์— ๋งก๊ธธ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” Snappy, LZ4 ๋ฐ deflate๋ฅผ ์œ„ํ•ด ๋‚ด์žฅ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

@fd0 ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค. ํŒŒ์ผ ๋‹จ์œ„๊ฐ€ ์•„๋‹ˆ๋ผ blob ๋‹จ์œ„๋ฅผ ์˜๋ฏธํ–ˆ์Šต๋‹ˆ๋‹ค.
์šฐ๋ฆฌ๊ฐ€ ๊ฐ€๋ฒผ์šด ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์„ ํƒํ•˜์ง€ ์•Š๋Š” ํ•œ, ๋‹ค์†Œ CPU๋ฅผ ๋งŽ์ด ์‚ฌ์šฉํ•˜๋Š” ์••์ถ•์€ ๋ณ‘๋ชฉ ํ˜„์ƒ์ด ๋  ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์Šต๋‹ˆ๋‹ค(AES ์˜†์— ์žˆ์œผ๋ฉฐ ํ–ฅํ›„ AES-NI์—์„œ ์ฒ˜๋ฆฌ๋˜๊ธฐ๋ฅผ ํฌ๋งํ•ฉ๋‹ˆ๋‹ค).

@fd0 - ๋น ๋ฅธ "์••์ถ•์„ฑ ์ถ”์ •๊ธฐ"๋ฅผ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. https://play.golang.org/p/Ve5z3txkyz - ์ž„์˜ ๋ฐ์ดํ„ฐ์˜ ์˜ˆ์ธก ๊ฐ€๋Šฅ์„ฑ๊ณผ ์—”ํŠธ๋กœํ”ผ๋ฅผ ์ถ”์ •ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋‚ด๊ฐ€ ์–ธ๊ธ‰ํ–ˆ๋“ฏ์ด ๊ฒฐ์ •ํ•˜๋Š” ๊ฒƒ์€ ์••์ถ•๊ธฐ์— ๋‹ฌ๋ ค ์žˆ์Šต๋‹ˆ๋‹ค.

borg 1.1์—๋Š” 2๊ฐœ์˜ "์••์ถ• ๊ฒฐ์ •์ž"๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

  1. ๊ฒฝ๋กœ ํŒจํ„ด ์ผ์น˜๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํŒŒ์ผ๋ณ„๋กœ ๊ฒฐ์ •( *.zip , *.mp3 , /htdocs/photos/* , ...)
  2. ๊ฒฐ์ •๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ ์ฒญํฌ๋ณ„๋กœ ๊ฒฐ์ •ํ•˜๊ณ  lz4๋ฅผ ์••์ถ•์„ฑ ํ…Œ์ŠคํŠธ๋กœ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์••์ถ•๋˜๋Š” ๊ฒฝ์šฐ ์›ํ•˜๋Š” ์••์ถ•(lz4, zlib, lzma)์œผ๋กœ ๋‹ค์‹œ ์••์ถ•ํ•˜๊ณ , ๊ทธ๋ ‡์ง€ ์•Š์€ ๊ฒฝ์šฐ ์••์ถ•ํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค.

@klauspost ํ , ๊ทธ ํ…Œ์ŠคํŠธ๋Š” ๋‚ด ์ปดํ“จํ„ฐ์—์„œ ๊ทธ๋ ‡๊ฒŒ ๋‚˜์˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

BenchmarkCompressibility-4           100      10345544 ns/op     810.84 MB/s

๋ฒค์น˜๋งˆํฌ ์ฝ”๋“œ๋Š” ์—ฌ๊ธฐ: https://gist.github.com/908c23123dda275a479cf931f2784f5d

Lz4์—๋Š” ์—”ํŠธ๋กœํ”ผ ์ฝ”๋”๊ฐ€ ์—†์œผ๋ฏ€๋กœ ์—ฌ๋Ÿฌ ๋ฒˆ ์œ„์Œ์„ฑ์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.
์•„๋งˆ?

์„ธ ๊ฐ€์ง€ ๋ชจ๋“œ๊ฐ€ ํ•„์š”ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค(์ „์—ญ์ ์œผ๋กœ).

  • ์„ ํ˜• ์‹œ๊ฐ„ ์••์ถ•๊ธฐ๋กœ ๋ชจ๋“  ๋ฐ์ดํ„ฐ Blob ์••์ถ•(๊ธฐ๋ณธ๊ฐ’)
  • ์••์ถ• ์—†์Œ
  • ์ตœ๋Œ€ ์••์ถ•(CPU ์„ฑ๋Šฅ์€ ๋†’์ง€๋งŒ ๋Œ€์—ญํญ์ด ์ž‘์€ ์‚ฌ์šฉ์ž์šฉ)

๋‚˜๋Š” ํ•ญ์ƒ ํŠธ๋ฆฌ ๊ฐ์ฒด(JSON)๋ฅผ ์••์ถ•ํ•˜๊ณ  ์‹ถ๊ธฐ ๋•Œ๋ฌธ์— ASCII ํ…์ŠคํŠธ์— ๋Œ€ํ•œ ์ ์ ˆํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์„ ํƒํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ํ”„๋กœํ† ํƒ€์ž…์„ ๊ตฌ์ถ•ํ•˜๊ธฐ ์œ„ํ•ด @viric ๊ณผ ํ•จ๊ป˜ ์ž‘์—…ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ƒ๊ฐ?

@klauspost ํ , ๊ทธ ํ…Œ์ŠคํŠธ๋Š” ๋‚ด ์ปดํ“จํ„ฐ์—์„œ ๊ทธ๋ ‡๊ฒŒ ๋‚˜์˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค

๋‚˜๋Š” ํ•ญ์ƒ ์ƒˆ๋กœ์šด Go ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ์–ผ๋งˆ๋‚˜ ๋‚˜์œ ์ผ์„ ํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ์žŠ์–ด๋ฒ„๋ฆฝ๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ์˜ˆ์ƒํ–ˆ๋˜ ๊ฒƒ์˜ ์ ์–ด๋„ ๋‘ ๋ฐฐ.

์„ธ ๊ฐ€์ง€ ๋ชจ๋“œ๊ฐ€ ํ•„์š”ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค(์ „์—ญ์ ์œผ๋กœ).

๋” ํšจ์œจ์ ์ธ ์••์ถ•๊ธฐ(๋Œ€๋ถ€๋ถ„ LZMA)๊ฐ€ ์žˆ์ง€๋งŒ Deflate๋Š” 3๊ฐ€์ง€๋ฅผ ๋ชจ๋‘ ์ž˜ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์••์ถ• ์—†๋Š” ์ˆ˜์ถ•์€ ๋ฌผ๋ก  ํ•„์š”ํ•˜์ง€ ์•Š์ง€๋งŒ, ๋ฌผ๋ก  ๋น ๋ฅด๊ณ  ์ตœ์†Œํ•œ์˜ ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ์žˆ์œผ๋ฏ€๋กœ ๋‚˜์ค‘์— ๋‹ค๋ฅธ ๊ฒƒ์„ ์ง€์ •ํ•  ๊ฐ€๋Šฅ์„ฑ๊ณผ ํ•จ๊ป˜ ์ผ๋ฐ˜์ ์ธ ์ˆ˜์ถ• ์ ‘๊ทผ ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ์†๋„์™€ ์••์ถ•๋ฉด์—์„œ ๋ ˆ๋ฒจ 1๊ณผ Huffman ์‚ฌ์ด์— ์žˆ๋Š” ๋˜ ๋‹ค๋ฅธ ์†๋„ ํ–ฅ์ƒ ์„ ๋ณด๊ธฐ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ํ˜„์žฌ๋กœ์„œ๋Š” ์‹œ๊ฐ„์ด ์กฐ๊ธˆ ์†Œ์ค‘ํ•˜๊ณ  ์ƒˆ๋กœ์šด ๊ฒƒ์œผ๋กœ ๋„˜์–ด๊ฐ€๊ธฐ ์ „์— ์ตœ์ข… Go 1.7 ๋ณ€๊ฒฝ ์‚ฌํ•ญ ์ค‘ ์ผ๋ถ€์˜ ๋ฐฑํฌํŠธ๋ฅผ ํ…Œ์ŠคํŠธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋‹จ์ผ ์••์ถ• ์•Œ๊ณ ๋ฆฌ์ฆ˜๋งŒ ์›ํ•œ๋‹ค๋ฉด ์ƒˆ๋กœ์šด ๊ฒฝ์Ÿ์ž zstd๋ฅผ ์‚ดํŽด๋ด์•ผ ํ•ฉ๋‹ˆ๋‹ค: https://github.com/facebook/zstd

lz4์™€ ๊ฐ™์€ ๊ฐœ๋ฐœ์ž๊ฐ€ ๊ฐœ๋ฐœํ–ˆ์œผ๋ฉฐ gzip๋ณด๋‹ค ์••์ถ•๋ฅ ์ด ๋†’์œผ๋ฉด์„œ 3๋ฐฐ ์ด์ƒ ๋น ๋ฆ…๋‹ˆ๋‹ค. https://code.facebook.com/posts/1658392934479273/smaller-and-faster-data-compression-with -zํ‘œ์ค€/

Go์—์„œ ๊ตฌํ˜„์„ ์ฐพ์„ ์ˆ˜ ์—†์—ˆ์ง€๋งŒ zstd๋Š” ๋งค์šฐ ์œ ๋งํ•ด ๋ณด์ž…๋‹ˆ๋‹ค.

๊ณต์‹ ์‚ฌ์ดํŠธ http://facebook.github.io/zstd/#other -์ด Go ๊ตฌํ˜„์— ๋Œ€ํ•œ ๋งํฌ: https://github.com/DataDog/zstd

์•„๋‹ˆ๋ฉด ์ˆœ์ˆ˜ํ•œ Go ๊ตฌํ˜„์„ ์˜๋ฏธํ•ฉ๋‹ˆ๊นŒ?

์˜ˆ, ์ˆœ์ˆ˜ํ•œ Go ๊ตฌํ˜„์„ ์˜๋ฏธํ–ˆ์Šต๋‹ˆ๋‹ค. ํ˜„์žฌ restic์€ C ์ฝ”๋“œ์— ์˜์กดํ•˜์ง€ ์•Š์œผ๋ฉฐ ์ด์ƒ์ ์œผ๋กœ๋Š” ๊ทธ๋ ‡๊ฒŒ ์œ ์ง€ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

์••์ถ• ๊ตฌํ˜„์— ๋Œ€ํ•œ ์˜ˆ์ธก์ด ์žˆ์Šต๋‹ˆ๊นŒ?

์••์ถ• ๊ตฌํ˜„์€ ์ €์žฅ์†Œ ํ˜•์‹ ๋ณ€๊ฒฝ์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ง€๋ฉฐ(๊ณ„ํš/์•„์ด๋””์–ด๋Š” #628์— ์žˆ์Œ) ์„ธ์‹ฌํ•œ ์ฃผ์˜๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์••์ถ•์ด ์ถ”๊ฐ€๋˜๋Š” ์ •ํ™•ํ•œ ๋‚ ์งœ๋Š” ์—†์Šต๋‹ˆ๋‹ค. ;)

์ด๋ฅผ ์œ„ํ•ด ์šฐ๋ฆฌ๊ฐ€ ํ•  ์ˆ˜ ์žˆ๊ฑฐ๋‚˜ ๊ธฐ์—ฌํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด ์žˆ์Šต๋‹ˆ๊นŒ?

๊ทธ๋ ‡๊ฒŒ ์ƒ๊ฐํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค :wink: ์‹œ๊ฐ„์ด ํ•„์š”ํ•  ๋ฟ์ž…๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ #790์˜ ํ…Œ์ŠคํŠธ ๋ฒ ๋“œ๋ฅผ ํ•œ ๋ฒˆ ๋” ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‚ด restic ๋นŒ๋“œ์—์„œ ๋ชจ๋“  ์•”ํ˜ธํ™”๋ฅผ ์ œ๊ฑฐํ•œ ๋‹ค์Œ ๋‹ค์‹œ ํ•œ ๋ฒˆ ์ „์ฒด ๋ฐฑ์—…์„ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. ์•”ํ˜ธํ™”๋œ ๊ฒƒ๊ณผ ๋™์ผํ•œ ํฌ๊ธฐ๋กœ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—๋Š” ๋†€๋ผ์šด ์ผ์ด ์•„๋‹™๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋‚˜๋Š” ์ €์žฅ์†Œ๋ฅผ ์••์ถ•ํ–ˆ๊ณ  ๋‚ด๊ฐ€ ์ฐพ์€ ๊ฒƒ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

35G backup-unencrypted
6.4G    backup-unencrypted.tgz2

๋ฌด์Šจ ์ฐจ์ด! ๋น„๊ต๋ฅผ ์œ„ํ•ด ์••์ถ•๋œ ๋‹จ์ผ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋คํ”„์˜ ํฌ๊ธฐ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

1.7G    single-backup.sql.gz

์œ„์˜ 29๊ฐ€์ง€๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ผ๋ฐ˜ ๋ฐฑ์—… ๋Œ€๋น„ ์•ฝ 100๋ฐฐ ์ ˆ๊ฐ!

์•”ํ˜ธํ™”๊ฐ€ ์ถ”๊ฐ€๋œ ๋ชจ๋“  ์œ„์น˜๋ฅผ ์ฐพ์•˜๊ธฐ ๋•Œ๋ฌธ์— ์ฃผ์‹ gzip ๊ตฌํ˜„์œผ๋กœ ๋งค์šฐ ๊ฐ„๋‹จํ•˜๊ฒŒ ๊ตฌ์„ฑ ๊ฐ€๋Šฅํ•œ ์••์ถ•์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๊ณ  ํ–ฅํ›„ ๋‹ค๋ฅธ ์••์ถ• ์—”์ง„์„ ์‚ฌ์šฉํ•  ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ด์˜๊ฐ€ ์žˆ์œผ์‹ ๊ฐ€์š”?

(๋‚˜๋Š” ์•„๋งˆ๋„ ์„ฑ๊ณตํ•˜๊ฑฐ๋‚˜ ์‹คํŒจํ•˜๊ธฐ ์œ„ํ•ด 2์ฃผ๊ฐ„์˜ ์ €๋… ์‹œ๊ฐ„์„ ๋‚˜ ์ž์‹ ์—๊ฒŒ ์ค„ ๊ฒƒ์ด๋‹ค.)

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

์••์ถ•์„ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์ด ์ฒ˜์Œ์—๋Š” ์‰ฌ์›Œ ๋ณด์ผ ์ˆ˜ ์žˆ์ง€๋งŒ ๊ทธ๋ ‡์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์‹ค์ˆ˜๋กœ restic์„ ์˜ˆ๊ธฐ์น˜ ์•Š์€ ๊ณต๊ฒฉ์— ์ทจ์•ฝํ•˜๊ฒŒ ๋งŒ๋“ค์ง€ ์•Š๋„๋ก ๋งค์šฐ ์ฃผ์˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(์ด๋Š” TLS ํ”„๋กœํ† ์ฝœ์— ์—ฌ๋Ÿฌ ๋ฒˆ ์—ฐ์†์œผ๋กœ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค(์˜ˆ, ์ด๊ฒƒ์€ ๋‹ค๋ฅธ ์ƒํ™ฉ์ž„์„ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค).

์ „์ฒด ํ”„๋กœ์ ํŠธ์—์„œ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๊ฒƒ์€ ์ฝ”๋“œ๊ฐ€ ์•„๋‹ˆ๋ผ ์ €์žฅ์†Œ ํ˜•์‹์ž…๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž๋“ค์€ ์šฐ๋ฆฌ์—๊ฒŒ ๋ฐ์ดํ„ฐ๋ฅผ ์‹ ๋ขฐํ•˜๊ณ  ์˜ค๋ž˜ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณต์›ํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ์—ฌ๋ถ€์— ์˜์กดํ•˜๋ฏ€๋กœ ์ €์žฅ์†Œ ํ˜•์‹์˜ ์•ˆ์ •์„ฑ์ด ๊ฐ€์žฅ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์••์ถ•์„ ์ง€์›ํ•˜๋ ค๋ฉด ๋จผ์ € ์ €์žฅ์†Œ ํ˜•์‹์˜ ๋‹ค์Œ ๋ฒ„์ „์„ ๊ฒฐ์ •(๋ฐ ๊ตฌํ˜„)ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ํ† ๋ก ์€ ์—ฌ๊ธฐ: https://github.com/restic/restic/issues/628

๋‚˜๋Š” ๋‹น์‹ ์ด ์ด๊ฒƒ์„ ๊ตฌํ˜„ํ•˜๊ธฐ๋ฅผ ์—ด๋งํ•˜๊ณ  ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์šฐ๋ฆฌ๊ฐ€ ์ €์žฅ์†Œ ํ˜•์‹์— ๋™์˜ํ•˜๊ณ  ์ด ๋ฌธ์ œ์˜ ๋ชจ๋“  ๊ฐ๋„์— ๋Œ€ํ•ด ๋…ผ์˜ํ•  ๋•Œ๊นŒ์ง€ ์ด๊ฒƒ์— ์‹œ๊ฐ„์„ ํ• ์• ํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค. ๊ฐ์‚ฌ ํ•ด์š”!

์ œ๊ฑฐ๋œ ์•”ํ˜ธํ™”์— ๊ด€ํ•ด์„œ๋Š” ๋ณ‘ํ•ฉ์„ ์ œ์•ˆํ•˜์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์••์ถ•์ด ์ž‘๋™ํ•˜๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด์„œ๋งŒ ๊ทธ๋ ‡๊ฒŒ ํ–ˆ์Šต๋‹ˆ๋‹ค . ๊ทธ๋ฆฌ๊ณ  ์˜ˆ, ์ด๊ฒƒ์€ ์‹ ์ค‘ํ•˜๊ฒŒ ๊ณ„ํš๋˜์–ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค(์•„๋ฌด๋„ ๊ฐ‘์ž๊ธฐ ์•”ํ˜ธํ™”๊ฐ€ ๋น„ํ™œ์„ฑํ™”๋œ ์ €์žฅ์†Œ๋ฅผ ํ™•์ธํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์žƒ๊ณ  ์‹ถ์–ดํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค).

json.Unmarshal ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ตฌ์„ฑ์— ์›ํ•˜๋Š” ๋งŒํผ ์ƒˆ ํ‚ค๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. JSON์—์„œ ์ฐพ์„ ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ ๊ธฐ๋ณธ๊ฐ’์„ ๊ทธ๋Œ€๋กœ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค.

์•Œ๊ณ ๋ฆฌ์ฆ˜ ์„ ํƒ์ด ์š”์ ์ด ์•„๋‹ˆ๋ผ ์ดํ•ด๋จ: ํ•˜์ง€๋งŒ ํ–ฅํ›„ ์ฐธ์กฐ๋ฅผ ์œ„ํ•ด Brotli ๋Š” ๊ฐ•๋ ฅํ•œ ๊ฒฝ์Ÿ์ž๋กœ ๋ณด์ž…๋‹ˆ๋‹ค.

๋‚ด๊ฐ€ ์•„๋Š” ํ•œ Brotli ์••์ถ•์€ ๋งค์šฐ ๋Š๋ฆฌ๊ธฐ ๋•Œ๋ฌธ์—(iirc 60 x gzip) ๋ฐฑ์—…์— ์ผ๋ฐ˜์ ์ด์ง€ ์•Š์€ ์“ฐ๊ธฐ ๋ฐ ์••์ถ•์— ๋น„ํ•ด ๋งค์šฐ ์ž์ฃผ ์ฝ๋Š” ๋ฐ์ดํ„ฐ์— ๊ถŒ์žฅ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์˜ˆ, ์•„์ง ์„ธ๋ถ€ ์‚ฌํ•ญ์œผ๋กœ ๋“ค์–ด๊ฐ€์ง€ ์•Š๊ฒ ์Šต๋‹ˆ๋‹ค. :)

์ด๊ฒƒ์€ ๋‹ค์–‘ํ•œ ์••์ถ• ์•Œ๊ณ ๋ฆฌ์ฆ˜์— ๋Œ€ํ•œ ์ข‹์€ ๊ฐœ์š”๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

Brotli๋Š” ํ•ญ์ƒ ๋” ๋น ๋ฅด๊ฑฐ๋‚˜ ๋” ๋‚˜์€ ์••์ถ•์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์••์ถ• ์ˆ˜์ค€์— ๋”ฐ๋ผ ๋‹ค๋ฆ…๋‹ˆ๋‹ค.

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

Squash ๋ฒค์น˜๋งˆํฌ ์˜ ๋น„๊ต์— ๋‚˜์—ด๋œ ๊ฒƒ์ฒ˜๋Ÿผ ์„ธ ๊ฐ€์ง€ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๋”ฐ๋ผ์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • ๋‹ฌ์„ฑ๋œ ์••์ถ•๋ฅ : ๋””์Šคํฌ ๊ณต๊ฐ„(๋ฐ ๋ฐฑ์—”๋“œ์— ๋Œ€ํ•œ I/O)์„ ์ ˆ์•ฝํ•˜๊ธฐ ์œ„ํ•ด ์••์ถ•๋ฅ ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.

  • ์••์ถ• ์†๋„: ๋ธ”๋ก์„ ์ถ”๊ฐ€ํ•  ๋•Œ๋งˆ๋‹ค ์ด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ค‘์š”ํ•˜๋ฏ€๋กœ AES-NI ๋ฐ ์ผ๋ฐ˜ I/O๋ฅผ ๋”ฐ๋ผ๊ฐˆ ์ˆ˜ ์žˆ์–ด ๋ณ‘๋ชฉ ํ˜„์ƒ์ด ๋ฐœ์ƒํ•˜์ง€ ์•Š๋„๋ก ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ƒˆ๋กœ์šด ์•Œ๊ณ ๋ฆฌ์ฆ˜(์˜ˆ zstd , lz4 , brotli ๊ณผ ๋ฐ˜๋Œ€๋˜๋Š” ์›น ๋ธŒ๋ผ์šฐ์ € ์‚ฌ์šฉ ์‚ฌ๋ก€๊ฐ€ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์••์ถ• ํ•ด์ œ๋ณด๋‹ค ๋Š๋ฆฌ๊ฒŒ ์••์ถ•ํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์„ ํƒํ•˜๊ณ  ์‹ถ์ง€ ์•Š์„ ๊ฒƒ ์ž…๋‹ˆ๋‹ค brotli )์— ์ตœ์ ํ™”๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค("ํ•œ ๋ฒˆ ์••์ถ•, ์ž์ฃผ ์••์ถ• ํ•ด์ œ"์™€ ๋Œ€์กฐ์ ์œผ๋กœ "์ž์ฃผ ์••์ถ•, ๊ฑฐ์˜ ์••์ถ• ํ•ด์ œ"๊ฐ€ ์žˆ์Œ).

  • ๊ฐ์•• ์†๋„: ๊ฐ์•• ์†๋„๋Š” ๋ณต์›ํ•  ๋•Œ๋งŒ ๊ด€๋ จ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋Š๋ฆฐ ๋ณต์›์ด ๊ดœ์ฐฎ๋‹ค๋ฉด ๋Š๋ฆฐ ์••์ถ• ํ•ด์ œ ์†๋„๋ฅผ ๋ฐ›์•„๋“ค์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐ˜๋ฉด์— ์ฒœ์ฒœํžˆ ์••์ถ•์„ ํ’€๊ณ  ์‹ถ์ง€ ์•Š์€ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋„ ์žˆ์œผ๋ฏ€๋กœ ๋‘ ๊ฐ€์ง€ ๋‹ค๋ฅธ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ํ•„์š”ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

density ๋Š” ์••์ถ• ๋น„์œจ ์ธก๋ฉด์—์„œ ํŠนํžˆ ํšจ์œจ์ ์ด์ง€๋Š” ์•Š์ง€๋งŒ ๊ฐ€์žฅ ๋น ๋ฅธ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋ณ‘๋ชฉ ํ˜„์ƒ์ด ์—†๋‹ค๋Š” ์ ์—์„œ (ํ‰๊ท ์ ์œผ๋กœ) ๊ฑฐ์˜ ๋ฌด๋ฃŒ๋กœ 2:1 ์••์ถ• ๋น„์œจ์„ ์–ป์„ ์ˆ˜ ์žˆ์„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. 4:1์„ ์›ํ•˜๋ฉด ๋‹ค๋ฅธ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์„ ํƒํ•ด์•ผ ํ•˜์ง€๋งŒ ๊ฒฐ๊ตญ ์•‰์•„์„œ ๊ธฐ๋‹ค๋ฆฌ๊ฒŒ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

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

๋‚˜๋Š” ๋‹น์‹ ์ด ์ œ์•ˆํ•œ ์ ˆ์ถฉ์•ˆ(trade-offs)์— ๋™์˜ํ•˜์ง€ ์•Š์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋ฐฑ์—…์€ ํŽธ๋ฆฌํ•œ ์‹œ๊ฐ„์— ๋ฐฑ๊ทธ๋ผ์šด๋“œ์—์„œ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(์•„๋งˆ๋„ ์ข‹์€ 10). ๊ทธ๊ฒƒ๋“ค์„ ๋ณต์›ํ•˜๋Š” ๊ฒƒ์€ ์‹œ๊ฐ„ ์••๋ฐ• ํ•˜์—์„œ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ๋ณด๋Š” ๊ด€๋ จ ์ ˆ์ถฉ์€ ๋ธ”๋ก ํฌ๊ธฐ์™€ ์••์ถ• ๋น„์œจ ์‚ฌ์ด์ž…๋‹ˆ๋‹ค. ๋„ˆ๋ฌด ์ž‘์€ ๋ธ”๋ก์€ ์ž˜ ์••์ถ•๋˜์ง€ ์•Š๊ณ  ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ์˜ค๋ฒ„ํ—ค๋“œ๋ฅผ ์ฆ๊ฐ€์‹œํ‚ต๋‹ˆ๋‹ค. ๋ธ”๋ก์ด ๋„ˆ๋ฌด ํฌ๋ฉด ์ค‘๋ณต ์ œ๊ฑฐ ๋น„์œจ์ด ๊ฐ์†Œํ•ฉ๋‹ˆ๋‹ค. ๋Œ€๋ถ€๋ถ„์˜ ์••์ถ• ์•Œ๊ณ ๋ฆฌ์ฆ˜์—์„œ ๋” ๋†’์€ ์ˆ˜์ค€์˜ ์„ค์ •์€ ์ž‘์€ ์ž…๋ ฅ์— ๋Œ€ํ•œ ์••์ถ• ๋น„์œจ์„ ํ–ฅ์ƒ์‹œํ‚ค์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ ์••์ถ•๋ฅ ์ด ๋†’์œผ๋ฉด ์‚ฌ์šฉ์ž๊ฐ€ ๋™์ผํ•œ ๊ณต๊ฐ„์— ๋” ๋งŽ์€ ๋ฒ„์ „์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๊ด€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

snappy๋ฅผ ์‚ฌ์šฉํ•œ ํ…Œ์ŠคํŠธ ๊ฒฐ๊ณผ๊ฐ€ 1) ๋” ์ž‘์€ ๋ฐฑ์—… ํฌ๊ธฐ(์••์ถ•, ์ •์ƒ), 2) ๋” ๋น ๋ฅธ ๋ฐฑ์—… ๋ฐ ๋ณต์›(๋” ์ ์€ ๋ฐ์ดํ„ฐ ์•”ํ˜ธํ™”, HMAC ๋ฐ ์ „์†ก)์ด๋ผ๋Š” ๊ฒฐ๊ณผ๋ฅผ ์–ป์—ˆ์Œ์„ ๊ธฐ์–ตํ•˜์‹ญ์‹œ์˜ค. ์•„์ฃผ ์ €๋ ดํ•œ ๋…ธํŠธ๋ถ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

@cfcs gzip๊ณผ brotli์˜ ๋น„๊ต๋ฅผ ์ฐธ์กฐํ–ˆ์Šต๋‹ˆ๋‹ค.
image
์—ฌ๊ธฐ์—์„œ brotli๋Š” ํ•ญ์ƒ ๋” ๋น ๋ฅด๊ณ  ๋” ๋‚˜์€ ์••์ถ•์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

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

๋‹น์‹ ์€ "์—ฌ๋Ÿฌ ๋ฒˆ ์ž‘์€ ์ž…๋ ฅ"์— ๋Œ€ํ•ด ์•„์ฃผ ์ข‹์€ ์ง€์ ์„ ํ•ฉ๋‹ˆ๋‹ค.

@viric ๋‹น์‹ ์ด ์–ธ๊ธ‰ํ•˜๋Š” ํšจ๊ณผ๋Š” Transfer + Processing ์„น์…˜์˜ Squash ๋ฒค์น˜๋งˆํฌ์—์„œ ๊ณ ๋ ค๋ฉ๋‹ˆ๋‹ค :-)

@ibib ์•„, ์žก์•˜๋‹ค!

@ibib ๊ทธ ์ฐจํŠธ๋ฅผ ์–ด๋””์„œ

์ฐจํŠธ ์ถœ์ฒ˜: https://quixdb.github.io/squash-benchmark/

brotli ๋ฐ zstd๋กœ ๋ช‡ ๊ฐ€์ง€ ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ–ˆ์œผ๋ฉฐ ๊ฒฐ๊ณผ๊ฐ€ ์Šค์ฟผ์‹œ ๋ฒค์น˜๋งˆํฌ์˜ ๊ฒฐ๊ณผ์™€ ์ „ํ˜€ ์ผ์น˜ํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์„ ์•Œ์•˜์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ ๊ทธ ๋ฒค์น˜๋งˆํฌ๊ฐ€ 1,5๋…„์ด๋ผ๋Š” ๊ฒƒ์„ ์ดํ•ดํ–ˆ์Šต๋‹ˆ๋‹ค.

zstd๋Š” ๋‚˜๋ฅผ ์œ„ํ•ด ์•„์ฃผ ์ž˜ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ๋น ๋ฅธ + ๋†’์€ ๋น„์œจ, ๊ทธ๋ฆฌ๊ณ  ๊ทธ "๋ ˆ๋ฒจ"์€ ๋น ๋ฅธ ๋น„์œจ๊ณผ ๋†’์€ ๋น„์œจ ์‚ฌ์ด์— ๋งค์šฐ ํฐ ๋ฒ”์œ„๋ฅผ ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ข‹์€ ์ผ์ด์•ผ.

Brotli๋Š” ์ €์—๊ฒŒ ๋งค์šฐ ๋Š๋ฆฌ๊ฒŒ ์ž‘๋™ํ•˜๋ฉฐ ํ›จ์”ฌ ๋น ๋ฅธ zstd๋ณด๋‹ค ๋” ๋‚˜์€ ์••์ถ• ๋น„์œจ์ด ์—†์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  brotli๋Š” ์˜์–ด ํ…์ŠคํŠธ์˜ ์ž‘์€ ํŒŒ์ผ์— ์ดˆ์ ์„ ๋งž์ถ˜ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค(์˜์–ด ์‚ฌ์ „ ํฌํ•จ). html ์••์ถ• ๋˜๋Š” ์ด์™€ ์œ ์‚ฌํ•œ ๊ฒฝ์šฐ.

๋‚ด๊ฐ€ ์ฐพ์€ ๋” ์ตœ๊ทผ์˜ ๋ฒค์น˜๋งˆํฌ: https://github.com/inikep/lzbench

๊ทธ๋ž˜์„œ LZMA ์••์ถ•์œผ๋กœ zbackup ์— ๋Œ€ํ•ด ํ…Œ์ŠคํŠธ ๋ฒ ๋“œ๋ฅผ ํ•œ ๋ฒˆ ๋” ๋˜์กŒ์Šต๋‹ˆ๋‹ค.

35G backup-unencrypted
6.4G    backup-unencrypted.tgz
2.5G    zbackup

์ธ์ƒ์ ์ด์ง€ ์•Š๋‚˜์š”?

zbackup์—๋Š” ๊ณ ์œ ํ•œ ์ œํ•œ ์‚ฌํ•ญ๊ณผ ๋‹จ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ @viric lzbench ๋งํฌ์— ๋”ฐ๋ฅด๋ฉด ๊ฐ€์žฅ ์ ์ ˆํ•œ ์••์ถ•๊ธฐ๋Š” ๋ฐฑ์—… ์†๋„๋ฅผ ๋Šฆ์ถ”์ง€ ์•Š๋Š” ๊ฒƒ(๋†’์€ ์••์ถ• ์†๋„?, >200MB/sec)์ด๊ณ  ์‹ค์ œ๋กœ๋Š” ์ข‹์€ ์••์ถ•๋ฅ (>=50)์„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋งž์ฃ ?

๊ทธ๋ž˜์„œ ๋‚˜๋Š” ๋น„์œจ๋กœ ์ •๋ ฌ๋œ ํ‘œ์—์„œ ๊ฒฐ๊ณผ๋ฅผ ๊ฑธ๋Ÿฌ๋ƒˆ์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ Go ๊ตฌํ˜„์— ๋Œ€ํ•ด _๋น ๋ฅธ_ ๊ฒ€์ƒ‰์„ ์ˆ˜ํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค(๊ทธ๋ž˜์„œ ํ…Œ์ด๋ธ”์— ๋ณด๊ด€ํ–ˆ์Šต๋‹ˆ๋‹ค). ์ทจ์†Œ์„ ์€ ๊ฑฐ์˜ ๋ชจ๋“  ๊ฒƒ์„ ์ œ๊ฑฐํ•œ ๊ตฌํ˜„์„ ์ฐพ์ง€ ๋ชปํ–ˆ์Œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ๋น ๋ฅธ ๊ฒ€์ƒ‰์ด์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ฒฐ๊ณผ๋ฅผ ๋ณด๊ด€ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ž˜ํผ์— ๋ถˆ๊ณผํ•œ zstd์— ๋Œ€ํ•œ ์˜ˆ์™ธ์ž…๋‹ˆ๋‹ค.

| ์••์ถ•๊ธฐ ์ด๋ฆ„ | ์••์ถ•| ์••์ถ•์„ ํ’‰๋‹ˆ๋‹ค.| ๋น„๊ต ํฌ๊ธฐ | ๋น„์œจ |
| --------------- | -----------| -----------| ----------- | ----- |
| zstd 1.1.4 -1 | 242MB/s | 636MB/s | 73654014 | 34.75 |
| ๋„๋งˆ๋ฑ€ 1.0 -30 | 258MB/s | 867MB/s | 85727429 | 40.45 |
| ๋ฐ€๋„ 0.12.5 ๋ฒ ํƒ€ -3 | 253MB/s | 235MB/s | 87622980 | 41.34 |
| ๊นํŽ ๋ฆฌ 2016-07-13 | 233MB/s | 451MB/s | 87931759 | 41.49 |
| ์ชผ๊ผฌ๋ฏธ 2011-12-24 -9 | 257MB/s | 1263MB/s | 90360813 | 42.63 |
| ์ชผ๊ผฌ๋ฏธ 2011-12-24 -6 | 295MB/s | 1268MB/s | 92090898 | 43.45 |
| ํ€ต 1.5.0 -1 | 346MB/s | 435MB/s | 94720562 | 44.69 |
| ๋„๋งˆ๋ฑ€ 1.0 -20 | 284MB/์ดˆ | 1734MB/์ดˆ | 96924204 | 45.73 |
| ์ชผ๊ผฌ๋ฏธ 2011-12-24 -3 | 352MB/์ดˆ | 1222MB/s | 97255186 | 45.89 |
| lzrw 1991๋…„ 7์›” 15์ผ -4 | 243MB/s | 392MB/์ดˆ | 100131356 | 47.24 |
| lzo1x 2.09 -1 | 394MB/s | 551MB/s | 100572537 | 47.45 |
| lz4 1.7.5 | 452MB/s | 2244MB/s | 100880800 | 47.60 |
| fastlz 0.1 -2 | 243MB/s | 469MB/์ดˆ | 100906072 | 47.61 |
| lzo1y 2.09 -1 | 397MB/์ดˆ | 556MB/s | 101258318 | 47.78 |
| lzo1x 2.09 -15 | 406MB/s | 549MB/์ดˆ | 101462094 | 47.87 |
| ๋ฐ€๋„ 0.12.5 ๋ฒ ํƒ€ -2 | 480MB/s | 655MB/s | 101706226 | 47.99 |
| lzf 3.6 -1 | 251MB/s | 565MB/s | 102041092 | 48.14 |
| ๋‚ ๋ ตํ•œ 1.1.4 | 327MB/s | 1075MB/s | 102146767 | 48.19 |
| blosclz 2015-11-10 -9 | 220MB/s | 696MB/์ดˆ | 102817442 | 48.51 |
| ์ชผ๊ผฌ๋ฏธ 2011-12-24 -0 | 384MB/s | 1221MB/s | 103072463 | 48.63 |
| lzo1x 2.09 -12 | 418MB/s | 550MB/s | 103238859 | 48.71 |
| ๋„๋งˆ๋ฑ€ 1.0 -10 | 360MB/s | 2625MB/s | 103402971 | 48.79 |
| fastlz 0.1 -1 | 235MB/s | 461MB/s | 104628084 | 49.37 |
| lzrw 1991๋…„ 7์›” 15์ผ -3 | 226MB/s | 449MB/์ดˆ | 105424168 | 49.74 |
| lzf 3.6 -0 | 244MB/์ดˆ | 550MB/s | 105682088 | 49.86 |
| lzo1x 2.09 -11 | 424MB/s | 560MB/s | 106604629 | 50.30 |
| lz4fast 1.7.5 -3 | 522MB/s | 2244MB/s | 107066190 | 50.52 |
| ํ† ๋„ค์ด๋„ 0.6a -1 | 233MB/s | 334MB/s | 107381846 | 50.66 |
| ๋ฉคํ”ผ | 8657MB/s | 8891MB/s | 211947520 |100.00 |

LZ4๊ฐ€ ๊ฐ€์žฅ ์ ํ•ฉํ•œ ์••์ถ•๊ธฐ์ฒ˜๋Ÿผ ๋ณด์ž…๋‹ˆ๊นŒ?

์žˆ๋Š” ๊ฒฝ์šฐ lz4(>=1.7.0 r129) ๋ฐ zstd(>=1.3.0)๋ฅผ ์›ํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๋˜ํ•œ borgbackup์„ ์œ„ํ•ด ์ด๊ฒƒ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ zstd๋Š” lz4 ์†๋„์—์„œ ๋” ๋‚˜์€ ์†๋„๊นŒ์ง€ ํ•˜๋‚˜์˜ ๋‹จ์ผ ์ •์ˆ˜๋กœ ๋งค์šฐ ์กฐ์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
xz ์••์ถ•๋ณด๋‹ค. ๊ทธ๊ฒƒ์€ ๋ฐ€๋„์˜ ํ–‰๋ณตํ•œ ์‚ฌ์šฉ์ž๋ฅผ ๋Š๋ฆฌ๊ฒŒ ๋งŒ๋“ค ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์••์ถ• ๋ฐ ๋น ๋ฅธ ์••์ถ•. zstd๋Š” ๋งํ•  ๊ฒƒ๋„ ์—†๊ณ 
์••์ถ• ๋…ธ๋ ฅ์— ๊ด€๊ณ„์—†์ด ๋งค์šฐ ๋น ๋ฅด๊ฒŒ ์••์ถ•์„ ํ’‰๋‹ˆ๋‹ค.

lz4๋Š” ๋ชฉ์ ์ด ๋งค์šฐ ์ข์Šต๋‹ˆ๋‹ค.

2017๋…„ 12์›” 16์ผ ํ† ์š”์ผ 09:50:49AM -0800์— TW๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ผ์Šต๋‹ˆ๋‹ค.

์žˆ๋Š” ๊ฒฝ์šฐ lz4 ๋ฐ zstd๋ฅผ ์›ํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๋˜ํ•œ borgbackup์„ ์œ„ํ•ด ์ด๊ฒƒ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

--
๋‹น์‹ ์ด ์–ธ๊ธ‰๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์„ ๋ฐ›๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ฑฐ๋‚˜ GitHub์—์„œ ํ™•์ธํ•˜์„ธ์š”.
https://github.com/restic/restic/issues/21#issuecomment -352199097

--
(Escriu-me xifrat si saps PGP / Write ciphered if you know PGP)
PGP ํ‚ค 7CBD1DA5 - https://emailselfdefense.fsf.org/

์Œ.. https://github.com/restic/restic/issues/21#issuecomment -250983311 ์— ๋”ฐ๋ฅด๋ฉด restic ์ข…์†์„ฑ์„ ๋ฌด๋ฃŒ๋กœ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•ด zstd๋Š” ํ˜„์žฌ๋กœ์„œ๋Š” ์˜ต์…˜์ด ์•„๋‹™๋‹ˆ๋‹ค. ๋˜ํ•œ ํŠนํ—ˆ/๋ผ์ด์„ ์Šค ๋ฌธ์ œ์— ๋Œ€ํ•œ ๋ช‡ ๊ฐ€์ง€ ์Šค๋ ˆ๋“œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

xz ๋ฐ ๋†’์€ ์••์ถ•๋ฅ ์˜ ๊ฒฝ์šฐ ๋‚ฎ์€ ์••์ถ• ์„ค์ •์—์„œ๋„ ํ‘œ์— ๋”ฐ๋ฅด๋ฉด ๊ฐ€์žฅ ๋น ๋ฅธ ์••์ถ•๋ฅ ์€ ์•ฝ 15MB/sec์ž…๋‹ˆ๋‹ค.

๋น ๋ฅธ ๋ฐฑ์—…์— ๋Œ€ํ•œ ์š”๊ตฌ ์‚ฌํ•ญ์ด ๋‚ฎ์•„์ง€๋ฉด(์˜ˆ: >=30MB/sec) ๋‹ค์Œ์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

| ์••์ถ•๊ธฐ ์ด๋ฆ„ | ์••์ถ•| ์••์ถ•์„ ํ’‰๋‹ˆ๋‹ค.| ๋น„๊ต ํฌ๊ธฐ | ๋น„์œจ |
| --------------- | -----------| -----------| ----------- | ----- |
| xz 5.2.3 -9 | 1.70MB/s | 56MB/์ดˆ | 48745306 | 23:00 |
| xz 5.2.3 -6 | 1.89MB/s | 58MB/s | 49195929 | 23.21 |
| xz 5.2.3 -3 | 4.18MB/s | 55MB/s | 55745125 | 26.30 |
| zstd 1.1.4 -8 | 30MB/s | 609MB/s | 61021141 | 28.79 |
| ์ฆ๋ง 2016-01-10 -2 | 32MB/s | 136MB/์ดˆ | 61917662 | 29.21 |
| xz 5.2.3 -0 | 15MB/s | 44MB/s | 62579435 | 29.53 |
| ์ฆ๋ง 2016-01-10 -0 | 38MB/s | 134MB/s | 63407921 | 29.92 |
| zstd 1.1.4 -5 | 88MB/s | 553MB/s | 64998793 | 30.67 |
| lzfse 2017-03-08 | 48MB/s | 592MB/s | 67624281 | 31.91 |
| libdeflate 0.7 -6 | 64MB/s | 609MB/s | 67928189 | 32.05 |
| ๋ธŒ๋กœํ‹€๋ฆฌ 2017-03-10 -2 | 98MB/s | 289MB/s | 68085200 | 32.12 |
| zstd 1.1.4 -2 | 185MB/s | 587MB/s | 70164775 | 33.10 |
| ํ† ๋„ค์ด๋„ 0.6a -4 | 91MB/์ดˆ | 197MB/s | 70513617 | 33.27 |
| libdeflate 0.7 -3 | 96MB/์ดˆ | 602MB/s | 70668968 | 33.34 |
| ์—‘์ŠคํŒฉ 2016-06-02 -1 | 98MB/s | 506MB/s | 71090065 | 33.54 |
| ํ† ๋„ค์ด๋„ 0.6a -3 | 119MB/์ดˆ | 188MB/s | 72662044 | 34.28 |
| libdeflate 0.7 -1 | 117MB/s | 570MB/s | 73318371 | 34.59 |
| ๋„๋งˆ๋ฑ€ 1.0 -42 | 90MB/s | 938MB/s | 73350988 | 34.61 |
| zstd 1.1.4 -1 | 242MB/s | 636MB/s | 73654014 | 34.75 |

์—ฌ๋Ÿฌ deflate ๊ตฌํ˜„์ด ์žˆ์ง€๋งŒ ๋น„๊ตํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
์ฐธ๊ณ ๋ฅผ ์œ„ํ•ด ์™ผ์ชฝ xz
zstd๋Š” ๋งค์šฐ ์œ ๋งํ•ด ๋ณด์ž…๋‹ˆ๋‹ค. Go ๊ตฌํ˜„์ด ์—†๋‹ค๋Š” ๊ฒƒ์ด ๋„ˆ๋ฌด ์•„์‰ฝ์Šต๋‹ˆ๋‹ค.

@viric zstd๋Š”

๊ทธ๋Ÿฌ๋‚˜ ์—ฌ๋Ÿฌ ์••์ถ•๊ธฐ๊ฐ€ ์•„๋‹Œ ํ•˜๋‚˜์˜ ์••์ถ•๊ธฐ๋งŒ ๊ฐ–๊ณ  ์‹ถ๋‹ค๋ฉด zstd๊ฐ€ ๋” ์œ ์—ฐํ•ฉ๋‹ˆ๋‹ค.

๋‚ด ์ง€๊ฐ์„ ์šฉ์„œํ•˜์‹ญ์‹œ์˜ค. ์ผ๋ถ€ ์˜๊ฒฌ:

์••์ถ• ์†๋„: ๋ธ”๋ก์„ ์ถ”๊ฐ€ํ•  ๋•Œ๋งˆ๋‹ค ์ด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ค‘์š”ํ•˜๋ฏ€๋กœ AES-NI ๋ฐ ์ผ๋ฐ˜ I/O๋ฅผ ๋”ฐ๋ผ๊ฐˆ ์ˆ˜ ์žˆ์–ด ๋ณ‘๋ชฉ ํ˜„์ƒ์ด ๋ฐœ์ƒํ•˜์ง€ ์•Š๋„๋ก ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์ด๋Ÿฌํ•œ ์ƒˆ๋กœ์šด ์•Œ๊ณ ๋ฆฌ์ฆ˜(zstd, lz4, brotli์™€ ๊ฐ™์€)์ด ์ตœ์ ํ™”๋œ ์›น ๋ธŒ๋ผ์šฐ์ €์˜ ๋ฐ˜๋Œ€ ์‚ฌ์šฉ ์‚ฌ๋ก€๊ฐ€ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์••์ถ• ํ•ด์ œ๋ณด๋‹ค ๋Š๋ฆฌ๊ฒŒ ์••์ถ•ํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์„ ํƒํ•˜๊ณ  ์‹ถ์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค("์ž์ฃผ ์••์ถ•ํ•˜๊ณ  ๋“œ๋ฌผ๊ฒŒ ์••์ถ• ํ•ด์ œ" "ํ•œ๋ฒˆ ์••์ถ•ํ•˜๊ณ  ์ž์ฃผ ์••์ถ• ํ•ด์ œ"์™€ ๋ฐ˜๋Œ€).

์•„๋‹ˆ์š”, ํ•˜๋“œ์›จ์–ด ๊ฐ€์† AES ์†๋„๋กœ ์••์ถ•ํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ์••์ถ•์€ ํฌ๊ธฐ์— ๋Œ€ํ•œ ๊ฑฐ๋ž˜ ์‹œ๊ฐ„์— ๊ด€ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์••์ถ•๋œ ๋ฐฑ์—…์€ ๋” ์˜ค๋ž˜ ๊ฑธ๋ฆด ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒ๋ฉ๋‹ˆ๋‹ค.

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

๋‚˜๋Š” restic์˜ ์••์ถ• ๋ฐฑ์—…์ด ๋” ์˜ค๋ž˜ ๊ฑธ๋ฆฌ๋”๋ผ๋„ ์ƒ๊ด€ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์‚ฌ์‹ค, ๋‚˜๋Š” ๊ทธ๋“ค์ด ๊ทธ๋ ‡๊ฒŒ ํ•˜๊ธฐ๋ฅผ ๊ธฐ๋Œ€ํ•˜๋ฉฐ, ๊ทธ๊ฒƒ์€ ๋‚ด๊ฐ€ ํ•ด์•ผ ํ•  ์ ˆ์ถฉ์•ˆ์ž…๋‹ˆ๋‹ค. ์ด๋Ÿฐ ์ข…๋ฅ˜์˜ ์••์ถ•์ด ์—†์œผ๋ฉด restic์€ ๋‚˜์—๊ฒŒ ์œ ์šฉํ•˜์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ฐ์•• ์†๋„: ๊ฐ์•• ์†๋„๋Š” ๋ณต์›ํ•  ๋•Œ๋งŒ ๊ด€๋ จ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋Š๋ฆฐ ๋ณต์›์ด ๊ดœ์ฐฎ๋‹ค๋ฉด ๋Š๋ฆฐ ์••์ถ• ํ•ด์ œ ์†๋„๋ฅผ ๋ฐ›์•„๋“ค์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐ˜๋ฉด์— ์ฒœ์ฒœํžˆ ์••์ถ•์„ ํ’€๊ณ  ์‹ถ์ง€ ์•Š์€ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋„ ์žˆ์œผ๋ฏ€๋กœ ๋‘ ๊ฐ€์ง€ ๋‹ค๋ฅธ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ํ•„์š”ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

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

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

์ธ๋ฑ์Šค๋ฅผ ์••์ถ•ํ•  ํ•„์š”๊ฐ€ ์ „ํ˜€ ์—†์„ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค(๋˜๋Š” ๋ฐ˜๋“œ์‹œ ์ข‹์€ ์ƒ๊ฐ์ผ ์ˆ˜๋„ ์žˆ์Œ). ์ธ๋ฑ์Šค๋Š” ๊ณ ์œ ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ๊ฒƒ์ด ์ „์ฒด ๋ชฉ์ ์ด๊ธฐ ๋•Œ๋ฌธ์— ์ฒ˜์Œ์—๋Š” ์ž˜ ์••์ถ•๋˜์ง€ ์•Š์„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ๊ฐœ์ธ์ ์œผ๋กœ ์šฐ๋ฆฌ๊ฐ€ ํ•˜๋‚˜์˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜(์šฐ๋ฆฌ๊ฐ€ ๋ฌด์—‡์„ ์„ ํƒํ•˜๋“ ์ง€ ๊ฐ„์—)์„ ๊ณ ์ˆ˜ํ•ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ž˜์•ผ (์ƒˆ๋กœ์šด ์–ธ์–ด๋กœ๋“  ๋ฌด์—‡์ด๋“ ) Restic์„ ์žฌ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ์ด ๋น„ํ•ฉ๋ฆฌ์ ์œผ๋กœ ์–ด๋ ต๊ฒŒ ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ฝ”๋„ˆ ์ผ€์ด์Šค์— ๋Œ€ํ•ด ํ…Œ์ŠคํŠธํ•˜๊ธฐ ์–ด๋ ต๊ธฐ ๋•Œ๋ฌธ์— ๋‘ ๊ฐ€์ง€ ํฅ๋ฏธ๋กœ์šด ์••์ถ• ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ๋ฒ„๊ทธ์— ๋…ธ์ถœ๋˜์ง€ ์•Š๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ์šฐ๋ ค๋ฅผ ์ดํ•ดํ•˜์ง€๋งŒ ๊ทธ๊ฒƒ์€ ์‹ค์ˆ˜๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ตœ์†Œํ•œ repo ํ˜•์‹์€ ์—ฌ๋Ÿฌ ์••์ถ• ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ํ—ˆ์šฉํ•ด์•ผ ๋‚˜์ค‘์— ๋” ์ƒˆ๋กœ์šด ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ์ถ”๊ฐ€๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž๊ฐ€ ์‚ฌ์šฉํ•˜๋ ค๋Š” ๊ฒƒ์„ ์„ ํƒํ•  ์ˆ˜ ์žˆ๋„๋ก ์••์ถ•์„ ์œ„ํ•œ ํ”Œ๋Ÿฌ๊ทธํ˜• ๋ชจ๋“ˆ์ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์‚ฌ์šฉ์ž๊ฐ€ ์›ํ•˜๋Š” ๊ฒฝ์šฐ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ๋Š” restic-xz , restic-zstd ๋“ฑ๊ณผ ๊ฐ™์€ ๋ฐ๋น„์•ˆ ํŒจํ‚ค์ง€๋ฅผ ์ƒ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•ด๋‹น ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋ฐฑ์—… ๋ฐ์ดํ„ฐ์˜ ์••์ถ•์€ restic์ด ์••์ถ• ๊ธฐ๋Šฅ์— ์ผ๋ถ€ ๋ฐ์ดํ„ฐ๋ฅผ ๋„˜๊ฒจ์ฃผ๊ณ  ๋‹ค์‹œ ์••์ถ•๋˜๋„๋ก ์ถ”์ƒํ™”ํ•ด์•ผ ํ•˜๋ฉฐ, restic์€ ๊ทธ ์‚ฌ์ด์— ๋ฌด์Šจ ์ผ์ด ์ผ์–ด๋‚˜๋Š”์ง€ ์‹ ๊ฒฝ ์“ฐ์ง€ ์•Š์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ์••๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค.

๋น ๋ฅธ ๋ฐฑ์—…์— ๋Œ€ํ•œ ์š”๊ตฌ ์‚ฌํ•ญ์ด ๋‚ฎ์•„์ง€๋ฉด(์˜ˆ: >=30MB/sec) ๋‹ค์Œ์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๊ฒƒ์€ ๋‚˜์—๊ฒŒ ํ•ฉ๋ฆฌ์ ์œผ๋กœ ๋ณด์ธ๋‹ค. ๋กœ์ปฌ ๋ฐฑ์—…์€ ํ•œ ์ข…๋ฅ˜์ผ ๋ฟ์ž…๋‹ˆ๋‹ค. ๋„คํŠธ์›Œํฌ ๋ฐฑ์—…์€ ์••์ถ• ์†๋„๋กœ ์ธํ•ด ๋ณ‘๋ชฉ ํ˜„์ƒ์ด ๋ฐœ์ƒํ•  ๊ฐ€๋Šฅ์„ฑ์ด ์ ์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ์‚ฌ์šฉ์ž๊ฐ€ ํ•„์š”์— ๋”ฐ๋ผ ์ ์ ˆํ•œ ์†”๋ฃจ์…˜์„ ์„ ํƒํ•  ์ˆ˜ ์žˆ๋„๋ก ์กฐ์ •ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋งฅ์ฃผ์— 10$ ํ˜„์ƒ๊ธˆ ์ถ”๊ฐ€::)
image

๐Ÿบ++

๋‹ค๋ฅธ ์‚ฌ๋žŒ์ด ๊ธฐ์—ฌํ•˜๊ณ  ์‹ถ์€ ๊ฒฝ์šฐ ์—ฌ๊ธฐ์— BountySource์— ๋Œ€ํ•œ ๋งํฌ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
badge
https://api.bountysource.com/badge/issue?issue_id=6096108

์ด๊ฒƒ์ด ์‚ฌ์šฉ์ž๊ฐ€ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ์‹์œผ๋กœ ๊ตฌํ˜„๋  ์ˆ˜ ์žˆ๋Š”์ง€ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์†๋„์™€ ํฌ๊ธฐ์˜ ์„ ํƒ์€ ์‚ฌ์šฉ์ž๊ฐ€ ๊ฒฐ์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ๋” ๋†’์€ ์••์ถ•์„ ์„ ํ˜ธํ•ฉ๋‹ˆ๋‹ค.

์–ธ์ œ ๋„์ฐฉํ• ์ง€ ๊ฒฐ์ •ํ•ฉ์‹œ๋‹ค. ๊ธฐ๋ก์„ ์œ„ํ•ด: ๋‚˜๋Š” ์†๋„ ๋Œ€ ํฌ๊ธฐ ์ธก๋ฉด์—์„œ ์‚ฌ์šฉ์ž์—๊ฒŒ ์•ฝ๊ฐ„์˜ ์ œ์–ด ๊ถŒํ•œ์„ ์ฃผ๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

์••์ถ• ๊ตฌํ˜„์ด ํ•„์š”ํ•œ ๋‚˜๋จธ์ง€๋Š” +1์ž…๋‹ˆ๋‹ค. ๋‚˜๋Š” restic์„ ์‚ฌ์šฉํ•˜์—ฌ VM ์ด๋ฏธ์ง€๋ฅผ backblaze์— ๋ฐฑ์—…ํ•˜๊ณ  ์—…๋กœ๋“œํ•˜๊ธฐ ์ „์— ์••์ถ•ํ•  ์ˆ˜ ์žˆ๊ธฐ๋ฅผ ์›ํ•ฉ๋‹ˆ๋‹ค. ๋‚ด ์‚ฌ์šฉ ์‚ฌ๋ก€์—์„œ๋Š” ์ „์†ก/์ €์žฅ๋œ ๋ฐ์ดํ„ฐ์˜ ํฌ๊ธฐ๋ฅผ ์ค„์ด๊ธฐ ์œ„ํ•ด ๊ฑฐ์˜ ๋ฌดํ•œํ•œ ์‹œ๊ฐ„/CPU๋ฅผ ๊ตํ™˜ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‚˜๋Š” ์†๋„๊ฐ€ ์ผ๋ถ€ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ๋” ์ค‘์š”ํ•œ ๋ฌธ์ œ๋ผ๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์„ ํƒํ•  ์ˆ˜ ์žˆ๋Š” ํ”Œ๋Ÿฌ๊ทธํ˜• ์•„ํ‚คํ…์ฒ˜๊ฐ€ ํ•ต์‹ฌ์ž…๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ์— ๋Œ€ํ•ด ๋” ์ž์„ธํžˆ ์‚ดํŽด๋ณด๋Š” ๋™์•ˆ ํ…Œ์ŠคํŠธ์— ๋„์›€์ด ๋˜์–ด ๊ธฐ์ฉ๋‹ˆ๋‹ค.

@fd0 restic ์ฝ”๋“œ ๊ธฐ๋ฐ˜ ์ž‘์—…์„ ํ•œ ์ง€ ๊ฝค ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ข‹์€ ์ ‘๊ทผ ๋ฐฉ์‹๊ณผ ๋‚ด๊ฐ€ ์–ด๋””๋ฅผ ๋ด์•ผํ•˜๋Š”์ง€์— ๋Œ€ํ•œ ๋น ๋ฅธ ๋ฐฉํ–ฅ์„ ์ œ์‹œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

@klauspost ๊ธฐ์ˆ ์ ์ธ ์ˆ˜์ค€์—์„œ ์••์ถ•์„ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์‰ฝ์ง€๋งŒ ์ด์ „ ๋ฒ„์ „๊ณผ ํ˜ธํ™˜๋˜๋Š” ๋ฐฉ์‹์œผ๋กœ repo ํ˜•์‹ ์—…๊ทธ๋ ˆ์ด๋“œ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. ์ €๋Š” ํ˜„์žฌ ์•„์นด์ด๋ฒ„ ๋ถ€๋ถ„์„ ๋‹ค์‹œ ์ž‘์„ฑํ•˜๋Š๋ผ ๋ฐ”์ฉ๋‹ˆ๋‹ค(#549์™€ ๊ฐ™์€ ์ถ”์•…ํ•œ ๊ฒƒ๋“ค์ด ์‚ฌ๋ผ์ง€๋„๋ก). ๊ทธ ํ›„์— ์••์ถ•์„ ์ถ”๊ฐ€ํ•œ ๋‹ค์Œ repo v2๋กœ ์ „ํ™˜ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๊ฐ€ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š” ์••์ถ• ์•Œ๊ณ ๋ฆฌ์ฆ˜์— ๋Œ€ํ•ด ์–ด๋–ป๊ฒŒ ์ƒ๊ฐํ•˜์‹ญ๋‹ˆ๊นŒ? ์„ธ ๊ฐ€์ง€ ๋ชจ๋“œ๋ฅผ ์ง€์›ํ•  ์ƒ๊ฐ์ž…๋‹ˆ๋‹ค.
1) ์••์ถ• ์—†์Œ
2) "์„ ํ˜• ์‹œ๊ฐ„" ์••์ถ•(๋งŽ์€ CPU ๋ถ€ํ•˜๋ฅผ ์ถ”๊ฐ€ํ•˜์ง€ ์•Š์Œ)
3) "์ตœ๋Œ€ ์••์ถ•"

์ฒซ ๋ฒˆ์งธ ๋ชจ๋“œ์™€ ๋‘ ๋ฒˆ์งธ ๋ชจ๋“œ๊ฐ€ ๊ฐ™์„ ์ˆ˜๋„ ์žˆ์ง€๋งŒ ์•„์ง ํ™•์‹คํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

zstd์™€ ๊ฐ™์€ ๊ฒƒ์„ ๊ธฐ๋ณธ Go ์ฝ”๋“œ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด ๊ฐ€์žฅ ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. Damian์€ Java ๋˜๋Š” C ๋ฒ„์ „์„ ์ด์‹ํ•˜๋Š” ๊ฒƒ์ด ๋งŽ์€ ์ž‘์—…์ด ์•„๋‹ ์ˆ˜ ์žˆ๋‹ค๊ณ  ์•”์‹œํ–ˆ์Šต๋‹ˆ๋‹ค. https://twitter.com/dgryski/status/947259359628738560, ์‹œ๋„ํ•ด ๋ณผ ์ˆ˜ ์žˆ๋„๋ก ๋‚ด๊ฐ€ ํ•  ์ˆ˜ ์žˆ๋Š” ์ผ์ด ์žˆ์Šต๋‹ˆ๊นŒ? :)

๋‚˜๋Š” zstd ํ˜•์‹ ์‚ฌ์–‘์„ ๋ณด์•˜๊ณ  ๋‚˜์—๊ฒŒ ๊ตฌํ˜„ํ•˜๊ธฐ๊ฐ€ ์‰ฝ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. Java ์†Œ์Šค๋Š” โ€‹โ€‹์••์ถ• ํ•ด์ œ๋งŒ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

๋น ๋ฅธ ์••์ถ•์„ ์œ„ํ•ด LZ4๋Š” ๋งค์šฐ ์ž˜ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. Go ํฌํŠธ๋Š” ํ›Œ๋ฅญํ•ฉ๋‹ˆ๋‹ค. zstd๊ฐ€ ๋” ๋‚˜์„ ๊ฒƒ์ด์ง€๋งŒ cgo ๊ตฌํ˜„์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋ ค๋ฉด ์‹œ๋„ํ•˜๊ณ  ํ…Œ์ŠคํŠธํ•œ ํŒจํ‚ค์ง€๋ฅผ ์‚ฌ์šฉํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

์ค‘๋„์˜ ๊ฒฝ์šฐ ์ˆ˜์ถ• ์••์ถ•์€ ์—ฌ์ „ํžˆ โ€‹โ€‹์ข‹์€ ์†๋„/์••์ถ•์ž…๋‹ˆ๋‹ค. ๋“ฑ์˜ ํ…Œ์ŠคํŠธ๋ฅผ ์ž˜ ๋ฐ›์•˜์Šต๋‹ˆ๋‹ค.

๊ณ ์••์ถ•์€ ์กฐ๊ธˆ ๋” ๊นŒ๋‹ค๋กญ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ github.com/ulikunitz/xz ํŒจํ‚ค์ง€์— ๊ธฐ๋ณธ LZMA(2) Go ๊ตฌํ˜„์ด ์žˆ๋Š”

์••์ถ• ๋‹จ๊ณ„๋ฅผ ์‚ฝ์ž…ํ•  ์ž์—ฐ์Šค๋Ÿฌ์šด ์œ„์น˜๋ฅผ ์ฐพ๊ธฐ ์œ„ํ•ด ์†Œ์Šค๋ฅผ ์‚ดํŽด๋ณด์•˜์Šต๋‹ˆ๋‹ค. ๋‚˜์—๊ฒŒ ์˜๋ฏธ๊ฐ€ ์žˆ์—ˆ๋˜ ๊ฒƒ์€ ์—ฌ๊ธฐ์—์„œ ์••์ถ•์„ ํ•˜๊ณ  ์—ฌ๊ธฐ ์—์„œ ์••์ถ•์„ ํ‘ธ๋Š” ๊ฒƒ์ด์—ˆ

๋‚ด๊ฐ€ ๋งŒ๋“  "์••์ถ•์„ฑ ์ถ”์ •๊ธฐ"๋ฅผ ์‚ดํŽด๋ณผ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ ๋ฉ์–ด๋ฆฌ๊ฐ€ ์–ผ๋งˆ๋‚˜ ์••์ถ• ๊ฐ€๋Šฅํ•œ์ง€ ๋น ๋ฅด๊ฒŒ ์ถ”์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ >500MB/s์—์„œ ์ž‘๋™ํ•˜๋ฏ€๋กœ ์••์ถ•ํ•˜๊ธฐ ์–ด๋ ค์šด ๋ฐ์ดํ„ฐ๋ฅผ ๋น ๋ฅด๊ฒŒ ๊ฑฐ๋ถ€ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‚ด๊ฐ€ ๋งŒ๋“  "์••์ถ•์„ฑ ์ถ”์ •๊ธฐ"๋ฅผ ์‚ดํŽด๋ณผ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ ๋ฉ์–ด๋ฆฌ๊ฐ€ ์–ผ๋งˆ๋‚˜ ์••์ถ• ๊ฐ€๋Šฅํ•œ์ง€ ๋น ๋ฅด๊ฒŒ ์ถ”์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ >500MB/s์—์„œ ์ž‘๋™ํ•˜๋ฏ€๋กœ ์••์ถ•ํ•˜๊ธฐ ์–ด๋ ค์šด ๋ฐ์ดํ„ฐ๋ฅผ ๋น ๋ฅด๊ฒŒ ๊ฑฐ๋ถ€ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์••์ถ•๋ฅ  ์ถ”์ •๊ธฐ๋ฅผ ์ข‹์•„ํ•˜์‹ญ์‹œ์˜ค! ์••์ถ•ํ•  ์ˆ˜ ์—†๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์••์ถ•ํ•˜๋ ค๋Š” ์‹œ๋„๋ฅผ ํ”ผํ•˜๋ฉด ๋งŽ์€ ์†๋„๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Zstd์—๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒƒ์ด ๋‚ด์žฅ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. [1]

Zstd๋Š” ์••์ถ•ํ•  ์ˆ˜ ์—†๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋” ๋น ๋ฅด๊ฒŒ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค. > 1GB/s๋ฅผ ์˜ˆ์ƒํ•˜์‹ญ์‹œ์˜ค.

๋‚˜๋Š” ๊ทธ๊ฒƒ์— ๋Œ€ํ•œ ๋ช…์‹œ์ ์ธ ๋ฒค์น˜๋งˆํฌ๋ฅผ ์ฐพ์ง€ ๋ชปํ–ˆ์ง€๋งŒ.

xz ํŒจํ‚ค์ง€๋Š” lzma์—๊ฒŒ ์ข‹์€ ๊ฑฐ๋ž˜์ฒ˜๋Ÿผ ๋ณด์ž…๋‹ˆ๋‹ค. ๊ธฐ๋ณธ ์„ค์ •์œผ๋กœ ๋ช‡ ๊ฐ€์ง€ ๋น ๋ฅธ ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค.

| ์•Œ๊ณ ๋ฆฌ์ฆ˜ | ์ˆ˜์ค€ | ํฌ๊ธฐ | ํŠน๋Œ€ | ๋ฐ€๋ฆฌ | ๋ฉ”๊ฐ€๋ฐ”์ดํŠธ/์ดˆ | ๋น„์œจ |
|----------|-------|------------|----------|---- ----|--------|--------|
| lz4 | - | 1000000000 | 625968314 | 5454 | 174.85 | 62.60% |
| ํ”Œ๋žซํ… | 1 | 1000000000 | 391051805 | 12367 | 77.11 | 39.11% |
| ํ”Œ๋žซํ… | 5 | 1000000000 | 342561367 | 20164 | 47.3 | 34.26% |
| ํ”Œ๋žซํ… | 9 | 1000000000 | 324191728 | 43351 | 22 | 32.42% |
| ์ด์ฆˆ๋งˆ2 | | 1000000000 | 291731178 | 149437 | 6.38 | 29.17% |
| ์ด์ฆˆ๋งˆ | | 1000000000 | 291688775 | 161125 | 5.92 | 29.17% |

๋งค์šฐ ํ•ฉ๋ฆฌ์ ์ธ ์†๋„/์••์ถ• ์ ˆ์ถฉ์•ˆ. ๋ชจ๋‘ enwik9 - ์ค‘๊ฐ„ ์••์ถ• ๊ฐ€๋Šฅํ•œ ํ…์ŠคํŠธ ๋ณธ๋ฌธ์˜ ๋‹จ์ผ ์ฝ”์–ด ์„ฑ๋Šฅ์ž…๋‹ˆ๋‹ค. ๋ถ„๋ช…ํžˆ ์ €๋Š” ์ „์ฒด VM ์ด๋ฏธ์ง€๋‚˜ ๋” ํ˜ผํ•ฉ๋œ ์ฝ˜ํ…์ธ ๊ฐ€ ํฌํ•จ๋œ 10GB ์ฝ”ํผ์Šค ์™€ ๊ฐ™์€ ๊ฒƒ์„ ํ…Œ์ŠคํŠธํ•  ์‹œ๊ฐ„์ด ์—†์—ˆ์Šต๋‹ˆ๋‹ค.

lzma2๊ฐ€ ํ‘œ์ค€ lzma์— ๋น„ํ•ด ํ˜„์žฌ ๊ตฌํ˜„์—์„œ ๋งŽ์€ ๊ฒƒ์„ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ ๊ฐ™์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ž‘์€ ๋ธ”๋ก์„ ๋‹ค๋ฃจ๊ธฐ ๋•Œ๋ฌธ์— ๊ทธ ์ฐจ์ด๋Š” ์•„์ฃผ ์ž‘์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.

Zstd์—๋Š” ์ด์™€ ๊ฐ™์€ ๊ฒƒ์ด ๋‚ด์žฅ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

์˜ˆ, lz4 ๋ฐ deflate์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์ „์šฉ ๊ธฐ๋Šฅ๋งŒํผ ๋น ๋ฅด์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค.

zstd๋Š” ์˜์‹ฌํ•  ์—ฌ์ง€ ์—†์ด ์ •๋ง ์ธ์ƒ์ ์ž…๋‹ˆ๋‹ค. cgo ๊ตฌํ˜„์„ ์‚ฌ์šฉํ•œ ๋ฒค์น˜๋งˆํฌ:

| ์ˆ˜์ค€ | ํฌ๊ธฐ | ํŠน๋Œ€ | ๋ฐ€๋ฆฌ | ๋ฉ”๊ฐ€๋ฐ”์ดํŠธ/์ดˆ | ๋น„์œจ |
|---------|------------|--------------|--------|--------- -|--------|
| 1 | 1000000000 | 358512492 | 5100 | 186.96 | 35.85% |
| 2 | 1000000000 | 332265582 | 6264 | 152.24 | 33.23% |
| 3 | 1000000000 | 314403327 | 8099 | 117.75 | 31.44% |
| 4 | 1000000000 | 310346439 | 8588 | 111.04 | 31.03% |
| 5 | 1000000000 | 305644452 | 12739 | 74.86 | 30.56% |
| 6 | 1000000000 | 292551252 | 18531 | 51.46 | 29.26% |
| 7 | 1000000000 | 287414827 | 23212 | 41.08 | 28.74% |
| 8 | 1000000000 | 282783804 | 27811 | 34.29 | 28.28% |
| 9 | 1000000000 | 280432907 | 31752 | 30.03 | 28.04% |

๋‚ด๊ฐ€ ๋ญ”๊ฐ€๋ฅผ ๋†“์นœ ๊ฒƒ์„ ์šฉ์„œํ•˜์‹ญ์‹œ์˜ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด์ „์— ์ด๋Ÿฌํ•œ ์งˆ๋ฌธ์— ๋Œ€ํ•œ ๋‹ต๋ณ€์„ ์ œ๋Œ€๋กœ ๋ณด์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค.

  1. ํŒŒ์ผ ์ˆ˜์ค€์ด ์•„๋‹Œ ์ฒญํฌ ์ˆ˜์ค€์˜ ์••์ถ•์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•˜๊ณ  ์žˆ๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋งž์Šต๋‹ˆ๊นŒ?
  2. ๊ทธ๋ ‡๋‹ค๋ฉด ๋‹จ์ผ ํŒŒ์ผ์˜ ์—ฌ๋Ÿฌ ์ฒญํฌ์— ์ค‘๋ณต๋œ ๋ฐ์ดํ„ฐ๊ฐ€ ์ €์žฅ๋˜๊ณ  ๊ฐ ์ฒญํฌ์— ๋Œ€ํ•ด ์••์ถ•๋˜๋ฏ€๋กœ ํšจ์œจ์„ฑ์ด ๋ถ„๋ช…ํžˆ ์ œํ•œ๋ฉ๋‹ˆ๋‹ค.
  3. ๊ทธ๋Ÿฌ๋‚˜ ์ด๋Š” ๋ถ„๋ช…ํžˆ ์ฒญํฌ ํฌ๊ธฐ์—๋„ ๋‹ฌ๋ ค ์žˆ์Šต๋‹ˆ๋‹ค.
  4. ๊ทธ๋ ‡๋‹ค๋ฉด ํ‰๊ท  ์ฒญํฌ ํฌ๊ธฐ๋Š” ์–ผ๋งˆ์ž…๋‹ˆ๊นŒ? ์ด๊ฒƒ์ด ์••์ถ•์ด ์–ผ๋งˆ๋‚˜ ์œ ์šฉํ•œ์ง€์— ์ค‘์š”ํ•œ ์š”์†Œ์ธ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.
  5. ์ฒญํฌ ํฌ๊ธฐ๊ฐ€ ์ƒ๋‹นํžˆ ์ž‘์€ ๊ฒฝ์šฐ ์••์ถ•๋ฅ ์ด ๋†’์€ ํŒŒ์ผ์— ๋Œ€ํ•ด ์ „์ฒด ํŒŒ์ผ, ์‚ฌ์ „ ์ฒญํฌ ์••์ถ•์„ ๊ณ ๋ คํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(์˜ˆ: @klauspost ์˜ ์ถ”์ •๊ธฐ ์‚ฌ์šฉ). ์˜ˆ๋ฅผ ๋“ค์–ด, 50MB ํ…์ŠคํŠธ ํŒŒ์ผ(์˜ˆ: ๋กœ๊ทธ ํŒŒ์ผ, ํฐ ์กฐ์ง ๋ชจ๋“œ ํŒŒ์ผ ๋“ฑ)์€ ๋‹จ์ผ ํŒŒ์ผ๋กœ ์••์ถ•๋  ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋จผ์ € ์ฒญํฌ๋œ ๋‹ค์Œ ๊ฐ ์ฒญํฌ๊ฐ€ ์ธ๋ฑ์Šค๋ฅผ ๊ณต์œ ํ•˜์ง€ ์•Š๊ณ  ๊ฐœ๋ณ„์ ์œผ๋กœ ์••์ถ•๋˜๋ฉด ์••์ถ•์˜ ํšจ์œจ์„ฑ(IIUC)์ด ํฌ๊ฒŒ ์ œํ•œ๋ฉ๋‹ˆ๋‹ค.

๊ฐ์‚ฌ ํ•ด์š”.

์ „์ฒด ํŒŒ์ผ์„ ์••์ถ•ํ•˜๋ฉด ์ค‘๋ณต ์ œ๊ฑฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ๋ณ€์กฐ๋˜์–ด ํšจ์œจ์„ฑ์ด ๋–จ์–ด์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ ์™ธ์— ๊ณต๊ฐ„ ์ธก๋ฉด ์—์„œ ์ค€๋‹ค๋Š” ์‚ฌ์‹ค์„ ์žŠ์ง€ ๋งˆ์‹ญ์‹œ์˜ค. ์••์ถ•๋œ ๋ฐ์ดํ„ฐ์˜ ํฌ๊ธฐ์—์„œ ๋ฐ์ดํ„ฐ ๋‚ด์šฉ์— ๋Œ€ํ•œ ๊ต์œก์ ์ธ ์ถ”์ธก์„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ์ด๊ฒƒ์ด ์ „์— ์–ธ๊ธ‰๋˜์—ˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€๋งŒ ์—ฌ์ „ํžˆ ๊ทธ๋ ‡์Šต๋‹ˆ๋‹ค.

@์•ŒํŒŒํŒŒํŒŒ

ํŒŒ์ผ ์ˆ˜์ค€์ด ์•„๋‹Œ ์ฒญํฌ ์ˆ˜์ค€์˜ ์••์ถ•์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•˜๊ณ  ์žˆ๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋งž์Šต๋‹ˆ๊นŒ?

์˜ˆ, ์ฒญํฌ ์ˆ˜์ค€์—์„œ.

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

์šฐ๋ฆฌ๋Š” 1MiB๋ฅผ ๋ชฉํ‘œ๋กœ ํ•˜๊ณ  ์žˆ์ง€๋งŒ ์ตœ๋Œ€ 8MiB๊นŒ์ง€ ํด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฒญํฌ ํฌ๊ธฐ๊ฐ€ ์ƒ๋‹นํžˆ ์ž‘์€ ๊ฒฝ์šฐ ์••์ถ•๋ฅ ์ด ๋†’์€ ํŒŒ์ผ์— ๋Œ€ํ•ด ์ „์ฒด ํŒŒ์ผ, ์‚ฌ์ „ ์ฒญํฌ ์••์ถ•์„ ๊ณ ๋ คํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(์˜ˆ: @klauspost ์˜ ์ถ”์ •๊ธฐ ์‚ฌ์šฉ). ์˜ˆ๋ฅผ ๋“ค์–ด, 50MB ํ…์ŠคํŠธ ํŒŒ์ผ(์˜ˆ: ๋กœ๊ทธ ํŒŒ์ผ, ํฐ ์กฐ์ง ๋ชจ๋“œ ํŒŒ์ผ ๋“ฑ)์€ ๋‹จ์ผ ํŒŒ์ผ๋กœ ์••์ถ•๋  ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋จผ์ € ์ฒญํฌ๋œ ๋‹ค์Œ ๊ฐ ์ฒญํฌ๊ฐ€ ์ธ๋ฑ์Šค๋ฅผ ๊ณต์œ ํ•˜์ง€ ์•Š๊ณ  ๊ฐœ๋ณ„์ ์œผ๋กœ ์••์ถ•๋˜๋ฉด ์••์ถ•์˜ ํšจ์œจ์„ฑ(IIUC)์ด ํฌ๊ฒŒ ์ œํ•œ๋ฉ๋‹ˆ๋‹ค.

์ฒ˜์Œ์—๋Š” ์ฒญํฌ ์ˆ˜์ค€์—์„œ ์••์ถ•์„ ํ†ตํ•ฉํ•˜๊ณ  ์‹ค์ œ ์‹œ๋‚˜๋ฆฌ์˜ค์—์„œ ์••์ถ•์ด ์–ผ๋งˆ๋‚˜ ์ž˜ ์ˆ˜ํ–‰๋˜๋Š”์ง€ ํ™•์ธํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ๋‚˜์ค‘์— ์ด ์•„์ด๋””์–ด๋ฅผ ๋‹ค์‹œ ์‚ดํŽด๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@klauspost ์‹œ๊ฐ„์„ ๋‚ด์–ด ์ผ๋ถ€ ์•Œ๊ณ ๋ฆฌ์ฆ˜/๊ตฌํ˜„ ๋ฐ ๊ถŒ์žฅ ์‚ฌํ•ญ์„ ๋ฒค์น˜๋งˆํ‚นํ•ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค! zstd๊ฐ€ ์žˆ์œผ๋ฉด ์ข‹๊ฒ ์ง€ cgo ์— ์˜์กดํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์ด ํ”„๋กœ์ ํŠธ ์ „์ฒด์— ํ›จ์”ฌ ๋” ์ค‘์š”ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์••์ถ•๋ฅ  ์ถ”์ •๊ธฐ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์€ ์ข‹์€ ์•„์ด๋””์–ด์ž…๋‹ˆ๋‹ค. ์ €๋Š” ๊ทธ๊ฒƒ์„ ์ข‹์•„ํ•ฉ๋‹ˆ๋‹ค.

์••์ถ•/์••์ถ• ํ•ด์ œ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ธฐ ์œ„ํ•ด ์–ธ๊ธ‰ํ•œ ๊ณณ์€ ์ข‹์€ ๊ฒƒ ๊ฐ™์ง€๋งŒ ๋‹ค๋ฅธ ๊ณณ์—์„œ ํ•ด๋‹น ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ์ถ”์ ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ํŒฉ ํ—ค๋”์˜ ๋ฐ”์ดํŠธ์— ์žˆ๋Š” ๋น„ํŠธ์— ์˜๋ฏธ๋ฅผ ์ถ”๊ฐ€ํ•  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค( http://restic.readthedocs.io/en/latest/100_references.html#pack -format ์ฐธ์กฐ). ๋งค์šฐ ์‹ ์ค‘ํ•˜๊ฒŒ ์ž‘์—…ํ•ด์•ผ ํ•˜๋Š” ๋ถ€๋ถ„์ž…๋‹ˆ๋‹ค.

์ž, #1494๋กœ ๋งˆ์น˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ์ด ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@sanmai re: side-channels: ์›๋ž˜ ์ œ๊ฐ€ ๊ฐ€์ ธ์™”์Šต๋‹ˆ๋‹ค.
๋‹ค์–‘ํ•œ ์†”๋ฃจ์…˜์ด ์ œ์•ˆ๋˜์—ˆ์œผ๋ฉฐ ๊ฐœ์ธ์ ์œผ๋กœ ๋‹ค์Œ ์‚ฌํ•ญ์— ๋งŒ์กฑํ•ฉ๋‹ˆ๋‹ค.

  • ์••์ถ• ์‚ฌ์šฉ์„ ํ—ˆ์šฉ/์ฐจ๋‹จํ•˜๊ธฐ ์œ„ํ•œ ๊ตฌ์„ฑ ์˜ต์…˜์ด ์žˆ์Œ(ํŒŒ์ผ ํฌํ•จ์„ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ๊ณผ ์œ ์‚ฌ)

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

์ด๊ฒƒ์€ ๊ต‰์žฅํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค! :๋งฅ์ฃผ: +$10

๊ทธ๋ƒฅ ๋˜์ง€๊ณ  lzma ๋˜๋Š” ๋” ์ผ๋ฐ˜์ ์ธ ์••์ถ• ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ œ์ณ๋‘๊ณ  ์‹คํ–‰ ๊ธธ์ด ์ธ์ฝ”๋”ฉ์ด๋‚˜ ์ œ๋กœ ์Šค์ฟผ์‹ฑ์€ ์–ด๋–ป์Šต๋‹ˆ๊นŒ? ์•„๋‹ˆ๋ฉด ์ถฉ๋ถ„ํ•œ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ์ถฉ๋ถ„ํžˆ ์œ ์šฉํ•˜์ง€ ์•Š์„๊นŒ์š”?

(๋‚˜๋Š” ์ด ์‚ฌ๋ƒฅ์— ๊ฐœ๊ฐ€ ์žˆ๊ณ , ๋‚˜๋Š” ์ข…์ข… ๋งŽ์€ ์นจ๋ฌต์œผ๋กœ ๊ฑฐ๋Œ€ํ•œ WAV ํŒŒ์ผ์„ ๋ฐฑ์—…ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.)

+$15

๊ทธ๋ƒฅ ๋˜์ง€๊ณ  lzma ๋˜๋Š” ๋” ์ผ๋ฐ˜์ ์ธ ์••์ถ• ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ œ์ณ๋‘๊ณ  ์‹คํ–‰ ๊ธธ์ด ์ธ์ฝ”๋”ฉ์ด๋‚˜ ์ œ๋กœ ์Šค์ฟผ์‹ฑ์€ ์–ด๋–ป์Šต๋‹ˆ๊นŒ? ์•„๋‹ˆ๋ฉด ์ถฉ๋ถ„ํ•œ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ์ถฉ๋ถ„ํžˆ ์œ ์šฉํ•˜์ง€ ์•Š์„๊นŒ์š”?

๋˜ํ•œ ๋Œ€๋ถ€๋ถ„ ๋นˆ ๊ณต๊ฐ„/์ŠคํŒŒ์Šค ํŒŒ์ผ์ด ์žˆ๋Š” VM ๋“œ๋ผ์ด๋ธŒ๋ฅผ ๋ฐฑ์—…ํ•˜๋Š” ๋ฐ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค(restic์ด ์ŠคํŒŒ์Šค ํŒŒ์ผ ๋ฐฑ์—…/๋ณต์›์„ ์ด๋ฏธ ์ง€์›ํ•˜๋Š”์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์Œ)

@bherila restic์€ ์•„์ง ์ŠคํŒŒ์Šค ํŒŒ์ผ ๋ณด๊ด€/๋ณต์›์„ ์ง€์›ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํŒŒ์ผ์€ 0์ด ๋งŽ์ด ํฌํ•จ๋œ ๊ฒƒ์ฒ˜๋Ÿผ ์ €์žฅ์†Œ์— ์ €์žฅ๋ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ํฐ 0 ๋ธ”๋ก์€ ์ค‘๋ณต ์ œ๊ฑฐ๋˜๋ฏ€๋กœ ์ €์žฅ์†Œ์—์„œ ๋งŽ์€ ๊ณต๊ฐ„์„ ์ฐจ์ง€ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋ณต์›์˜ ๊ฒฝ์šฐ "๊ตฌ๋ฉ"์ด ์—†๋Š” ์ผ๋ฐ˜(ํฌ์†Œํ•˜์ง€ ์•Š์€) ํŒŒ์ผ๋กœ ๋๋‚ฉ๋‹ˆ๋‹ค.

๋ฐฉ๊ธˆ ํ™•์ธํ•˜๊ณ  ์‹ถ์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฏธ ์ผ์ข…์˜ ์••์ถ•์ด ์žˆ์Šต๋‹ˆ๊นŒ? ๋ฐ์ดํ„ฐ๊ฐ€ 50GB์ธ ์ปดํ“จํ„ฐ๋ฅผ ํฌํ•จํ•˜์—ฌ ์—ฌ๋Ÿฌ ๋Œ€์˜ ์ปดํ“จํ„ฐ๋ฅผ ๋ฐฑ์—…ํ–ˆ๋Š”๋ฐ ์„œ๋ฒ„์—์„œ ํ›จ์”ฌ ์ ์€ ์ˆ˜๋ฅผ ์–ป์—ˆ์Šต๋‹ˆ๋‹ค.

# du -shc /home/restic/
40G     /home/restic/
40G     total

@Alwaysin ๋ฌผ๋ก  ์ผ๋ถ€ ํŒŒ์ผ์ด ์ œ์™ธ๋˜์ง€ ์•Š๋Š” ํ•œ ์•„๋งˆ๋„ ์ค‘๋ณต ์ œ๊ฑฐ ์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@rawtaz ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์ค‘๋ณต ์ œ๊ฑฐ์— ๋Œ€ํ•ด ๋ชฐ๋ž์Šต๋‹ˆ๋‹ค.

@rawtaz ๊ฐ€ ์–ธ๊ธ‰ํ•œ ๊ฒƒ์ฒ˜๋Ÿผ ํฐ ๋ฐ˜๋ณต ๋ธ”๋ก์˜

@klauspost ์ด๊ฑฐ ๋ดค์–ด ? https://github.com/mvdan/zstd

์˜ˆ, ํ•˜์ง€๋งŒ ์†”์งํžˆ ์ŠคํŠธ๋ฆผ ๋””์ฝ”๋”๋Š” ์‰ฌ์šด ๋ถ€๋ถ„์ž…๋‹ˆ๋‹ค. FSE en/decoding์„ ๋งˆ์น˜๊ณ  Huffman ์ธ์ฝ”๋”๋ฅผ ์ค€๋น„ํ–ˆ์Šต๋‹ˆ๋‹ค. Huffman ๋””์ฝ”๋”ฉ์ด ์™„๋ฃŒ๋˜๋ฉด zstd ์ŠคํŠธ๋ฆผ ๋””์ฝ”๋”๋Š” ๋งค์šฐ ๊ฐ„๋‹จํ•˜๋ฉฐ ์ „์ฒด ์ธ์ฝ”๋”๊ฐ€ ์ตœ์ข… ๋ถ€๋ถ„์ž…๋‹ˆ๋‹ค.

LZ4๋Š” ์™„๋ฒฝํ•˜๊ฒŒ ์ถฉ๋ถ„ํ•˜๋ฉฐ ๋˜ํ•œ ๋น ๋ฅธ ์Šน๋ฆฌ๊ฐ€ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

lz4๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ  zstd๋ฅผ ์ง€์›ํ•˜๊ธฐ ์œ„ํ•ด ๋‹ค๋ฅธ PR์„ ์ƒ์„ฑํ•˜์ง€ ์•Š๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

lz4๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ  zstd๋ฅผ ์ง€์›ํ•˜๊ธฐ ์œ„ํ•ด ๋‹ค๋ฅธ PR์„ ์ƒ์„ฑํ•˜์ง€ ์•Š๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

@dave-fl์€ ์ €์žฅ์†Œ ํ˜•์‹์„ ์ˆ˜์ •ํ•  ๋•Œ ๋งค์šฐ ์ฃผ์˜ํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์ด์ „ ๋ฒ„์ „๊ณผ ํ˜ธํ™˜๋˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์ˆ˜ํ–‰๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ „์ฒด ํ”„๋กœ์ ํŠธ์—์„œ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๋ถ€๋ถ„์€ ๊ตฌํ˜„์ด ์•„๋‹ˆ๋ผ repo ํ˜•์‹์ž…๋‹ˆ๋‹ค. ์‚ฌ๋žŒ๋“ค์€ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณต์›ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ˜•์‹์„ ๋ง์น˜์ง€ ์•Š๊ธฐ ์œ„ํ•ด ์šฐ๋ฆฌ์—๊ฒŒ ์˜์กดํ•ฉ๋‹ˆ๋‹ค. :)

์••์ถ•์œผ๋กœ ๋„ˆ๋ฌด ๋งŽ์ด ๊ธฐ๋‹ค๋ฆด ์ˆ˜๋Š” ์—†๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋ฐฉ๊ธˆ ์„œ๋ฒ„ ๋ฐฑ์—…์˜ ๋ช‡ ๊ฐ€์ง€ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์—์„œ ๋ช‡ ๊ฐ€์ง€ ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋ฅผ gzip์œผ๋กœ ์••์ถ•ํ•  ๋•Œ ์ •ํ™•ํžˆ ์•„๋ฌด๊ฒƒ๋„ ์–ป์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค! @Alwaysin ์ฒ˜๋Ÿผ ์ด๋ฏธ ์ค‘๋ณต ์ œ๊ฑฐ๋กœ 30%๋ฅผ

์ด์ „ ๋ฒ„์ „๊ณผ ํ˜ธํ™˜๋˜๋Š” ๋ฐฉ์‹์— ๋Œ€ํ•ด์„œ๋Š” Restic์ด ์ด์ „ ํ˜•์‹์—์„œ ์ƒˆ ํ˜•์‹์œผ๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•˜๊ธฐ ์œ„ํ•ด ๋‘ ํ˜•์‹ ๋˜๋Š” ๋„๊ตฌ๋ฅผ ๋ชจ๋‘ ์ฝ์–ด์•ผ ํ•œ๋‹ค๋Š” ์˜๋ฏธ์ž…๋‹ˆ๊นŒ? Restic์ด v1.0.0์ด ์•„๋‹ ๋•Œ๋Š” ๊ทธ๋ƒฅ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•ด๋„ ๊ดœ์ฐฎ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๋ฐฉ๊ธˆ ์„œ๋ฒ„ ๋ฐฑ์—…์˜ ๋ช‡ ๊ฐ€์ง€ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์—์„œ ๋ช‡ ๊ฐ€์ง€ ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋ฅผ gzip์œผ๋กœ ์••์ถ•ํ•  ๋•Œ ์ •ํ™•ํžˆ ์•„๋ฌด๊ฒƒ๋„ ์–ป์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค!

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

LZ4๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ด์ „ ๋ฒ„์ „๊ณผ ์–ด๋–ป๊ฒŒ ํ˜ธํ™˜๋˜์ง€ ์•Š๋Š”์ง€ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. ์••์ถ•์€ ์••์ถ•์ž…๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ ํ˜•์‹์„ ์ง€์›ํ•˜์ง€ ์•Š๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

๋‹น์‹  ๋ง์ด ๋งž์•„, ๋‚˜๋Š” ๊ทธ๊ฒƒ์— ๋Œ€ํ•ด ์ƒ๊ฐํ•˜์ง€ ์•Š์•˜๋‹ค.
๊ทธ๋Ÿฌ๋‚˜ ์†Œ์Šค๋ฅผ gzip์œผ๋กœ ์••์ถ•ํ•  ๋•Œ 30% ์ด์ƒ ์Šน๋ฆฌํ•˜์ง€ ๋ชปํ–ˆ์œผ๋ฉฐ ์ค‘๋ณต ์ œ๊ฑฐ๋Š” ์ค‘๋ณต์ด ๋งŽ์€ ํฐ ๋””๋ ‰ํ† ๋ฆฌ์—์„œ ์ด๋ฏธ ๋งค์šฐ ํšจ์œจ์ ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋ฌผ๋ก  ๋‘˜ ๋‹ค ์ธ์ƒ์ ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
์••์ถ• ๋ฐ ์ค‘๋ณต ์ œ๊ฑฐ๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” zpaq์„ ์‚ฌ์šฉํ•˜๋ฉด ๊ทธ๋‹ค์ง€ ๋งŽ์ด ์–ป์ง€ ์•Š๊ณ  ์กฐ๊ธˆ ๋” ๋งŽ์ด ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
์ €๋Š” ์••์ถ•์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ถ„๊ธฐ๋ฅผ ํ…Œ์ŠคํŠธํ•˜๋Š” ๋ฐ ๋งค์šฐ ๊ฐœ๋ฐฉ์ ์ž…๋‹ˆ๋‹ค. ํ˜ธํ™˜๋˜์ง€ ์•Š์•„๋„ ์ƒ๊ด€ ์—†์Šต๋‹ˆ๋‹ค!

LZ4๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ด์ „ ๋ฒ„์ „๊ณผ ์–ด๋–ป๊ฒŒ ํ˜ธํ™˜๋˜์ง€ ์•Š๋Š”์ง€ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. ์••์ถ•์€ ์••์ถ•์ž…๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ ํ˜•์‹์„ ์ง€์›ํ•˜์ง€ ์•Š๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

๋‘ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋™์ผํ•œ ์ €์žฅ์†Œ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์ง€๋งŒ ๊ทธ ์ค‘ ํ•˜๋‚˜๊ฐ€ ์••์ถ•์„ ์ง€์›ํ•˜์ง€ ์•Š๋Š” ์ด์ „ ๋ฒ„์ „์˜ restic์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ์–ด๋–ป๊ฒŒ ๋ฉ๋‹ˆ๊นŒ? ์ด ๊ธฐ๋Šฅ์€ ๊ฐ€๋Šฅํ•œ ๋ชจ๋“  ๋ชจ์„œ๋ฆฌ ์ผ€์ด์Šค๋ฅผ ์—ผ๋‘์— ๋‘๊ณ  ์‹ ์ค‘ํ•˜๊ฒŒ ์„ค๊ณ„ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๊ฐ€๋Šฅํ•œ ์ด์ „ ๋ฐฑ์—…์„ ์ค‘๋‹จํ•  ์ˆ˜ ์žˆ๋Š” ์ ˆ๋ฐ˜ ์ž‘์—… ์†”๋ฃจ์…˜๋ณด๋‹ค ์••์ถ•์„ ์„ ํ˜ธํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์••์ถ•์„ ์ถ”๊ฐ€ํ•˜๋Š” ๋ฌธ์ œ์— ๋Œ€ํ•ด์„œ๋Š” ์ถฉ๋ถ„ํ•œ ๋…ผ์˜๊ฐ€ ์žˆ์—ˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋งค์šฐ ๊ธฐ๋Œ€๋˜๋Š” ๊ธฐ๋Šฅ์ž„์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ƒˆ ์•„์นด์ด๋ฒ„ ์ฝ”๋“œ(#1494 ์ฐธ์กฐ)๋ฅผ ์™„๋ฃŒํ•œ ํ›„ ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

๋” ์ด์ƒ ์˜๊ฒฌ์„ ์ถ”๊ฐ€ํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค. ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

@dimejo ๋‹น์‹ ์ด ๋งํ•˜๋Š” ๊ฒƒ์€ ๋‚ด๊ฐ€ ์ œ์•ˆํ•œ ๊ฒƒ๊ณผ ์•„๋ฌด ๊ด€๋ จ์ด ์—†์Šต๋‹ˆ๋‹ค. zstd ๋˜๋Š” lz4๋ฅผ ๊ตฌํ˜„ํ•˜๋„๋ก ์„ ํƒํ•˜๋Š”์ง€ ์—ฌ๋ถ€๋Š” ๋‘ ๊ฒฝ์šฐ ๋ชจ๋‘์— ์˜ํ–ฅ์„ ๋ฏธ์นฉ๋‹ˆ๋‹ค.

๋‚˜๋Š” ๊ฐํžˆ zstd์˜ CGO ๋ฒ„์ „์ด ๋‹ค์†Œ ์ด์‹์„ฑ์ด ์žˆ์–ด ๋ณด์ธ๋‹ค๊ณ  ๋งํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. :)

์‚ฌ์–‘์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๋งค์šฐ ๊ฐ„๋žตํ•˜๊ฒŒ zstd์˜ golang ๊ตฌํ˜„์„ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ์ด ์–ผ๋งˆ๋‚˜ ์‹คํ˜„ ๊ฐ€๋Šฅํ•œ์ง€ ์‚ดํŽด๋ณด์•˜์Šต๋‹ˆ๋‹ค.

zstd๋Š” ๋Œ€๋ถ€๋ถ„ ์‚ฌ๋‚ด ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด์ง€๋งŒ (์„ ํƒ์ ์œผ๋กœ) ์˜ค๋ฅ˜ ๊ฒ€์‚ฌ๋ฅผ ์œ„ํ•ด xxHash-64 ์ฒดํฌ์„ฌ ์— ์˜์กดํ•˜๋ฉฐ ์ด์— ๋Œ€ํ•œ golang ํฌํŠธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์„ ํƒ์  ๋น„ํŠธ๋Š” ์„ ํƒ ์‚ฌํ•ญ์ด๋ฏ€๋กœ restic์˜ ๋ฆฌ๋”/๋ผ์ดํ„ฐ์— ๋Œ€ํ•œ zstd ์ง€์›์„ ์–ป๊ธฐ ์œ„ํ•ด ํ•ด๋‹น ๋ถ€๋ถ„์„ ๊ตฌํ˜„ํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. zstd๋Š” ์••์ถ•์„ ์ตœ์ ํ™”ํ•˜๊ธฐ ์œ„ํ•ด "์‚ฌ์ „"์˜ ๊ฐœ๋…์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด restict์™€ ์–ด๋–ป๊ฒŒ ์ƒํ˜ธ ์ž‘์šฉํ• ์ง€ ํ™•์‹ ํ•  ์ˆ˜ ์—†์ง€๋งŒ ์•„์นด์ด๋ธŒ์˜ ํŠน์ • ๋ถ€๋ถ„(์˜ˆ: JSON ๋˜๋Š” ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ์ŠคํŠธ๋ฆผ)์„ ์••์ถ•ํ•˜๋Š” ํฅ๋ฏธ๋กœ์šด ์—ฐ๊ตฌ ์˜์—ญ์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ์„ ํƒ ์‚ฌํ•ญ์ด๋ฏ€๋กœ ํ•ด๋‹น ๊ตฌํ˜„์„ ๊ฑด๋„ˆ๋›ธ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฌผ๋ก  ๋” ๊นŒ๋‹ค๋กœ์›Œ์ง€๋Š” ๊ณณ์€ ์—”ํŠธ๋กœํ”ผ ์ฝ”๋”ฉ์ด ์‹œ์ž‘๋˜๋Š” ๊ณณ์ž…๋‹ˆ๋‹ค. zstd๋Š” Finite State Entropy (FSE, [ANS]์˜ ๋ณ€ํ˜•(https://en.wikipedia.org/wiki/Asymmetric_numeral_systems#, ๊ทธ ์ค‘ C ๊ตฌํ˜„๋งŒ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ์—”ํŠธ๋กœํ”ผ ์ฝ”๋”ฉ ๋น„ํŠธ๋Š” ํ—ˆํ”„๋งŒ ์ฝ”๋”ฉ ์œผ๋กœ ๊ตฌํ˜„๋˜๋ฉฐ, ๊ทธ ์ค‘ ํ•˜๋‚˜ ๋Š” compress.flate์— ์žˆ๊ณ  ๋‹ค๋ฅธ ํ•˜๋‚˜๋Š” net.http2.hpack ์— ์žˆ๋Š” ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ์žˆ๋Š” ๋‘ ๊ฐ€์ง€๋ฅผ ํฌํ•จํ•˜์—ฌ ์—ฌ๋Ÿฌ ๊ตฌํ˜„์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์˜คํžˆ๋ ค ์ด์ƒํ•˜๋‹ค.

๋‚ด๊ฐ€ ๋งํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐ”์— ๋”ฐ๋ฅด๋ฉด, ๋‹ค๋ฅธ ๋ชจ๋“  ๊ฒƒ์€ ๊ทธ ์œ„์— ์ ‘์ฐฉ์ œ์ž…๋‹ˆ๋‹ค... ์ผ๋ถ€ ํ—ˆํ”„๋งŒ ํŠธ๋ฆฌ, ์‹œํ€€์Šค, ํ”„๋ ˆ์ž„ ๋ฐ ๋ธ”๋ก. ๋ธ”๋ก๊ณผ ํ”„๋ ˆ์ž„์ด ๋นŒ๋“œ๋˜๋Š” ๋ฐฉ์‹์—๋„ ํฅ๋ฏธ๋กœ์šด ์†์„ฑ์ด ์žˆ๋Š”๋ฐ, ์ด ์†์„ฑ์€ restic blob์— ์ž˜ ๋งคํ•‘๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์†์„ฑ์„ ์‚ฌ์šฉํ•˜๋ฉด ๋‚ด๋ถ€์— blob์„ ๋ณ„๋„๋กœ ์œ ์ง€ํ•˜๋ฉด์„œ ์ €์žฅ์†Œ ์ „์ฒด๋ฅผ ์••์ถ•ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ์ž์„ธํžˆ ์‚ดํŽด๋ณด์ง€๋Š” ์•Š์•˜์Šต๋‹ˆ๋‹ค. . ๋˜ํ•œ ์ €์žฅ์†Œ ํ˜•์‹๊ณผ ์••์ถ• ์‚ฌ์ด์˜ ๊ฒฐํ•ฉ์„ ํ—ˆ์šฉํ•  ์ˆ˜ ์—†๊ฒŒ ๋งŒ๋“ค ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

zstd๋Š” ๊ฐ๊ฐ 36k ๋ฐ 12k์— ๋น„ํ•ด ์•ฝ 70k ๋ผ์ธ(cloc์— ๋”ฐ๋ผ)์˜ ์ฝ”๋“œ๋กœ gzip ๋˜๋Š” xzip๋ณด๋‹ค ํ›จ์”ฌ ๋” ๋ณต์žกํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์—ฌ๊ธฐ์—๋Š” ์ˆ˜๋งŽ์€ ํ…Œ์ŠคํŠธ๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ํ…Œ์ŠคํŠธ๋ฅผ ๋ฌด์‹œํ•˜๋ฉด ๊ตฌํ˜„ ์ž์ฒด๊ฐ€ gzip(~34k)๊ณผ ๊ฑฐ์˜ ๋น„์Šทํ•ฉ๋‹ˆ๋‹ค.

์š”์•ฝํ•˜์ž๋ฉด, ์ด๊ฒƒ์ด go์—์„œ ๊ตฌํ˜„๋˜๋Š” ๊ฒƒ์€ ์‹œ๊ฐ„ ๋ฌธ์ œ์ผ ๋ฟ์ž…๋‹ˆ๋‹ค. zstd "ํ”„๋ ˆ์ž„"์ด ์„œ๋กœ ๋…๋ฆฝ์ ์ด๊ธฐ ๋•Œ๋ฌธ์— ๊ทธ๋Ÿฌํ•œ ์—”์ง„์ด golang์˜ ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ๋ฅผ ํ™œ์šฉํ•  ์ˆ˜๋„ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ํ”„๋ ˆ์ž„์ด ์–ด๋–ป๊ฒŒ ์‚ฌ์šฉ๋˜๋Š”์ง€๋Š” ๋ถ„๋ช…ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ํ…Œ์ŠคํŠธํ•œ ๋Œ€๋ถ€๋ถ„์˜ ์ŠคํŠธ๋ฆผ์—๋Š” ํ•˜๋‚˜( zstd /etc/motd ) ๋˜๋Š” ๋‘ ๊ฐœ( zstd isos/Fedora-Workstation-Live-x86_64-27-1.6.iso ) ํ”„๋ ˆ์ž„( binwalk -R "\x28\xb5\x2f\xfd" ์—์„œ ๋ฐœ๊ฒฌ๋จ), ๋ธ”๋ก ์ด ์ƒํ˜ธ ์—ฐ๊ด€๋˜๊ณ  ๋œ ๋ณ‘๋ ฌํ™”๋˜๊ธฐ ๋•Œ๋ฌธ์— ์•„๋งˆ๋„ ๊ทธ๋Ÿฐ ์ด๋“์€ ์—†์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค...

์–ด์จŒ๋“ , ์—ฌ๊ธฐ ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ์‹ค์ œ๋กœ ์•‰์•„์„œ ๊ทธ๊ฒƒ์„ ์ด์‹ํ•˜๊ณ  ์‹ถ์–ดํ•˜์ง€ ์•Š๋Š” ํ•œ ๋ชจ๋“  ๋ฌธ์ œ๊ฐ€ ์žˆ์ง€๋งŒ, ๋‚˜๋Š” ๊ทธ๊ฒƒ์„ ์ฝ๋Š” ๋™์•ˆ ๋‚ด๊ฐ€ ๋ฐœ๊ฒฌํ•œ ๊ฒƒ์„ ๊ณต์œ ํ•  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ–ˆ์Šต๋‹ˆ๋‹ค... zstd๊ฐ€ LZ77 ์ปดํ”„๋ ˆ์„œ ์ œํ’ˆ๊ตฐ์˜ LZMA ๋ถ€๋ถ„์˜ ํ™•์žฅ์ด๋ผ๋Š” ์ ์„ ๊ณ ๋ คํ•˜๋ฉด ์ด์‹์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค...

์••์ถ•์— ๋Œ€ํ•œ ์—…๋ฐ์ดํŠธ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ? ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด zstd ๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๊ธฐ๋ฅผ ์›ํ•˜์ง€๋งŒ lz4 ๋˜๋Š” lzo ๋˜๋Š” lzma ๋ฌด์—‡์ด ๋ฌธ์ œ๊ฐ€ ๋ ๊นŒ์š”?

์—…๋ฐ์ดํŠธ๊ฐ€ ์žˆ์—ˆ๋‹ค๋ฉด ์ด ๋ฌธ์ œ๊ฐ€ ์—…๋ฐ์ดํŠธ๋˜์—ˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ทธ ๋™์•ˆ ์ €์ž์˜ ์š”์ฒญ์„ ์กด์ค‘ํ•˜๋ ค๊ณ  ๋…ธ๋ ฅํ•ฉ์‹œ๋‹ค.

๋” ์ด์ƒ ์˜๊ฒฌ์„ ์ถ”๊ฐ€ํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค. ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

@fd0 , zstd ์•Œ๊ณ ๋ฆฌ์ฆ˜ https://github.com/klauspost/compress/tree/master/zstd ์˜ ์ˆœ์ˆ˜ํ•œ Go ๊ตฌํ˜„์ด ์žˆ๋Š” ๊ฒƒ ๊ฐ™๋‹ค๋Š” ์ ์„ ์ง€์ ํ•˜๊ณ  ์‹ถ์—ˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ์ด๊ฒƒ์„ ์ง์ ‘ ์‹œ๋„ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด๊ฒƒ์€ restic์—์„œ ์••์ถ• ์ง€์›์˜ ๊ฐ€๋Šฅ์„ฑ์— ๋Œ€ํ•ด ํฅ๋ถ„ํ•˜๊ฒŒ ํ–ˆ์Šต๋‹ˆ๋‹ค.

Go zstd ํ•ญ๋ชฉ(์†๋„? ์ฝ”๋“œ ํ’ˆ์งˆ? ์œ ์ง€ ๊ด€๋ฆฌ?)์€ ๋ชจ๋ฅด์ง€๋งŒ C zstd ํ•ญ๋ชฉ์€ ๋น ๋ฅธ/์•ฝ๊ฐ„์˜ ์••์ถ•์—์„œ ๋Š๋ฆฐ/๋†’์€ ์••์ถ•๊นŒ์ง€ ๋‹ค์–‘ํ•œ ๋ฒ”์œ„๋ฅผ ์ง€์›ํ•˜๋ฏ€๋กœ ๋ฐฑ์—… ๋„๊ตฌ์— ํ•„์š”ํ•œ ๋ชจ๋“  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

borgbackup์— ๋‹ค๋ฅธ ๋ชจ๋“  ์••์ถ• ์•Œ๊ณ ๋ฆฌ์ฆ˜(lz4, zlib, lzma)์ด ์—†๊ณ  ์ง€๊ธˆ ์••์ถ•์„ ์ถ”๊ฐ€ํ•˜๊ธฐ ์‹œ์ž‘ํ•œ๋‹ค๋ฉด zstd๋งŒ ์žˆ์œผ๋ฉด ๋˜๊ณ  ์•„๋ฌด ๊ฒƒ๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค๊ณ  ์ƒ๊ฐํ•˜์‹ญ์‹œ์˜ค.

์ทจํ–ฅ/์„ ํ˜ธ๋„์— ๋”ฐ๋ผ ๊ธฐ๋ณธ๊ฐ’์€ ์—†์Œ(์ด์ „๊ณผ ๊ฐ™์ด) ๋˜๋Š” ๋งค์šฐ ๋น ๋ฅธ zstd ์ˆ˜์ค€(์ „์†กํ•  ๋ฐ์ดํ„ฐ๊ฐ€ ์ ๊ธฐ ๋•Œ๋ฌธ์— ์ „๋ฐ˜์ ์œผ๋กœ ์—ฌ์ „ํžˆ ๋Œ€๋ถ€๋ถ„์˜ ๋ฐฑ์—…์„ ๋” ๋น ๋ฅด๊ฒŒ ํ•จ)์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์•ˆ๋…•ํ•˜์‹ญ๋‹ˆ๊นŒ,
๋‚ด ์ƒ๊ฐ์— ์••์ถ•์€ ํ•„์ˆ˜ ๊ธฐ๋Šฅ์ด ์•„๋‹™๋‹ˆ๋‹ค. Duplicati(์••์ถ• ํฌํ•จ)์™€ restic(์••์ถ• ์—†์Œ)์œผ๋กœ ์ˆ˜ํ–‰ํ•œ ๋ฐ์ดํ„ฐ ๋ฐฑ์—…์„ ๋น„๊ตํ–ˆ๋Š”๋ฐ ์ „์ฒด ์‚ฌ์šฉ ๊ณต๊ฐ„์ด ์ •๋ง ๋น„์Šทํ–ˆ์Šต๋‹ˆ๋‹ค.
๋น ๋ฅด๊ณ  ์•ˆ์ •์ ์ธ ์ฆ๋ถ„ ๋ฐฑ์—…์„ ์–ป๊ธฐ ์œ„ํ•ด์„œ๋งŒ restic์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์กฐ๊ธˆ ๊นฐ ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค ...
๋ณต์›๋„ ์ค‘์š”ํ•˜๋ฉฐ restic์€ ์žฌํ•ด ๋ณต๊ตฌ์— ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค. Duplicati๋Š” ๋กœ์ปฌ db๋ฅผ ์žƒ์–ด๋ฒ„๋ฆฐ ๊ฒฝ์šฐ ๋ณต๊ตฌ ์ž‘์—…์— ๋ฉฐ์น ์ด ๊ฑธ๋ฆฌ๊ธฐ ๋•Œ๋ฌธ์— ์•…๋ชฝ์ž…๋‹ˆ๋‹ค.

@fd0 ๊ณผ ๋ชจ๋“  ๊ธฐ์—ฌ์ž์—๊ฒŒ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค!

@filippobottega ์‹คํ—˜์—์„œ ํฐ ์ฐจ์ด๋ฅผ ๋ณด์ง€ ๋ชปํ–ˆ๋‹ค๋ฉด ๋‹ค์Œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

  • ๊ท€ํ•˜์˜ ๋ฐ์ดํ„ฐ๊ฐ€ (๋งŽ์ด) ์••์ถ• ๊ฐ€๋Šฅํ•˜์ง€ ์•Š๋‹ค๋Š” ๊ฒƒ(๊ทธ๋Ÿฌ๋‚˜ ์ด๊ฒƒ์€ ์ผ๋ฐ˜์ ์œผ๋กœ ํ•ด๋‹น๋˜์ง€ ์•Š์Œ), ๋˜๋Š”
  • ๋ณต์ œ๋Š” ๋‹ค๋ฅธ ์ €์žฅ ํ˜•์‹, ์„ธ๋ถ„์„ฑ, ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋“ฑ์œผ๋กœ ์ธํ•ด ์••์ถ•๊ณผ ๊ด€๋ จํ•˜์—ฌ ๋” ๋‚˜์œ ์ €์žฅ ํšจ์œจ์„ฑ์„ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฏ€๋กœ ์••์ถ• ์ ˆ๊ฐ์€ ๋‹ค๋ฅธ ์˜์—ญ์˜ ์†์‹ค๋กœ ๋ณด์ƒ๋ฉ๋‹ˆ๋‹ค.

๋‘˜ ๋‹ค ์••์ถ•์ด ๋ฌด์˜๋ฏธํ•˜๋‹ค๋Š” ์˜๋ฏธ๋Š” ์•„๋‹™๋‹ˆ๋‹ค.

@ThomasWaldmann ์ฒซ ๋ฒˆ์งธ ์ด์œ ๋กœ ํฐ ์ฐจ์ด๋ฅผ ๋ณด์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค.
์˜ค๋Š˜๋‚  ๋ฐ์ดํ„ฐ๋Š” ์ด๋ฏธ ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์œผ๋กœ ์••์ถ•๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. docx, xlsx, pptx, zip, 7z, jpeg, tif ๋“ฑ์€ ๋ชจ๋‘ ์••์ถ• ํ˜•์‹์ž…๋‹ˆ๋‹ค. ๋˜ํ•œ ISO ์ด๋ฏธ์ง€์—๋Š” ์••์ถ• ํŒŒ์ผ์ด ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ด์œ ๋กœ ์••์ถ•์€ ๋‚ด๊ฐ€ ์ƒ๊ฐํ•˜๊ธฐ์— ๋ฌด์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

@filippobottega ์‚ฌ๋žŒ๋“ค์ด ๋ฐฑ์—…์— ์–ด๋–ค ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๋Š”์ง€์— ๋Œ€ํ•œ ๋‹น์‹ ์˜ ๊ฒฌํ•ด๋Š” ์•ฝ๊ฐ„ ํŽธํ˜‘ํ•ฉ๋‹ˆ๋‹ค. SQL ๋คํ”„, ์†Œ์Šค ์ฝ”๋“œ, ๋ฐ์ดํ„ฐ ์„ธํŠธ, ์›์‹œ ์ด๋ฏธ์ง€ ๋“ฑ์€ ์–ด๋–ป์Šต๋‹ˆ๊นŒ? ์ค‘๋ณต ์ œ๊ฑฐ๋Š” ๋ฐฑ์—… ๊ฐ„์˜ ๋ธํƒ€ ํฌ๊ธฐ๋ฅผ ์ค„์ด๋Š” ๋ฐ๋Š” ํฐ ์—ญํ• ์„ ํ•˜์ง€๋งŒ ๋ฐ์ดํ„ฐ ์„ธํŠธ์˜ ์›๋ž˜ ํฌ๊ธฐ๋ฅผ ์ค„์ด๋Š” ๋ฐ๋Š” ์•„๋ฌด ํšจ๊ณผ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ์••์ถ•๋˜์ง€ ์•Š์€ ํ˜•์‹์˜ ๊ฒฝ์šฐ ์ด๋Š” ์ˆ˜ ๊ธฐ๊ฐ€๋ฐ”์ดํŠธ๋ฅผ ์˜๋ฏธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์••์ถ•๋˜์ง€ ์•Š์€ ํ˜•์‹์„ ์ €์žฅํ•œ ๋‹ค์Œ ์••์ถ• + ์ค‘๋ณต ์ œ๊ฑฐ๊ฐ€ ์ด๋ฏธ ์••์ถ•๋œ ํŒŒ์ผ์„ ์ค‘๋ณต ์ œ๊ฑฐํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ๋” ๋‚˜์€ ๊ฒฐ๊ณผ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์€ ๋งํ•  ๊ฒƒ๋„ ์—†์Šต๋‹ˆ๋‹ค.

SQL ๋คํ”„๋Š” ๋‚ด ์ฒซ ๋ฒˆ์งธ ์ƒ๊ฐ์ด์—ˆ์ง€๋งŒ restic์€ ๋‚ด ๋ฉ”์ผ ์„œ๋ฒ„๋„ ๋ฐฑ์—…ํ•˜๋ฉฐ Duplicati์—์„œ restic์œผ๋กœ ์ด๋™ํ•  ๋•Œ ์ฐ์€ ์ผ๋ถ€ RAR ์Šค๋ƒ…์ƒท์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜์—ฌ ์ „์ฒด ์••์ถ•์ด ๋” ๋‚˜์€ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์••์ถ•์„ ์„ ํƒ ์‚ฌํ•ญ์œผ๋กœ ๋งŒ๋“ค๊ณ  ๊ธฐ๋ณธ ํŒŒ์ผ ์œ ํ˜• ๋ชฉ๋ก์„ ๊ฐ–๋Š” ์‚ฌ์šฉ ์‚ฌ๋ก€๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์ง€๋งŒ ์••์ถ•์„ ํ†ตํ•ด ํ•ฉ๋ฆฌ์ ์ธ ๊ธˆ์•ก์„ ์ ˆ์•ฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@mrschyte

์‚ฌ๋žŒ๋“ค์ด ๋ฐฑ์—…์— ์–ด๋–ค ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๋Š”์ง€์— ๋Œ€ํ•œ ๊ท€ํ•˜์˜ ๊ฒฌํ•ด๋Š” ๋‹ค์†Œ ํŽธํ˜‘ํ•ฉ๋‹ˆ๋‹ค.

์ด์ œ ๊ฐœ์ธ ์ •๋ณด๋ฅผ ์–ป์„ ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ๊ทธ์˜ ๊ด€์ ์€ ๋‹น์‹ ๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์œ ํšจํ•˜๋ฉฐ ๊ณ ๋ คํ•  ๊ฐ€์น˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐฑ์—…ํ•œ ๋Œ€๋ถ€๋ถ„์˜ ๋ฐ์ดํ„ฐ๋Š” ํŒŒ์ผ ํ˜•์‹์œผ๋กœ ์ธํ•ด ์ด๋ฏธ ์••์ถ•๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

SQL ๋คํ”„๋Š” ์–ด๋–ป์Šต๋‹ˆ๊นŒ?

SQL ๋คํ”„๋ฅผ ์••์ถ•ํ•˜์ง€ ์•Š๊ณ  ์ •๋ง ์ €์žฅํ•ฉ๋‹ˆ๊นŒ? ๋‚˜๋Š” ๊ทธ๊ฒƒ๋“ค์„ ์›์‹œ ์ƒํƒœ๋กœ ์ €์žฅํ•  ํ•„์š”๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์— ๋ฐฑ์—…ํ•˜๊ธฐ ์ „์— ๋ชจ๋“  ๊ฒƒ์„ gzํ•ฉ๋‹ˆ๋‹ค.

์†Œ์Šค ์ฝ”๋“œ, ๋ฐ์ดํ„ฐ ์„ธํŠธ, ์›์‹œ ์ด๋ฏธ์ง€ ๋“ฑ

์••์ถ• ๋ฐฑ์—…์˜ ์œ ์ผํ•œ ์œ ํšจํ•œ ์‚ฌ์šฉ ์‚ฌ๋ก€๋Š” _ํ™œ๋ฐœํ•˜๊ฒŒ ์‚ฌ์šฉ๋˜๊ณ  ์žˆ์œผ๋ฏ€๋กœ ์ด๋ฏธ ์••์ถ•๋œ ์ƒํƒœ๋กœ ์ €์žฅ๋˜์ง€ ์•Š์€_ ๋ฐ˜๋ณต์ด ๋งŽ์€ ์••์ถ•๋˜์ง€ ์•Š์€ ๋Œ€์šฉ๋Ÿ‰ ํŒŒ์ผ์ž…๋‹ˆ๋‹ค. ๋‚ด ๊ฒฝํ—˜(๋‹ค๋ฅธ ์‚ฌ๋žŒ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋…„๊ฐ„ ๊ด€๋ฆฌํ•œ ๊ฒฝํ—˜ ํฌํ•จ)์— ๋”ฐ๋ฅด๋ฉด ์ด ๋ฒ”์ฃผ์— ์†ํ•˜๋Š” ๋ฐ์ดํ„ฐ๋Š” ๊ฑฐ์˜ ์—†์Šต๋‹ˆ๋‹ค. ์ ์–ด๋„ ๊ทธ๋Ÿฌํ•œ ๊ฒฝ์šฐ์— ํฐ ์ฐจ์ด๋ฅผ ๋งŒ๋“ค๊ธฐ์—๋Š” ์ถฉ๋ถ„ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ๋ฐ์ดํ„ฐ ์„ธํŠธ์˜ ์›๋ž˜ ํฌ๊ธฐ๋ฅผ ์ค„์ด๋Š” ๋ฐ๋Š” ์•„๋ฌด ๊ฒƒ๋„ ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

ํ‹€๋ฆผ์—†์ด ์ด๊ฒƒ์€ ๋ฐฑ์—… ํ”„๋กœ๊ทธ๋žจ์˜ ์ž‘์—…์ด ์•„๋‹™๋‹ˆ๋‹ค. ์›๋ณธ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฑด๋“œ๋ฆฌ๋ฉด ์•ˆ ๋ฉ๋‹ˆ๋‹ค.

์••์ถ•๋˜์ง€ ์•Š์€ ํ˜•์‹์„ ์ €์žฅํ•œ ๋‹ค์Œ ์••์ถ• + ์ค‘๋ณต ์ œ๊ฑฐ๊ฐ€ ์ด๋ฏธ ์••์ถ•๋œ ํŒŒ์ผ์„ ์ค‘๋ณต ์ œ๊ฑฐํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ๋” ๋‚˜์€ ๊ฒฐ๊ณผ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์€ ๋งํ•  ๊ฒƒ๋„ ์—†์Šต๋‹ˆ๋‹ค.

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

(restic์˜ ์••์ถ•์ด ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ˆ˜ํ–‰๋  ๋•Œ _๋‚˜์˜๋‹ค๊ณ  ๋งํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹™๋‹ˆ๋‹ค. ํŠนํžˆ ๋Š๋ฆฐ ์„ฑ๋Šฅ ๋ฌธ์ œ์™€ ๋น„๊ตํ•  ๋•Œ ์šฐ์„  ์ˆœ์œ„๊ฐ€ ๋  ํ•„์š”๊ฐ€ ์—†๋‹ค๊ณ  ์ฃผ์žฅํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์šฐ๋ฆฌ๋Š” @fd0 ์˜ ์‹œ๊ฐ„ ์ œ์•ฝ๊ณผ ๋น„์ „๊ณผ ๊ด€๋ จํ•˜์—ฌ ๋ฐ”๋ž๋‹ˆ๋‹ค.)

@mholt ์ผ๋ฐ˜์ ์œผ๋กœ ๋™์˜ํ•˜์ง€๋งŒ ๋ฃจํŠธ ๋ฐฑ์—…(์ผ๋ถ€ ๋คํ”„๋ฅผ ํ†ตํ•ด ๋˜๋Š” /์˜ ๋‚ด์šฉ ๋ฐ˜๋ณต)์„ ์ˆ˜ํ–‰ํ•˜๋ฉด ์ข‹์€ ์••์ถ•๋ฅ ์„ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•„์ˆ˜ ๋Š” ์•„๋‹ˆ์ง€๋งŒ ์‚ฌ์šฉ๋œ ์ด๊ณ„๊ฐ€ ์ด๋ฏธ ์ ๊ธฐ ๋•Œ๋ฌธ์— ์•ฝ 50%๋ฅผ ์ ˆ์•ฝํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์ตœ์ข… ์‚ฌ์šฉ์ž์— ๊ด€ํ•œ ํ•œ "๋ฌด๋ฃŒ"๋กœ ์ œ๊ณต๋˜๋Š” ๊ฒƒ์ด ํ•ญ์ƒ ์ข‹์Šต๋‹ˆ๋‹ค.

์ด ํ…Œ์ŠคํŠธ๋ฅผ ์‹œ๋„ํ•˜์‹ญ์‹œ์˜ค.

  1. SQL ๋คํ”„ ๋˜๋Š” ๊ธฐํƒ€ ์••์ถ•๋˜์ง€ ์•Š์€ ํŒŒ์ผ์„ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค. ์••์ถ•ํ•œ ๋‹ค์Œ
    ๋ฐฑ์—…์„ ์‚ฌ์šฉํ•˜์‹ญ์‹œ์˜ค.
  2. SQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ํ…Œ์ด๋ธ”์„ ์ œ๊ฑฐํ•˜๊ณ  ๋‘ ๋ฒˆ์งธ ๋คํ”„๋ฅผ ๊ฐ€์ ธ์˜จ ๋‹ค์Œ ์••์ถ•ํ•ฉ๋‹ˆ๋‹ค.
    ๊ทธ๋Ÿฐ ๋‹ค์Œ restic์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐฑ์—…ํ•˜์‹ญ์‹œ์˜ค.

์••์ถ•์ด ์ˆ˜ํ–‰๋˜๊ธฐ ์ „์—
์ค‘๋ณต ์ œ๊ฑฐ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด restics ์ค‘๋ณต ์ œ๊ฑฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๊ฑฐ์˜ ์™„์ „ํžˆ ๋ฌผ๋ฆฌ์น  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๊ทธ๋Ÿฌ๋‚˜ restic์ด ์ค‘๋ณต ์ œ๊ฑฐ ํ›„ ์••์ถ•์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด
ํ›จ์”ฌ ๋” ์ž‘์€ ์ „์ฒด ์ถœ๋ ฅ์„ ์–ป์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

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

2019๋…„ 8์›” 2์ผ ๊ธˆ์š”์ผ ์˜คํ›„ 1:29 Brandon Schneider [email protected]
์ผ๋‹ค:

@mholt https://github.com/mholt ์ผ๋ฐ˜์ ์œผ๋กœ ๋™์˜ํ•˜์ง€๋งŒ
๋ฃจํŠธ ๋ฐฑ์—…(์ผ๋ถ€ ๋คํ”„ ๋˜๋Š” /์˜ ๋‚ด์šฉ ๋ฐ˜๋ณต์„ ํ†ตํ•ด),
๋‚˜์—๊ฒŒ ์ข‹์€ ์••์ถ• ๋น„์œจ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ํ•„์ˆ˜ ๋Š” ์•„๋‹ˆ์ง€๋งŒ ์ „์ฒด
์ค‘๊ณ ๋Š” ์ด๋ฏธ ์ž‘์ง€๋งŒ 50% ์ •๋„ ์ ˆ์•ฝํ•  ์ˆ˜ ์žˆ๊ณ  ํ•ญ์ƒ ์ข‹์Šต๋‹ˆ๋‹ค.
์ตœ์ข… ์‚ฌ์šฉ์ž์— ๊ด€ํ•œ ํ•œ "๋ฌด๋ฃŒ"๋กœ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค.

โ€”
์ด ์Šค๋ ˆ๋“œ์— ๊ฐ€์ž…ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด ๋ฉ”์‹œ์ง€๋ฅผ ๋ฐ›๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ณ  GitHub์—์„œ ํ™•์ธ
https://github.com/restic/restic/issues/21?email_source=notifications&email_token=AC3I762ZVGTTJL4TF3ODZILQCRVIXA5CNFSM4AXPP352YY3PNVWWK3TUL52HS4DFVEXG43VMVBW63LNMVX
๋˜๋Š” ์Šค๋ ˆ๋“œ ์Œ์†Œ๊ฑฐ
https://github.com/notifications/unsubscribe-auth/AC3I767IQQD3CZBIWM37C6TQCRVIXANCNFSM4AXPP35Q
.

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

์ด๋Ÿฐ ์ข…๋ฅ˜์˜ ๋ณด๊ธฐ๊ฐ€ ๋ฐ์ดํ„ฐ์˜ ํšจ์œจ์ ์ธ ์ €์žฅ์„ ๋ฐฉํ•ดํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋Š๊ปด์ง€๋‚˜์š”? ๋ชจ๋“  ํ”„๋กœ๊ทธ๋žจ๊ณผ ๋‚ด๋ณด๋‚ด๊ธฐ ์ž‘์—…์ด ์ž์ฒด ์ž„์‹œ ์••์ถ• ํ˜•์‹์„ ๊ตฌํ˜„ํ•ด์•ผ ํ•œ๋‹ค๋Š” ์•„์ด๋””์–ด๋Š” ์ค‘๋ณต ์ œ๊ฑฐ/์••์ถ•/๋“ฑ์ด ์‚ฌ์ „ ์ •์˜๋œ ํŒŒ์ผ๋ณ„(๋˜๋Š” ๋””๋ ‰ํ† ๋ฆฌ tarball) ๋ฒ”์œ„ ์ด์™ธ์˜ ๋ชจ๋“  ์ž‘์—…์—์„œ ์ž‘๋™ํ•˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ €๋Š” ๋ฉ€๋ฆฌํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. . ํŒŒ์ผ์„ ๊ฐœ๋ณ„์ ์œผ๋กœ ์••์ถ•ํ•˜๋ฉด ์„œ๋กœ ๋‹ค๋ฅธ ํŒŒ์ผ/๋คํ”„ ๋“ฑ์˜ ๊ณตํ†ต์ ์„ ์ฐพ๋Š” ๊ธฐ๋Šฅ์ด ์ƒ์‹ค๋˜๊ณ  ๊ฒฐ๊ณผ์ ์œผ๋กœ ์ค‘๋ณต ์ œ๊ฑฐ์˜ ๋ชจ๋“  ์ด์ ์„ ์žƒ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์••์ถ•๋˜์ง€ ์•Š์€ ์ƒํƒœ๋กœ ์œ ์ง€ํ•˜๋ฉด ํŒŒ์ผ ์‹œ์Šคํ…œ(zfs, btrfs ๋“ฑ)์ด ์ด ๋ชจ๋“  ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ํด๋”, ์Šค๋ƒ…์ƒท ๋“ฑ์„ ์••์ถ• ๋ฐ ์ค‘๋ณต ์ œ๊ฑฐํ•˜๊ณ  ์ž‘์—…์— ํ•„์š”ํ•œ ๋„๊ตฌ์™€์˜ ํ˜ธํ™˜์„ฑ์„ ์œ ์ง€ํ•˜๋ฉด์„œ ์ด ๋ชจ๋“  ๊ฒƒ์„ ์ถ”์ƒํ™”ํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๋” ์ข‹์Šต๋‹ˆ๋‹ค. ์••์ถ•๋˜์ง€ ์•Š์€ ๋ฐ์ดํ„ฐ๋กœ

์••์ถ•์€ top restic์˜ ์ค‘๋ณต ์ œ๊ฑฐ์— ๋Œ€ํ•œ ์ถ”๊ฐ€ ์ตœ์ ํ™”๋กœ ๋ณผ ์ˆ˜ ์žˆ์ง€๋งŒ ๋ณ„๋„๋กœ ์ˆ˜ํ–‰ํ•˜๋ฉด ์„œ๋กœ ํ˜ธํ™˜๋˜์ง€ ์•Š๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค... ํŒŒ์ผ์„ ๋ฐฑ์—…ํ•˜๊ธฐ ์ „์— ์••์ถ•ํ•˜๊ณ  ์‚ฌ์ „ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•œ๋‹ค๊ณ  ์ œ์•ˆํ•˜๋ฉด ๋ชจ๋“  ๊ฒƒ์ด ์›Œํฌํ”Œ๋กœ๋กœ ๋˜๋Œ์•„๊ฐ‘๋‹ˆ๋‹ค. ๋Œ€์‹  rsync/rclone์„ ์‚ฌ์šฉํ•˜์‹ญ์‹œ์˜ค. ๊ทธ๋ ‡๋‹ค๋ฉด ์ฒ˜์Œ์—๋Š” restic์„ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

์ด๋Ÿฐ ์ข…๋ฅ˜์˜ ๋ณด๊ธฐ๊ฐ€ ๋ฐ์ดํ„ฐ์˜ ํšจ์œจ์ ์ธ ์ €์žฅ์„ ๋ฐฉํ•ดํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋Š๊ปด์ง€๋‚˜์š”? ๋ชจ๋“  ํ”„๋กœ๊ทธ๋žจ๊ณผ ๋‚ด๋ณด๋‚ด๊ธฐ ์ž‘์—…์ด ์ž์ฒด ์ž„์‹œ ์••์ถ• ํ˜•์‹์„ ๊ตฌํ˜„ํ•ด์•ผ ํ•œ๋‹ค๋Š” ์•„์ด๋””์–ด๋Š” ์ค‘๋ณต ์ œ๊ฑฐ/์••์ถ•/๋“ฑ์ด ์‚ฌ์ „ ์ •์˜๋œ ํŒŒ์ผ๋ณ„(๋˜๋Š” ๋””๋ ‰ํ† ๋ฆฌ tarball) ๋ฒ”์œ„ ์ด์™ธ์˜ ๋ชจ๋“  ์ž‘์—…์—์„œ ์ž‘๋™ํ•˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ €๋Š” ๋ฉ€๋ฆฌํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. . ํŒŒ์ผ์„ ๊ฐœ๋ณ„์ ์œผ๋กœ ์••์ถ•ํ•˜๋ฉด ์„œ๋กœ ๋‹ค๋ฅธ ํŒŒ์ผ/๋คํ”„ ๋“ฑ์˜ ๊ณตํ†ต์ ์„ ์ฐพ๋Š” ๊ธฐ๋Šฅ์ด ์ƒ์‹ค๋˜๊ณ  ๊ฒฐ๊ณผ์ ์œผ๋กœ ์ค‘๋ณต ์ œ๊ฑฐ์˜ ๋ชจ๋“  ์ด์ ์„ ์žƒ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์••์ถ•๋˜์ง€ ์•Š์€ ์ƒํƒœ๋กœ ์œ ์ง€ํ•˜๋ฉด ํŒŒ์ผ ์‹œ์Šคํ…œ(zfs, btrfs ๋“ฑ)์ด ์ด ๋ชจ๋“  ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ํด๋”, ์Šค๋ƒ…์ƒท ๋“ฑ์„ ์••์ถ• ๋ฐ ์ค‘๋ณต ์ œ๊ฑฐํ•˜๊ณ  ์ž‘์—…์— ํ•„์š”ํ•œ ๋„๊ตฌ์™€์˜ ํ˜ธํ™˜์„ฑ์„ ์œ ์ง€ํ•˜๋ฉด์„œ ์ด ๋ชจ๋“  ๊ฒƒ์„ ์ถ”์ƒํ™”ํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๋” ์ข‹์Šต๋‹ˆ๋‹ค. ์••์ถ•๋˜์ง€ ์•Š์€ ๋ฐ์ดํ„ฐ๋กœ

์ด๋Š” ๋ฐ์ดํ„ฐ์˜ ํšจ์œจ์ ์ธ ์ €์žฅ์ผ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๊ธฐ์กด ์›Œํฌํ”Œ๋กœ์ด๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค. ๋ฐฑ์—… ์ œํ’ˆ์ด ์‹œ์Šคํ…œ์˜ ๋‹ค๋ฅธ ์ธก๋ฉด์— ์›Œํฌํ”Œ๋กœ๋ฅผ ์ ์šฉํ•˜์ง€ ์•Š๊ณ  ์•ˆ์ •์ ์ด๊ณ  ํšจ์œจ์ ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐฑ์—…ํ•˜๊ธฐ๋ฅผ ์›ํ•ฉ๋‹ˆ๋‹ค. ๋ฐฑ์—…(์ž ์žฌ์ ์œผ๋กœ ๋ฌด๊ธฐํ•œ์œผ๋กœ ์œ ์ง€๋จ)์ด ํšจ์œจ์ ์œผ๋กœ ์ €์žฅ๋˜๋Š” ๊ฒƒ์ด ํ›จ์”ฌ ๋” ์ค‘์š”ํ•˜์ง€๋งŒ ๋ผ์ด๋ธŒ ์ž‘์—… ๋ฐ์ดํ„ฐ๋Š” ์ ๊ทน์ ์œผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ๋ฐฉ์‹์— ๊ฐ€์žฅ ์ ํ•ฉํ•œ ํ˜•์‹์œผ๋กœ ์ €์žฅํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ด์ œ ์ €์žฅํ•˜๊ธฐ ์ „์— ์••์ถ•ํ•˜๋Š” ๊ฒƒ์ด ์˜๋ฏธ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ํŠนํžˆ ๋Š๋ฆฐ ์ €์žฅ ์‹œ์Šคํ…œ์—์„œ ๋งค์šฐ ์••์ถ• ๊ฐ€๋Šฅํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ์— ๊ทธ๋ ‡์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด๊ฒƒ์€ ๋‚ด ๊ฒฝํ—˜์ƒ ๊ทœ์น™๋ณด๋‹ค ๋” ๋งŽ์€ ์˜ˆ์™ธ์ž…๋‹ˆ๋‹ค.

+1 ์••์ถ•์€ ์ •๋ง ๋„์›€์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค! ์†Œํ”„ํŠธ์›จ์–ด ์—”์ง€๋‹ˆ์–ด๋กœ ์ผํ•  ๋•Œ ์••์ถ•๋˜์ง€ ์•Š์€ ์†Œ์Šค ์ฝ”๋“œ๊ฐ€ ๋งŽ์ด ์žˆ๋Š” ์ „์ฒด ํ™ˆ ํด๋”๋ฅผ ๋ฐฑ์—…ํ•ฉ๋‹ˆ๋‹ค(๊ทธ๋ฆฌ๊ณ  ruby โ€‹โ€‹๋˜๋Š” python๊ณผ ๊ฐ™์€ ๋™์  ์–ธ์–ด์—์„œ๋Š” ๊ฑฐ์˜ ํ•ญ์ƒ ์†Œ์Šค ์ฝ”๋“œ์ด๋ฉฐ ๋Œ€๋ถ€๋ถ„์˜ ์ข…์†์„ฑ ํฌํ•จ).

์ง‘์—์„œ ๋ฐ”์ด๋„ˆ๋ฆฌ, man ํŒŒ์ผ, ๋ฆฌ์†Œ์Šค ํŒŒ์ผ ๋“ฑ๊ณผ ๊ฐ™์ด ์••์ถ•์˜ ์ด์ ์„ ์–ป์„ ์ˆ˜ ์žˆ๋Š” ๋งŽ์€ ํ•ญ๋ชฉ์„ ํฌํ•จํ•˜์—ฌ ์ „์ฒด / ๋ฅผ ๋‹ค์‹œ ๋ฐฑ์—…ํ•ฉ๋‹ˆ๋‹ค.

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

๋ฌผ๋ก  ์••์ถ•์ด ์ž˜ ๋˜์ง€ ์•Š๋Š” ๋งŽ์€ ์ข…๋ฅ˜์˜ ํŒŒ์ผ์ด ์žˆ์ง€๋งŒ ๋ˆ„๊ตฌ๋„ ๊ฐ•์ œ๋กœ ์••์ถ•ํ•ด์•ผ ํ•œ๋‹ค๊ณ  ๋งํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•œ ๋งŽ์€ ์ ‘๊ทผ ๋ฐฉ์‹์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์••์ถ•ํ•ด์•ผ ํ•˜๋Š” ํŒŒ์ผ ์œ ํ˜•์„ ํ—ˆ์šฉ ๋ชฉ๋ก์— ์ถ”๊ฐ€ํ•˜๊ณ , ์••์ถ•ํ•˜์ง€ ์•Š์•„์•ผ ํ•˜๋Š” ํŒŒ์ผ์„ ์ฐจ๋‹จ ๋ชฉ๋ก์— ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ๊ฐ€์žฅ ๊ฐ„๋‹จํ•œ ๋ฐฉ๋ฒ•๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์••์ถ•์„ ์‹œ๋„ํ•˜๊ณ  ๊ฒฐ๊ณผ ํฌ๊ธฐ๊ฐ€ ๊ฐœ์„ ๋˜์ง€ ์•Š์œผ๋ฉด ์••์ถ•๋˜์ง€ ์•Š์€ ์ƒํƒœ๋กœ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค(ZFS ์˜จ๋””์Šคํฌ ์••์ถ•์ด ํ™œ์„ฑํ™”๋œ ๊ฒฝ์šฐ ์ด ์ ‘๊ทผ ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

๊ฒฐ๊ตญ ์••์ถ•์€ ๊ณ ์ „์ ์ธ ๊ณต๊ฐ„ ๋Œ€ ์‹œ๊ฐ„ ํŠธ๋ ˆ์ด๋“œ์˜คํ”„์˜ ํ•œ ์˜ˆ์ž…๋‹ˆ๋‹ค. ๋” ๋งŽ์€ CPU๋ฅผ ์ง€๋ถˆํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ, ์•„๋‹ˆ๋ฉด ๋” ๋งŽ์€ ์Šคํ† ๋ฆฌ์ง€๋ฅผ ์‚ฌ์šฉํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? ์ œ ๊ฒฝ์šฐ์—๋Š” ์Šคํ† ๋ฆฌ์ง€๊ฐ€ ๋น„์šฉ์˜ ๋Œ€๋ถ€๋ถ„์„ ์ฐจ์ง€ํ•˜๋ฏ€๋กœ ์ฟผ๋“œ ์ฝ”์–ด๊ฐ€ ์กฐ๊ธˆ ๋” ๊ฐ€์—ด๋˜๊ณ  ํŒŒ์ผ ํ˜ธ์ŠคํŒ… ๋น„์šฉ์ด ์ค„์–ด๋“ค๋ฉด ์ข‹์„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๋งˆ์ง€๋ง‰์œผ๋กœ 4TB๊ฐ€ ์กฐ๊ธˆ ๋„˜๋Š” ์šฉ๋Ÿ‰์„ ํด๋ผ์šฐ๋“œ ์ œ๊ณต์—…์ฒด์— ๋ฐฑ์—…ํ•˜๊ณ  ์—…๋กœ๋“œ ์†๋„๊ฐ€ ์•ฝํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋ณด๋„ˆ์Šค ์••์ถ•์œผ๋กœ ์ธํ•ด ๋ฐฑ์—… ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋Š๋ ค์ง€์ง€ ์•Š๊ณ  ๋นจ๋ผ์ง‘๋‹ˆ๋‹ค. ๋‚ด CPU๋Š” ๋‚ด ๊ฐ€๋‚œํ•œ VDSL ์—ฐ๊ฒฐ์„ ๋”ฐ๋ผ์žก์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. .

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

@mholt ์ „์ ์œผ๋กœ ๋™์˜ํ•ฉ๋‹ˆ๋‹ค. ๋ชจ๋“  ๋‹จ์–ด.
์˜ˆ๋ฅผ ๋“ค์–ด, ์ €๋Š” TFS๋ฅผ ์†Œ์Šค ์ œ์–ด๋กœ ์‚ฌ์šฉํ•˜๊ณ  ๋ชจ๋“  ์†Œ์Šค๋Š” ์ด๋ฏธ SQL ๋ฐฑ์—…์—์„œ ์••์ถ•๋˜๊ณ  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ด๋ฏธ์ง€๋Š” msi ์„ค์ • ํŒŒ์ผ ๋˜๋Š” 7z ์•„์นด์ด๋ธŒ์—์„œ ์••์ถ•๋˜๊ธฐ ๋•Œ๋ฌธ์— ์ œ ๋„๊ตฌ ์ฒด์ธ์—์„œ ์••์ถ•์€ ๋‚˜๋จธ์ง€ ์ค‘๋ณต ์ œ๊ฑฐ๋ณด๋‹ค ๋จผ์ € ์˜ต๋‹ˆ๋‹ค. ๋งค์ผ ๋ธํƒ€๋ฅผ ๊ฐ€์ ธ์™€ ํด๋ผ์šฐ๋“œ๋กœ ๋ณด๋‚ด ์•ˆ์ „ํ•œ ์žฌํ•ด ๋ณต๊ตฌ ๊ณ„ํš์„ ๊ตฌํ˜„ํ•˜๋Š” ๋น ๋ฅด๊ณ  ๊ฐ„๋‹จํ•œ ๋ฐฉ๋ฒ•๋งŒ ์žˆ์œผ๋ฉด ๋ฉ๋‹ˆ๋‹ค.
@fd0 ์€ ์ œํ’ˆ์— ๋‹ค๋ฅธ ๋ณต์žก์„ฑ์„ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐ ์‹œ๊ฐ„์„ ์ง‘์ค‘ํ•ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

auto,zstd ์••์ถ•์„ ์‚ฌ์šฉํ•˜๋Š” ๋ณด๊ทธ์™€ ์••์ถ• ์—†์Œ(์••์ถ• ์—†์Œ)์„ ์•ฝ๊ฐ„ ๋น„๊ตํ•˜๋ฉด์„œ ์ฒ˜์Œ์—๋Š” / , ๋‹ค์Œ์—๋Š” /home ์—์„œ VM ์ด๋ฏธ์ง€ ๋ฐ docker ์ด๋ฏธ์ง€(์‹ค์ œ ๋ฐฑ์—…์—์„œ๋„ ๋ฐฑ์—…ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์—). ํ…Œ์ŠคํŠธ ๋จธ์‹ ์€ ์ €์˜ ์ผ์ƒ์ ์ธ ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ ๋จธ์‹ ์ด์—ˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—๋Š” ๋งŽ์€ ๋ฐ”์ด๋„ˆ๋ฆฌ ํŒŒ์ผ, ์••์ถ•๋œ ์‚ฌ์ง„ ๋ฐ ์˜ค๋””์˜ค ํŒŒ์ผ์ด ํฌํ•จ๋˜์–ด ์žˆ์ง€๋งŒ ๊ฝค ์ž˜ ์••์ถ•๋˜์–ด์•ผ ํ•˜๋Š” ์ƒ๋‹นํ•œ ์–‘์˜ ์ผ๋ฐ˜ ํ…์ŠคํŠธ ์†Œ์Šค ์ฝ”๋“œ๋„ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

/ : 1053136 ํŒŒ์ผ, 92.9GiB

  • ๋ณด๊ทธ, ์—†์Œ: 17:27๋ถ„, 64.1GiB
  • ๋ณด๊ทธ, zstd : 19์‹œ 29๋ถ„ ๋ถ„, 40.6 ์ง€๋ธŒ
  • ์ œํ•œ ์‹œ๊ฐ„: 09:45 ๋ถ„, 62.4GiB

/home : 221338๊ฐœ ํŒŒ์ผ, 58.3GiB

  • ๋ณด๊ทธ, zstd : 9์‹œ 6๋ถ„ ๋ถ„, 30.7 ์ง€๋ธŒ
  • ์ œํ•œ ์‹œ๊ฐ„: 04:36 ๋ถ„, 39.4GiB
    ์ €์žฅ ๊ณต๊ฐ„์— ๊ด€ํ•œ ํ•œ restic๊ณผ ๊ฑฐ์˜ ๋™์ผํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์—ฌ๊ธฐ์—์„œ ์••์ถ• ์—†์ด borg๋ฅผ ์ƒ๋žตํ–ˆ์Šต๋‹ˆ๋‹ค.

์ฒซ์งธ, ๋‚˜๋Š” ๊ทธ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค์—์„œ ๊ฑฐ์˜ ์ •ํ™•ํžˆ ๋‘ ๋ฐฐ ๋นจ๋ผ์ง„ restic์— ๋ฐ•์ˆ˜๋ฅผ ๋ณด๋‚ด๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ๋ณด๊ทธ๊ฐ€ ๋Š๋ ค์ง€๋Š” ๊ฒƒ ์™ธ์—๋„ ์••์ถ•์€ ์ „์ฒด ๋ฐฑ์—… ๊ธฐ๊ฐ„์— ~2๋ถ„(+11%)๋งŒ ์ถ”๊ฐ€ํ•˜์ง€๋งŒ / ๊ฒฝ์šฐ(-35 %). ๋‚ด ํ™ˆ ๋””๋ ‰ํ† ๋ฆฌ์˜ ๊ฒฝ์šฐ ์Šคํ† ๋ฆฌ์ง€ ์ ˆ์•ฝ์ด ์•ฝ 20%์ž…๋‹ˆ๋‹ค.

(๊ทธ ๊ฒฝ์šฐ๋ฅผ ์œ„ํ•ด ์™ธ๋ถ€ ๋””์Šคํฌ์— ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค. ์›๊ฒฉ ์ €์žฅ์†Œ์— ๋ฐฑ์—…ํ•  ๋•Œ ๋ฐฑ์—…์— ๊ฑธ๋ฆฌ๋Š” ์‹œ๊ฐ„์€ ๋Œ€๋ถ€๋ถ„ ์—…๋กœ๋“œ ๋Œ€์—ญํญ์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ง‘๋‹ˆ๋‹ค. ์ ์–ด๋„ CPU ๋ฐ IO ์†๋„๊ฐ€ ๋„คํŠธ์›Œํฌ๋ณด๋‹ค ํ›จ์”ฌ ๋†’์„ ๋•Œ) ํ…Œ์ŠคํŠธํ–ˆ์Šต๋‹ˆ๋‹ค. ์••์ถ•์œผ๋กœ ์ธํ•ด ์ „์†ก๋˜๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ์ ๊ธฐ ๋•Œ๋ฌธ์— ์••์ถ•์„ ์‚ฌ์šฉํ•˜๋Š” this ๋ฐ borg๋Š” ์‹ค์ œ๋กœ restic๋ณด๋‹ค ๋น ๋ฆ…๋‹ˆ๋‹ค. ๋Œ€์ฒด๋กœ ์ €๋Š” ์••์ถ• ์ง€์›์„ ๋ฐ›๋Š” ๊ฒƒ์„ ๋งค์šฐ ์„ ํ˜ธํ•˜๋ฉฐ, ์ด์ƒ์ ์œผ๋กœ๋Š” ์ฒญํฌ๊ฐ€ ์••์ถ•์˜ ์ด์ ์ด ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ์ž๋™ ๊ฐ์ง€๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

@nioncode ๋‚ด ๊ณ„์‚ฐ์ด ๋งž๋‹ค๋ฉด ์•ฝ 100/150MB/s๋ฅผ ๋ฐฑ์—…ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” zstd๊ฐ€ ์••์ถ•ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ๋ณด๋‹ค ๋‚ฎ์Šต๋‹ˆ๋‹ค. ์••์ถ•์€ ๋น„๋™๊ธฐ์‹์ด๋ฏ€๋กœ ์‹ค์ œ๋กœ ์†๋„ ์ €ํ•˜๊ฐ€ ์—†์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์“ธ ๊ฒƒ์ด ์ ๊ธฐ ๋•Œ๋ฌธ์— ์กฐ๊ธˆ ๋” ๋น ๋ฅผ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

VM ๋ณด๊ด€์ด ์‚ฌ์šฉ ์‚ฌ๋ก€์ผ ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์ง€๋งŒ ๋ณด๊ด€ํ•  ํ•„์š”๊ฐ€ ์—†๋„๋ก ํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.
ISO ๋ฐ ์„ค์ • ํŒŒ์ผ์—์„œ ์‹œ์ž‘ํ•˜์—ฌ ์ „์ฒด VM ๊ตฌ์ถ•์„ ์ž๋™ํ™”ํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.
์žฌํ•ด ๋ณต๊ตฌ์˜ ๊ฒฝ์šฐ ์„ค์ • ํŒŒ์ผ, ๋ฌธ์„œ ๋ฐ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ฐฑ์—…์˜ ๋ฐฑ์—…์„ ์‚ฌ์šฉํ•˜์—ฌ ์ „์ฒด VM์„ ๋ณต์›ํ•  ์ˆ˜ ์žˆ๊ธฐ๋ฅผ ์›ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์‚ฌ์šฉ์ž ์ƒํ˜ธ ์ž‘์šฉ ์—†์ด ํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.
์ด๋Ÿฐ ์‹์œผ๋กœ ์ž„์‹œ ํŒŒ์ผ, exe ๋ฐ dll๊ณผ ๊ฐ™์€ ์••์ถ•๋˜์ง€ ์•Š์€ ํŒŒ์ผ ๋“ฑ๊ณผ ๊ฐ™์ด VM์— ํฌํ•จ๋œ ๋งŽ์€ ํœด์ง€ํ†ต ํŒŒ์ผ์„ ์••์ถ•ํ•˜๊ณ  ๋ฐฑ์—…ํ•  ํ•„์š”๋ฅผ ํ”ผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๋‚˜๋Š” ๊ทธ๊ฒƒ์ด ๊ฐ„๋‹จํ•˜์ง€ ์•Š๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์ง€๋งŒ ๋””์Šคํฌ ๊ณต๊ฐ„๊ณผ ๋Œ€์—ญํญ์„ ์ ˆ์•ฝํ•˜๋Š” ๋™์ผํ•˜๊ณ  ์œ ์šฉํ•˜์ง€ ์•Š์€ GB์˜ ํŒŒ์ผ์„ ์••์ถ•ํ•˜๊ณ  ์ค‘๋ณต ์ œ๊ฑฐํ•˜๋Š” ๊ฒƒ์„ ํ”ผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ˆ„๊ฐ€ ์–ด๋–ป๊ฒŒ ์ผ์„ ํ•˜๋Š”์ง€์— ๋Œ€ํ•ด ์ด ์Šค๋ ˆ๋“œ๋ฅผ ์–ด์ง€๋Ÿฝํžˆ์ง€ ๋ง™์‹œ๋‹ค. ์ถฉ๋ถ„ํ–ˆ์Šต๋‹ˆ๋‹ค.

์••์ถ•์€ ๋งŽ์€ ์‚ฌ๋žŒ๋“ค(์ € ํฌํ•จ)์ด ์›ํ•˜๋Š” ๊ธฐ๋Šฅ์ด๋ฉฐ ์ธํ„ฐ๋„ท ์—ฐ๊ฒฐ ์†๋„๊ฐ€ ๋Š๋ฆฐ ๊ฒฝ์šฐ ๋ฐฑ์—… ์Šคํ† ๋ฆฌ์ง€์™€ ์—…๋กœ๋“œ ์‹œ๊ฐ„์„ ๋ชจ๋‘ ์ ˆ์•ฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์–ด๋–ค ์‚ฌ๋žŒ๋“ค์€ 30% ์ด์ƒ๋„ ์ ˆ์•ฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ๋ชจ๋“  ์‚ฌ๋žŒ์ด ์ด๋ฅผ ํ•„์š”๋กœ ํ•˜๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๋ฉฐ ์ผ๋ถ€ ์‚ฌ๋žŒ๋“ค์€ ์Šค๋งˆํŠธํ•œ ๋ฐฉ์‹์œผ๋กœ ์›Œํฌํ”Œ๋กœ๋ฅผ ์กฐ์ •ํ•˜์—ฌ ์ด๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ฑฐ๋‚˜ ๋‹จ์ˆœํžˆ ๋ˆ์ด๋‚˜ ๋Œ€์—ญํญ ๋˜๋Š” ๋‘˜ ๋‹ค์— ์‹ ๊ฒฝ ์“ฐ์ง€ ์•Š์•„๋„ ๋ฉ๋‹ˆ๋‹ค.

์–ด์จŒ๋“  ์–‘์ธก์€ ๋Œ€ํ™”๋ฅผ ๋‚˜๋ˆด๋‹ค.

@bjoe2k4 ๋˜๋Š” ์ง€๋‚œ ๋ช‡ ๋…„ ๋™์•ˆ ์ด ์Šค๋ ˆ๋“œ์—์„œ ์—ฌ๋Ÿฌ ๋ฒˆ ๋…ผ์˜๋œ ๊ฒƒ์ฒ˜๋Ÿผ ์ผ๋ฐ˜ ํ…์ŠคํŠธ ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•˜๋Š” ์•”ํ˜ธํ™”ํ•˜๊ธฐ ์ „์— ๋ฐ์ดํ„ฐ๋ฅผ ์••์ถ•ํ•˜๋Š” ๊ฒƒ์˜ ๋ถ€์ •์ ์ธ ๋ณด์•ˆ ์˜ํ–ฅ์— ๋Œ€ํ•ด ์šฐ๋ คํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. :)

์••์ถ•์ด ํ•„์ˆ˜๊ฐ€ ๋˜์ง€ ์•Š๋Š” ํ•œ ์••์ถ•์˜ ๋ณด์•ˆ ๋ฌธ์ œ๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ํ•  ์ˆ˜ ์žˆ๋Š” ์ ˆ์ถฉ์•ˆ์ผ ๋ฟ์ž…๋‹ˆ๋‹ค. ์ด ์ด๋ก ์ ์ธ ์œ„ํ—˜(๋‚ด ๋ฐ์ดํ„ฐ ์„ธํŠธ๊ฐ€ ํฌ๊ณ  ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์˜ˆ์ธกํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— ์–ด์จŒ๋“  ์•…์šฉ๋  ์ˆ˜ ์—†๋Š” ์œ„ํ—˜, ๋”ฐ๋ผ์„œ ์†Œ์Œ์œผ๋กœ ์ธํ•ด ์••์ถ• ์‹ ํ˜ธ).

๋‚˜๋Š” ์•„๋ฌด๋„ ์••์ถ•์„ ์˜๋ฌดํ™”ํ•˜๋Š” ๊ฒƒ์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•˜๊ณ  ์žˆ๋‹ค๊ณ  ๋ฏฟ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋‚ด ํŠน๋ณ„ํ•œ ์‚ฌ์šฉ ์‚ฌ๋ก€๋Š” LARGE ์„ธํŠธ์˜ CSV ๋ฐ SQL ๋คํ”„๋ฅผ ๋ฐฑ์—…ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด ํŒŒ์ผ์€ ๋งค์šฐ ์••์ถ• ๊ฐ€๋Šฅํ•˜๋ฉฐ... ๋ฏธ๋ฆฌ ์••์ถ•ํ•˜๊ณ  ์‹ถ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋ชจ๋“  GB ์˜จ๋ผ์ธ ์Šคํ† ๋ฆฌ์ง€์— ๋Œ€ํ•ด ๋น„์šฉ์„ ์ง€๋ถˆํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์••์ถ• ๊ธฐ๋Šฅ์„ ๊ฐ–๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

์ด ํ† ๋ก ์ด ์ด์ œ ์ข€ ๋” ํ™œ๋ฐœํ•ด์ง€๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ œ๊ฐ€ ๋ฐœ๊ฒฌํ•œ ๋ช‡ ๊ฐ€์ง€ ๋ฐœ๊ฒฌ์„ ์ œ ์นœ๊ตฌ์˜ ํŒจ์น˜ ๋ฒ„์ „๊ณผ ๊ณต์œ ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ๊ทธ๋“ค์€ restic์— ์••์ถ•์„ ์ถ”๊ฐ€ํ–ˆ์œผ๋ฉฐ(๋‚ด๊ฐ€ ์•„๋Š” ํ•œ ๋‹ค์†Œ ๋น ๋ฅด๊ณ  ๋”๋Ÿฝ์Šต๋‹ˆ๋‹ค) ๊ด€์‹ฌ ์žˆ๋Š” ์‚ฌ๋žŒ์ด ์žˆ์œผ๋ฉด ๊ตฌํ˜„ ์„ธ๋ถ€ ์‚ฌํ•ญ์— ๋Œ€ํ•ด ์–ธ๊ธ‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ด ๊ฒŒ์‹œ๋ฌผ์— ๋Œ€ํ•ด ์•Œ๋ ค๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค.
๋‚ด ์‚ฌ์šฉ ์‚ฌ๋ก€๋Š” ์ž์ฒด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํ˜•์‹์ด ์žˆ๋Š” ์ •๋ง ๋ชป์ƒ๊ธด ์€ํ–‰ ์†Œํ”„ํŠธ์›จ์–ด์ž…๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๊ทœ์ œ์ƒ์˜ ์ด์œ ๋กœ ์ด ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋ฉฐ ์šฐ๋ฆฌ๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋Š” ์›๋ž˜ ํฌ๊ธฐ์˜ 90%๊นŒ์ง€ ์••์ถ•ํ•  ์ˆ˜ ์žˆ๋Š” ๋ช‡ TB์˜ ๋‹ค์†Œ ํฐ ํŒŒ์ผ์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์••์ถ•์€ ๋ฐฑ์—… ์Šคํ† ๋ฆฌ์ง€, ๋ฐฑ์—… ์‹œ๊ฐ„ ๋ฐ ๋ณต์› ์‹œ๊ฐ„์„ ๋งŽ์ด ์ ˆ์•ฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
Restic ์—…์ŠคํŠธ๋ฆผ, ์••์ถ•์ด ์ ์šฉ๋œ ํŒจ์น˜๋œ Restic ๋ฐ tar๊ฐ€ ์žˆ๋Š” ํ˜„์žฌ ๋ฐฑ์—… ์†”๋ฃจ์…˜์„ ๋น„๊ตํ•  ๋•Œ ๋ฐœ๊ฒฌํ•œ ์‚ฌํ•ญ์€ https://gist.github.com/joerg/b88bf1de0ce824894ffc38f597cfef5f ์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

| ๋„๊ตฌ | ๋ฐฑ์—… ์‹œ๊ฐ„(๋ถ„:์ดˆ) | ๋ณต์› ์‹œ๊ฐ„(๋ถ„:์ดˆ) | ๋ฐฑ์—… ๊ณต๊ฐ„(G) | ๋ฐฑ์—… ๊ณต๊ฐ„(%) | ๋ฐฑ์—…(MB/s) | ๋ณต์›(MB/s) |
| --------------------------- | ------------------ | ------------------ | ---------------- | ---------------- | -------------- | -------------- |
| ํƒ€๋ฅด | 4:42 | 5:19 | 11 | 9.6% | 404 | 357 |
| Restic S3 ๋กœ์ปฌ ์—…์ŠคํŠธ๋ฆผ | 10:04 | 30:56 | 102 | 89.5% | 189 | 61 |
| Restic S3 ๋กœ์ปฌ ์••์ถ• | 5:43 | 19:28 | 8.6 | 7.5% | 332 | 98 |
| ๋ ˆ์Šค์Šคํ‹ฑ ๋กœ์ปฌ ์—…์ŠคํŠธ๋ฆผ | 8์‹œ 33๋ถ„ | 26:06 | 102 | 89.5% | 222 | 73 |
| ๋ ˆ์Šค์Šคํ‹ฑ ๋กœ์ปฌ ์••์ถ• | 5์‹œ 21๋ถ„ | 16:57 | 8.6 | 7.5% | 355 | 112 |
| Restic S3 ์›๊ฒฉ ์—…์ŠคํŠธ๋ฆผ | 17:12 | 46:06 | 102 | 89.5% | 110 | 41 |
| Restic S3 ์›๊ฒฉ ์••์ถ• | 5์‹œ 27๋ถ„ | 21:42 | 8.6 | 7.5% | 349 | 88 |

๋‚˜๋Š” restic์ด ๊ฑฐ์˜ ๋ชจ๋“  ๊ฒƒ์„ ๊ฐ์†Œ์‹œํ‚ค๊ธฐ ๋•Œ๋ฌธ์— ๋ชจ๋“  ์ข…๋ฅ˜์˜ ์„ ํƒ์  ์••์ถ•์œผ๋กœ ํฌ๊ฒŒ ์–ป์„ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๋ชจ๋“  ํŒŒ์ผ์— ํฅ๋ฏธ๋กœ์šด ์••์ถ• ๋น„์œจ์ด ์žˆ๋Š” ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค. ๋น„๋””์˜ค ํŒŒ์ผ์„ ์••์ถ•ํ•˜๋Š” ๊ฒƒ์€ ์•„๋งˆ๋„ ๊ฐ€์น˜๊ฐ€ ์—†์ง€๋งŒ SQL ๋คํ”„๋ฅผ ์••์ถ•ํ•˜๋Š” ๊ฒƒ์€ ๊ฐ€์žฅ ํ™•์‹คํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— Btrfs์™€ ๊ฐ™์€ ํŒŒ์ผ ์‹œ์Šคํ…œ์€ ๋จผ์ € ํŒŒ์ผ์˜ ์ฒ˜์Œ 128KB๋ฅผ ์••์ถ•ํ•˜๋ ค๊ณ  ์‹œ๋„ํ•˜๊ณ  ์ƒ๋‹นํ•œ ์••์ถ• ๋น„์œจ์ด ์žˆ์œผ๋ฉด ์ „์ฒด ํŒŒ์ผ์„ ์••์ถ•ํ•ฉ๋‹ˆ๋‹ค. ํ™•์‹คํžˆ ์™„๋ฒฝํ•˜์ง€๋Š” ์•Š์ง€๋งŒ ๋น ๋ฅด๋ฉฐ ํŒŒ์ผ์„ ๊ฐœ๋ณ„์ ์œผ๋กœ ์••์ถ•ํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ•œ ๊ฒฝ์šฐ ๋Œ€๋ถ€๋ถ„์˜ ์‚ฌ์šฉ ์‚ฌ๋ก€์—์„œ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

์••์ถ•์„ ์˜ต์…˜์œผ๋กœ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์— ๋ฐ˜๋Œ€ํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์„ ์œ„ํ•ด ๋‚ด ์‚ฌ์šฉ ์‚ฌ๋ก€๋Š” ์ฝ˜ํ…์ธ ๋ฅผ ์ œ์–ดํ•  ์ˆ˜ ์—†๋Š” ๋Œ€๋ถ€๋ถ„์˜ ์••์ถ• ๊ฐ€๋Šฅํ•œ ํŒŒ์ผ ํ˜•์‹์„ ํ˜ผํ•ฉํ•˜์—ฌ ๋ฐฑ์—…ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋ฐฑ์—… ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์ „์— ์—ฌ๋Ÿฌ ์‹œ์Šคํ…œ(์ƒˆ ์•„์นด์ด๋ธŒ๋กœ ์••์ถ•ํ•˜๋Š” ๊ฒฝ์šฐ ๋” ๋งŽ์€ ๋กœ์ปฌ ๋””์Šคํฌ ๊ณต๊ฐ„์„ ์ฐจ์ง€ํ•˜๊ฑฐ๋‚˜ ์ œ์ž๋ฆฌ์— ์••์ถ•๋œ ๊ฒฝ์šฐ ๊ด€๋ จ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์—์„œ ํŒŒ์ผ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๊ฒŒ ํ•จ).

Restic์„ DR ๋ฐฑ์—… ๋„๊ตฌ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ธฐ๋ฅผ ์›ํ•˜์ง€๋งŒ ํ˜„์žฌ ์••์ถ• + ์ค‘๋ณต ์ œ๊ฑฐ๋กœ ์ธํ•ด ๋ฐฑ์—… ์ž‘์—…๋‹น ๋„คํŠธ์›Œํฌ ์ „์†ก๋Ÿ‰์ด ๊ธฐ๊ฐ€๋ฐ”์ดํŠธ๋ฅผ ๋งŽ์ด ์ ˆ์•ฝํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ํ˜„์žฌ borg(๋Š๋ฆผ, ๋Œ€์šฉ๋Ÿ‰ ๋žจ ์š”๊ตฌ ์‚ฌํ•ญ ๋“ฑ)๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚ด ๋ฐฑ์—… ์„ธํŠธ ์ „์ฒด์— ๊ฑธ์ณ ํด๋ผ์šฐ๋“œ์— ์žˆ๋Š” ํ…Œ๋ผ๋ฐ”์ดํŠธ ์ด์ƒ์˜ ์ €์žฅ ๊ณต๊ฐ„(์›”๋ณ„๋กœ ๋น„์šฉ์„ ์ง€๋ถˆํ•จ)์„ ์‰ฝ๊ฒŒ ์ดˆ๊ณผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์••์ถ•์„ ์ง€์›ํ•˜๋Š” ๊ฒฝ์šฐ ๋ฐฑ์—…์„ ๋” ์˜ค๋ž˜ ๋ณด๊ด€ํ•˜๊ฑฐ๋‚˜ ์Šคํ† ๋ฆฌ์ง€ ๋น„์šฉ์„ ์ค„์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์•ˆ๋…•ํ•˜์„ธ์š” @joerg๋‹˜ , ํ…Œ์ŠคํŠธ๋ฅผ ๊ณต์œ ํ•ด์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.
Tar ์••์ถ• ์ž‘์—…์˜ ์ถœ๋ ฅ์„ ์ œํ•œํ•˜์—ฌ ๋ฐฑ์—…์„ ์‹œ๋„ํ–ˆ์Šต๋‹ˆ๊นŒ?
"Restic S3 Remote Compress"์™€ "Tar" + "Restic S3 Remote Upstream"์„ ๋น„๊ตํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค.
๊ฒŒ๋‹ค๊ฐ€ ๋‹น์‹ ์ด ๋งํ•˜๋Š” ๊ฒƒ์€ ์‚ฌ์‹ค์ด ์•„๋‹Œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” restic์ด ๊ฑฐ์˜ ๋ชจ๋“  ๊ฒƒ์„ ๊ฐ์†Œ์‹œํ‚ค๊ธฐ ๋•Œ๋ฌธ์— ๋ชจ๋“  ์ข…๋ฅ˜์˜ ์„ ํƒ์  ์••์ถ•์œผ๋กœ ํฌ๊ฒŒ ์–ป์„ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

ํ…Œ์ŠคํŠธ ๊ฒฐ๊ณผ๋ฅผ ๋ณด๋ฉด restic์— ํ•„์š”ํ•œ CPU ์‹œ๊ฐ„์€ ๋กœ์ปฌ ๋ฐฑ์—…์˜ ๊ฒฝ์šฐ 2๋ฐฐ, ๋ณต์› ์‹œ 6๋ฐฐ ๋” ๊ธด ๊ฒƒ์œผ๋กœ ๋ณด์ž…๋‹ˆ๋‹ค. ํƒ€๋ฅด์— ๋น„ํ•˜๋ฉด ๋ณ„๋กœ์ž…๋‹ˆ๋‹ค.

tar๋Š” ์••์ถ• ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ์•„๋‹™๋‹ˆ๋‹ค. ๋‹น์—ฐํžˆ ๋น ๋ฆ…๋‹ˆ๋‹ค.
ํŽธ์ง‘: ์•„ ๊ทธ๋ฆฌ๊ณ  btw. ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ tarํ•˜๋ฉด ํŒŒ์ผ๋‹น ์—ฌ๋Ÿฌ ์Šค๋ ˆ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋ฉฐ ํ•œ ๋ฒˆ์— ๋‘ ๊ฐœ ์ด์ƒ์˜ ํŒŒ์ผ์—์„œ๋„ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋Œ€์‹  ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ์Šค์บ”ํ•˜๊ณ  ํŒŒ์ผ์„ ์ถ”๊ฐ€ํ•œ ๋‹ค์Œ ๋‹ค์Œ์œผ๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค. ๊ฝค ๋Š๋ฆฝ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋ฌธ์ œ๋Š” ๋‹ค์ค‘ ์Šค๋ ˆ๋“œ๋กœ ์ถ”๊ฐ€ํ•˜๋„๋ก ์„ค๊ณ„๋˜์ง€ ์•Š์€ ์•„์นด์ด๋ธŒ ํŒŒ์ผ์ž…๋‹ˆ๋‹ค.

ํ…Œ์ŠคํŠธ ๊ฒฐ๊ณผ๋ฅผ ๋ณด๋ฉด, restic์ด ์‚ฌ์šฉํ•˜๋Š” CPU ์‹œ๊ฐ„์€ ๋กœ์ปฌ ๋ฐฑ์—…์—์„œ 2๋ฐฐ, ๋ณต์›์—์„œ 6๋ฐฐ ๋Š๋ฆฐ ๊ฒƒ์œผ๋กœ ๋ณด์ž…๋‹ˆ๋‹ค. ํƒ€๋ฅด์— ๋น„ํ•˜๋ฉด ๋ณ„๋กœ์ž…๋‹ˆ๋‹ค.

๋‚˜๋Š” ์—ฌ๊ธฐ์„œ ๋‹น์‹ ์˜ ์š”์ ์„ ์™„์ „ํžˆ ํ™•์‹ ํ•˜์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค. restic์€ ๋ฌผ๋ก  Tar๋ณด๋‹ค ๋Š๋ฆฌ์ง€๋งŒ ์••์ถ•์ด ์žˆ๋Š” restic์€ ์••์ถ•์ด ์—†๋Š” restic๋ณด๋‹ค ํ•ญ์ƒ ๋น ๋ฅด๋ฏ€๋กœ restic์ด ๋ถ„๋ช…ํžˆ ์ด์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

Tar๋Š” "์ด ํ•˜๋“œ์›จ์–ด์˜ ๊ฐ€์žฅ ์ข‹์€ ๊ฒฝ์šฐ"์—์„œ ์œ ์šฉํ•œ ๋น„๊ต์ด์ง€๋งŒ ๋Œ€๋ถ€๋ถ„์˜ restic์˜ ๋‹ค๋ฅธ ๊ธฐ๋Šฅ์ด ๋ถ€์กฑํ•ฉ๋‹ˆ๋‹ค(์Šค๋ƒ…์ƒท ๋ฐ ๋ฐ์ดํ„ฐ ์ค‘๋ณต ์ œ๊ฑฐ๊ฐ€ ๋– ์˜ค๋ฆ…๋‹ˆ๋‹ค). ์••์ถ•์„ ์ถ”๊ฐ€ํ•˜๋ฉด ๋ฐฑ์—… ์ œํ’ˆ์— ์ค‘์š”ํ•œ ๋ฐฑ์—… ์‹œ๊ฐ„, ๋ณต์› ์‹œ๊ฐ„ ๋ฐ ์ €์žฅ ๋น„์šฉ๋งŒ ํ–ฅ์ƒ๋˜๋Š” ๊ฒƒ์œผ๋กœ ๋ณด์ž…๋‹ˆ๋‹ค.

@joerg ์นœ๊ตฌ๋“ค์ด ํ’€ ๋ฆฌํ€˜์ŠคํŠธ๋ฅผ ์—ด๊ณ  ์••์ถ•์ด ํฌํ•จ๋œ ํŒจ์น˜๋ฅผ ๊ณต๊ฐœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ์–ด๋–ค ์••์ถ• ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๊นŒ?

@joerg @thedaveCA
์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค. @joerg ์ฃผ์žฅ์˜ ์˜๋ฏธ๋ฅผ ์ž˜๋ชป ์ดํ•ดํ–ˆ์Šต๋‹ˆ๋‹ค. ์••์ถ•์„ ํ•œ ์ƒํƒœ์—์„œ ์ œํ•œํ•˜๋Š” ๊ฒƒ์ด ์••์ถ•์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ๋ณด๋‹ค ํ™•์‹คํžˆ ์ข‹์Šต๋‹ˆ๋‹ค. ์ด์ œ ๋‚ด ์งˆ๋ฌธ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. Tar + restic์ด ์••์ถ•์ด ์žˆ๋Š” restic๊ณผ ๋น„๊ตํ•˜์—ฌ ๋” ์ข‹์Šต๋‹ˆ๊นŒ?

์šฐ๋ฆฌ๋Š” ๋ฒ ์–ด tar ์•„์นด์ด๋ธŒ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ํŠน๋ณ„ํ•œ ๋ณ‘๋ ฌ zip ๊ตฌํ˜„์œผ๋กœ gzip์œผ๋กœ ์••์ถ•๋œ tar ์•„์นด์ด๋ธŒ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Œ์„ ๋ช…์‹ฌํ•˜์‹ญ์‹œ์˜ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ํ…Œ๋ผ๋ฐ”์ดํŠธ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์•„์นด์ด๋ธŒํ•˜๋Š” ๋ฐ ์ง€๊ธˆ ๋‹น์žฅ ๊ฑธ๋ฆฌ๋Š” "๋‹จ" ์‹œ๊ฐ„ ๋Œ€์‹  ๋ฉฐ์น ์ด ๊ฑธ๋ฆด ๊ฒƒ์ž…๋‹ˆ๋‹ค: https://gist.github. com/joerg/b88bf1de0ce824894ffc38f597cfef5f#tarpigz
@shibumi ๋‚˜๋Š” ๊ทธ๋“ค์—๊ฒŒ ์ด ๋ฌธ์ œ์™€ ๋‚ด ๊ฒŒ์‹œ๋ฌผ์— ๋Œ€ํ•ด

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

์—†๋Š” ๊ณณ์—์„œ ์•Œ๋ ค์ง„ ๋ฌธ์ œ๋ฅผ ๋งŒ๋“ค์ง€ ๋ง™์‹œ๋‹ค, ๊ทธ๋ ‡์ฃ ?

(์ด ๋ฌธ์ œ๋Š” ์ด๋ฏธ ์–ธ๊ธ‰๋˜์—ˆ์œผ๋ฉฐ ์•„๋งˆ๋„ ํ•œ ๋ฒˆ๋„ ์—†์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์—ฌ์ „ํžˆ ์ด ๋ฌธ์ œ๋Š” ์—ด๋ ค ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ ๋•Œ๋ฌธ์— ํ•œ ๋ฒˆ๋งŒ ๋‹ซ์•„์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.)

๋ฌธ์ œ๋ฅผ ์ŠคํŒธ์œผ๋กœ ๋ณด๋‚ด๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? :(๊ทธ๊ฒƒ์€ ๋„ˆ๋ฌด ๋งŽ์ด ๋…ผ์˜๋˜์–ด ๊ฑฐ์˜ ์ฃผ์ œ์—์„œ ๋ฒ—์–ด๋‚ฌ์Šต๋‹ˆ๋‹ค. ๋‹น์‹ ์€ ์••์ถ•์„ ํ™œ์„ฑํ™”ํ•˜์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค!!

๋˜ํ•œ ๊ณต๊ฒฉ ์•„์ด๋””์–ด๋Š” ๊ณต๊ฒฉ์ž๊ฐ€ ์••์ถ• ๋ฐ ์•”ํ˜ธํ™”ํ•  ๋ฐ์ดํ„ฐ๋ฅผ ์ œ์–ดํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค(ํ™•์‹คํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค!). https://en.m.wikipedia.org/wiki/CRIME

๊ทธ๋Ÿฌ๋‚˜ ๋ณด์•ˆ์ƒ์˜ ๋ฌธ์ œ์ผ์ง€๋ผ๋„ ๋ˆ„๊ตฐ๊ฐ€๋Š” ๋‹จ์ˆœํžˆ ์ €์žฅ ๊ณต๊ฐ„์„ ์ ˆ์•ฝํ•˜๊ธฐ ์œ„ํ•ด ์ž์‹ ์ด ์ œ์–ดํ•˜๋Š” โ€‹โ€‹์ €์žฅ์†Œ์—๋งŒ ์••์ถ•์„ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ์–ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์•”ํ˜ธํ™”๋ฅผ ์•ฝํ™”์‹œํ‚ค๋Š” ์„ ํƒ์  ๊ธฐ๋Šฅ์ด ์žˆ์–ด๋„ ์ž˜๋ชป๋œ ๋ณด์•ˆ ๊ฐ๊ฐ์„ ๋ถˆ๋Ÿฌ์ผ์œผํ‚ต๋‹ˆ๋‹ค. Restic์€ _secure_ ๋ฐฑ์—… ํ”„๋กœ๊ทธ๋žจ์ด๋ผ๊ณ  ์ฃผ์žฅํ•ฉ๋‹ˆ๋‹ค. ์„ ํƒ์  ์••์ถ•์„ ์ถ”๊ฐ€ํ•˜๋ฉด ๋•Œ๋•Œ๋กœ, ํ•ญ์ƒ ํ’€ํƒ€์ž„์œผ๋กœ๋งŒ ์•ˆ์ „ํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— ์ด ์•ฝ์†์ด ๋ฌดํšจํ™”๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ํ™•์‹คํžˆ CVE ๋ณด๊ณ ์„œ๊ฐ€ ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋ˆ„๊ฐ€ ์ž์‹ ์˜ ์†Œํ”„ํŠธ์›จ์–ด์— ์ด๋Ÿฐ ์œ ํ˜•์˜ "์ธ๊ธฐ"๋ฅผ ์›ํ•ฉ๋‹ˆ๊นŒ?

๊ทธ๋Ÿฌ๋‚˜ ์•”ํ˜ธํ™”์™€ ํ•จ๊ป˜ ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š” ๋ฐฉ์‹์œผ๋กœ ์••์ถ•์„ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์€ ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ์˜ต์…˜์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

2017๋…„ FWIW์—์„œ ์ €๋Š” Restic์—์„œ ์•”ํ˜ธํ™”๋ฅผ ์ œ๊ฑฐํ•œ ๋ฐ๋ชจ๋ฅผ ๋งŒ๋“ค์—ˆ๊ณ  ์••์ถ•์ด ๋งค์šฐ ํšจ๊ณผ์ ์ผ ์ˆ˜ ์žˆ์Œ์„ ๋ณด์—ฌ์ฃผ์—ˆ์Šต๋‹ˆ๋‹ค . ๋ฐฑ๋ฐฐ ํšจ๊ณผ์ ์ž…๋‹ˆ๋‹ค. IIRC ์••์ถ•์€ ์•”ํ˜ธํ™”์ฒ˜๋Ÿผ ์ผ์ข…์˜ ๋ž˜ํผ(wrapper)๋กœ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ์˜ค๋žซ๋™์•ˆ ์ฝ”๋“œ๋ฅผ ๋ณด์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์— ์š”์ฆ˜์—๋Š” ๋” ์–ด๋ ค์šธ ์ˆ˜๋„ ์žˆ๊ณ  ๋” ์‰ฌ์šธ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

์‹ค์ œ๋กœ CRIME์€ ์•”ํ˜ธ๋ฌธ์˜ ๊ธธ์ด๋ฅผ ์•Œ์•„์•ผ ํ•˜๋ฉฐ, ์ด๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ restic์—์„œ ๋ถˆ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
๋˜ํ•œ "๋ณด์•ˆ" ๋ฐฑ์—… ํ”„๋กœ๊ทธ๋žจ์ด ์—†์Šต๋‹ˆ๋‹ค. ์ œ3์ž๊ฐ€ ๋ฐฑ์—… ํŒŒ์ผ์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณ€์กฐํ•˜๊ฑฐ๋‚˜ ๋” ์‹ฌํ•˜๊ฒŒ ์ฝ์„ ์ˆ˜ ์žˆ๋Š” ๊ฐ€๋Šฅ์„ฑ์ด ํ•ญ์ƒ ์žˆ์Šต๋‹ˆ๋‹ค.
์••์ถ•์ด ๋” ์•…ํ™”๋œ๋‹ค๋Š” ๋ง์€ ์–ด๋ฆฌ์„์€ ์ผ์ž…๋‹ˆ๋‹ค.

์‹ค์ œ๋กœ CRIME์€ ์•”ํ˜ธ๋ฌธ์˜ ๊ธธ์ด๋ฅผ ์•Œ์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.

CRIME์€ ํ•„์š”ํ•˜์ง€๋งŒ ๋‹น์‹ ์€ ๊ทธ๋ ‡์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋‹น์‹ ์ด ์ •๋ณด์›์œผ๋กœ๋ถ€ํ„ฐ ์ผ๊ธ‰ ๋น„๋ฐ€ ํŒŒ์ผ ์„ธํŠธ๋ฅผ ๋ฐ›์€ ํƒ์‚ฌ ๊ธฐ์ž๋ผ๊ณ  ์ƒ์ƒํ•ด ๋ณด์‹ญ์‹œ์˜ค. ์•”ํ˜ธํ™”๋กœ ๋ฐฑ์—…ํ•˜๋ฉด ์•„๋ฌด๋„ ์ด ํŒŒ์ผ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค๋Š” ์‚ฌ์‹ค์„ ์•Œ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

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

"๋ณด์•ˆ" ๋ฐฑ์—… ํ”„๋กœ๊ทธ๋žจ์ด ์—†์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฐ ๋‹ค์Œ ์—…๋ฐ์ดํŠธ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

Fast, secure, efficient backup program

๋˜ํ•œ ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ณด์•ˆ์— ์œ ์˜ํ•˜์‹ญ์‹œ์˜ค.

restic์€ ์••์ถ•๋œ ์ฒญํฌ๋งŒ ์ €์žฅํ•˜๋ฏ€๋กœ ์ฒญํฌ์˜ ํฌ๊ธฐ๊ฐ€ ๋ช…ํ™•ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
์—ด์‡ ๊ฐ€ ์—†๋Š” ์‚ฌ๋žŒ.

2019๋…„ 8์›” 9์ผ ๊ธˆ์š”์ผ 02:09:23AM -0700์—์„œ Alexey Kopytko๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ผ์Šต๋‹ˆ๋‹ค.

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

์—†๋Š” ๊ณณ์—์„œ ์•Œ๋ ค์ง„ ๋ฌธ์ œ๋ฅผ ๋งŒ๋“ค์ง€ ๋ง™์‹œ๋‹ค, ๊ทธ๋ ‡์ฃ ?

--
๋‹น์‹ ์ด ์–ธ๊ธ‰๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์„ ๋ฐ›๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ฑฐ๋‚˜ GitHub์—์„œ ํ™•์ธํ•˜์„ธ์š”.
https://github.com/restic/restic/issues/21#issuecomment -519844526

--
(Escriu-me xifrat si saps PGP / Write ciphered if you know PGP)
PGP ํ‚ค 7CBD1DA5 - https://emailselfdefense.fsf.org/

์ด๋Ÿฌํ•œ ๋ณด์•ˆ ๋ฌธ์ œ์— ๋Œ€ํ•ด ๋” ์•Œ๊ณ  ์‹ถ์€ ์‚ฌ๋žŒ์„ ์œ„ํ•ด http://www.iacr.org/cryptodb/archive/2002/FSE/3091/3091.pdf๋ฅผ ์„ค๋ช…ํ•˜๋Š” ๋ฉ‹์ง„ ๋ฌธ์„œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค
๋‚ด๊ฐ€ ์•Œ๊ธฐ๋กœ๋Š” ํŒŒ์ผ์„ ์ฒญํฌํ•œ ๋‹ค์Œ ์••์ถ• ๋ฐ ์•”ํ˜ธํ™”ํ•˜๋ฉด ๊ฒฐํ•จ์ด ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ฒญํฌ ์ „์— ํŒŒ์ผ์„ ์••์ถ•ํ•˜๋ฉด ๋‹ค๋ฅธ ํŒŒ์ผ๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์ด์ง„ ํŒŒ์ผ์ด ๋˜๋ฉฐ ์ด๋Ÿฌํ•œ ์ผ๋ฐ˜ ํ…์ŠคํŠธ ๊ณต๊ฒฉ์€ ๋ฌด์šฉ์ง€๋ฌผ์ด ๋ฉ๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ์ฒญํฌ ์ „์— ํŒŒ์ผ์„ ์••์ถ•ํ•˜๋ฉด ๋‹ค๋ฅธ ํŒŒ์ผ๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์ด์ง„ ํŒŒ์ผ์ด ๋˜๋ฉฐ ์ด๋Ÿฌํ•œ ์ผ๋ฐ˜ ํ…์ŠคํŠธ ๊ณต๊ฒฉ์€ ๋ฌด์šฉ์ง€๋ฌผ์ด ๋ฉ๋‹ˆ๋‹ค.

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

restic์€ ์••์ถ•๋œ ์ฒญํฌ๋งŒ ์ €์žฅํ•˜๋ฏ€๋กœ ํ‚ค๊ฐ€ ์—†๋Š” ์‚ฌ๋žŒ์—๊ฒŒ๋Š” ์ฒญํฌ์˜ ํฌ๊ธฐ๊ฐ€ ๋ถ„๋ช…ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๊ทธ๊ฒƒ์€ ์•ˆ๋„๊ฐ์ด๋‹ค.

๋‚ด ์š”์ ์€ ์—ฌ์ „ํžˆ โ€‹โ€‹์œ ํšจํ•ฉ๋‹ˆ๋‹ค. ์•”ํ˜ธํ™”์™€ ํ•จ๊ป˜ ์••์ถ•์„ ๊ตฌํ˜„ํ•  ๋•Œ ์ˆจ๊ฒจ์ง„ ์•ฝ์ ์„ ํ”„๋กœ๊ทธ๋žจ์— ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด ๋งŽ์ด ์žˆ์œผ๋ฏ€๋กœ ์•„์˜ˆ ์ถ”๊ฐ€ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์ด ๊ฐ€์žฅ ์ข‹์Šต๋‹ˆ๋‹ค. TLS์— ๋Œ€ํ•ด ๊ฒฐ์ •ํ•˜๋Š” ์•”ํ˜ธํ™” _์ „๋ฌธ๊ฐ€_์กฐ์ฐจ๋„ ์••์ถ•์„ ์ œ๊ฑฐํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋น„์Šทํ•œ ๋…ผ๋ฆฌ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์—ˆ๋‚˜ ๋ด…๋‹ˆ๋‹ค.

btw.:

However, it is important to note that these attacks have little security impact on, say, a bulkencryption application which compresses data before encrypting

...
๋‹น์‹ ์€ ์•”ํ˜ธํ™” ๋œ ํŒŒ์ผ์˜ ์—ฌ๋Ÿฌ ๋‹ค๋ฅธ ๋ฒ„์ „์ด์žˆ๋Š” ๊ฒฝ์šฐ๋„ ๋ฒ”์ฃ„์—๋งŒ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.
์ฆ‰, ์—ฌ๋Ÿฌ ๋ฐฑ์—… ์‹คํ–‰(๊ณต๊ฒฉ์ž๊ฐ€ ๋ชจ๋“  ๋ฐฑ์—…์„ ์–ป์€ ๋‹ค๋ฅธ ์ €์žฅ์†Œ๋กœ)
๋˜ํ•œ ์ ์€ ์–‘์˜ ๋ฐ์ดํ„ฐ์— ์˜ํ•ด์„œ๋งŒ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

CRIME์€ ํ•„์š”ํ•˜์ง€๋งŒ ๋‹น์‹ ์€ ๊ทธ๋ ‡์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋‹น์‹ ์ด ์ •๋ณด์›์œผ๋กœ๋ถ€ํ„ฐ ์ผ๊ธ‰ ๋น„๋ฐ€ ํŒŒ์ผ ์„ธํŠธ๋ฅผ ๋ฐ›์€ ํƒ์‚ฌ ๊ธฐ์ž๋ผ๊ณ  ์ƒ์ƒํ•ด ๋ณด์‹ญ์‹œ์˜ค. ์•”ํ˜ธํ™”๋กœ ๋ฐฑ์—…ํ•˜๋ฉด ์•„๋ฌด๋„ ์ด ํŒŒ์ผ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค๋Š” ์‚ฌ์‹ค์„ ์•Œ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

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

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

@sanmai , ๋‚˜๋Š”์ด ์˜ˆ์ œ๋ฅผ ์–ป์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค.

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

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

์‚ฌ์‹ค, ๋ฐฑ์—…ํ•˜๊ธฐ ์ „์— ํŒŒ์ผ์„ gzip์œผ๋กœ ์••์ถ•ํ•˜๋Š” ๊ฒƒ์€ ์–ด๋–ป์Šต๋‹ˆ๊นŒ? ์ด๊ฒƒ์€ ๋ณด์•ˆ ์ทจ์•ฝ์ ๋„ ์—ด์–ด ์ค๋‹ˆ๊นŒ?

์ด ์˜ˆ๋Š” ๋ง๋„ ์•ˆ๋˜๋Š” ์†Œ๋ฆฌ๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์Šค๋ƒ…์ƒท์— ์•Œ๋ ค์ง„ ์ผ๋ถ€ (์ž„์˜) ํŒŒ์ผ์˜ ์••์ถ• ๋ฒ„์ „์ด ํฌํ•จ๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ฃผ์žฅํ•˜๋ฉด ์••์ถ•๋˜์ง€ ์•Š์€ ํŒŒ์ผ์ด ํฌํ•จ๋˜์–ด ์žˆ๋Š”์ง€ ์—ฌ๋ถ€๋„ ๊ฒฐ์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์••์ถ•์ด ์•”ํ˜ธํ™”๋ฅผ ํ›จ์”ฌ ๋œ ์•ˆ์ „ํ•˜๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋Œ€๋ถ€๋ถ„์˜ ์••์ถ• ๋ถ€์ฑ„๋„ ๊ณต๊ฒฉ์—๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ช‡ ๊ฐ€์ง€ ์š”์†Œ๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.
1) ๊ณต๊ฒฉ์ž๋Š” ์ž…๋ ฅ์„ ์ œ์–ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
2) ๊ณต๊ฒฉ์ž๋Š” ์ถœ๋ ฅ์˜ ํฌ๊ธฐ๋ฅผ ๊ด€์ฐฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
3) ์ž…๋ ฅ ๋ฐ์ดํ„ฐ์˜ ์ž‘์€ ๋ณ€ํ™”๋กœ ์ธํ•ด ์ถœ๋ ฅ ํฌ๊ธฐ์— ์ธก์ • ๊ฐ€๋Šฅํ•œ ๋ณ€ํ™”๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.
4) ๊ณต๊ฒฉ์ž๋Š” ์ž…๋ ฅ์„ ๋ณ€๊ฒฝํ•˜๊ณ  ์ˆ˜์‹ญ๋งŒ ๋ฒˆ ์žฌ์‹œ๋„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์›น ๊ธฐ๋ฐ˜ ์‹œ์Šคํ…œ๊ณผ ๋‹ฌ๋ฆฌ ๋‚˜๋จธ์ง€ ๋ฐฑ์—…๊ณผ ๊ด€๋ จ๋œ ๋Œ€๋‹ค์ˆ˜์—์„œ (1)๊ณผ (2)๋Š” ๊ฑฐ์˜ ๋™์‹œ์— ์œ ์ง€๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ๋ธ”๋ก ๊ธฐ๋ฐ˜ ์••์ถ•(3)์€ ์‹ค์ œ๋กœ ๋ณด์žฅ๋˜์ง€ ์•Š์œผ๋ฉฐ ๋Œ€๋ถ€๋ถ„์˜ ๋ฐฑ์—… ์ฒด์ œ(4)๋Š” ํ™•์‹คํžˆ ์œ ์ง€๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ฐฑ์—… ๋นˆ๋„๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ํ•˜๋ฃจ์— ํ•œ ๋ฒˆ ์ •๋„์ด๋ฏ€๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐ์ž‘ํ•˜๊ณ  ์••์ถ•๋œ ์ถœ๋ ฅ ํฌ๊ธฐ๋ฅผ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜์—ฌ ์ƒ๋‹นํ•œ ์ฐจ์ด๋ฅผ ํ™•์ธํ•˜๋ ค๋ฉด ์ˆ˜์ฒœ ๋…„์ด ๊ฑธ๋ฆฌ๋ฉฐ ์ด๋Š” ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š๋Š”๋‹ค๊ณ  ๊ฐ€์ •ํ•˜๊ณ  ๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

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

restic์€ ์ด๋ฏธ ์ค‘๋ณต ์ œ๊ฑฐ๋ฅผ ์ˆ˜ํ–‰ํ•˜์—ฌ ์–ด์จŒ๋“  ์••์ถ• ๋ถ€์ฑ„๋„๊ณผ ๋™์ผํ•œ ์ด๋ก ์  ๊ณต๊ฒฉ์— ๋…ธ์ถœ๋˜๋ฉฐ ์•„๋ฌด๋„ ์ด์— ๋Œ€ํ•ด ๋ถˆํ‰ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

์‚ฌ์‹ค์€ ๋‹จ์ ์ด ์ „ํ˜€ ์—†๋Š” ์••์ถ• ๊ธฐ๋Šฅ์˜ ์ด์ ์„ ๋ˆ„๋ฆด ์ˆ˜ ์žˆ๋Š” ์ˆ˜๋ฐฑ ๋˜๋Š” ์ˆ˜์ฒœ ๋ช…์˜ ์‚ฌ์šฉ์ž๊ฐ€ ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด 5๋…„ ๋œ ๋ฌธ์ œ๋ฅผ ์ž‘์—… ์ค‘์ธ ๊ฐœ๋ฐœ์ž์—๊ฒŒ ๋งก๊ฒจ๋„ ๋ ๊นŒ์š”?

์†”์งํžˆ ๋งํ•ด์„œ .... ๋‚˜๋Š” restic์˜ ๊ฐœ๋…์„ ์„ ํ˜ธํ•˜์ง€๋งŒ ... ๋‚ด ์œ ์Šค ์ผ€์ด์Šค (๋งŽ์€ CSV ํŒŒ์ผ ๋ฐ SQL ๋คํ”„)์—์„œ ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ณ  borg๋กœ ์ „ํ™˜ํ•ด์•ผํ–ˆ์Šต๋‹ˆ๋‹ค.

4์„ธ๋Œ€ ์ฆ๋ถ„ ๋ฐฑ์—…์œผ๋กœ ํ…Œ์ŠคํŠธํ–ˆ์œผ๋ฉฐ ํŒŒ์ผ ์••์ถ•๋ฅ ์€ 7:1์ด๊ณ  ์ค‘๋ณต ์ œ๊ฑฐ์™€ ํ•จ๊ป˜ > 20:1์„ ๋‹ฌ์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฏธ GB๋‹น ์˜จ๋ผ์ธ ๋ฐฑ์—… ์Šคํ† ๋ฆฌ์ง€ ๋น„์šฉ์„ ์ง€๋ถˆํ•œ๋‹ค๊ณ  ๋งํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด๋ฅผ ๋ฌด์‹œํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

root<strong i="7">@xxxx</strong>:~# borg list
2019-08-08_14:37                     Thu, 2019-08-08 14:37:10 [5e113a8102f2bd7e40d100343f849dc73843d145011c7214d5fa0895927eb6d1]
2019-08-08_22:28                     Thu, 2019-08-08 22:28:21 [17d815d000212a576610b2fd5688ab87cce00039bb89f63722c6a7819dec1821]
2019-08-09_02:00                     Fri, 2019-08-09 02:00:23 [217c53b07f30dfbca584c49468cfa624a2445a005890220509c97715f7007e81]
2019-08-10_02:00                     Sat, 2019-08-10 02:00:10 [5dd45b8ccf0aa382bf00d5b08e1d5d88daae014f0a1a42b3e2b0fc368623bba0]
root<strong i="8">@xxxx</strong>:~# borg info
Repository ID: xxxx
Location: ssh://xxxx
Encrypted: Yes (repokey)
Cache: /var/lib/borg/cache/xxxx
Security dir: /var/lib/borg/security/xxxx
------------------------------------------------------------------------------
                       Original size      Compressed size    Deduplicated size
All archives:               69.02 GB             11.24 GB              2.80 GB

                       Unique chunks         Total chunks
Chunk index:                    9227                41812

๋ฌด์Šจ ๋œป์ธ๊ฐ€์š”? ํฌ๊ธฐ๋งŒ ๋ณด๊ณ  ์•”ํ˜ธํ™”๋œ ์Šค๋ƒ…์ƒท์— ์ด๋Ÿฌํ•œ ํŒŒ์ผ์ด ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ _์ถ”์ธก_ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ์ด๊ฒƒ์€ ํŒŒ์ผ์ด ๋‹จ๋…์œผ๋กœ ์••์ถ•๋˜๊ฑฐ๋‚˜ ๋‹ค๋ฅธ ์•Œ๋ ค์ง„ ํŒŒ์ผ๊ณผ ํ•จ๊ป˜ ์••์ถ•๋œ๋‹ค๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์•”ํ˜ธํ™”๋˜์ง€ ์•Š์€ shapshot์œผ๋กœ ๋™์ผํ•œ ์ถ”์ธก์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ •ํ™•ํžˆ. ์ผ๋ฐ˜ ํ…์ŠคํŠธ ํŒŒ์ผ์„ ๋™์ผํ•œ ์กฐ๊ฐ์œผ๋กœ ์ž๋ฅด๊ณ  ์••์ถ•ํ•œ ๋‹ค์Œ ์•”ํ˜ธํ™”ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์‹œ ์Šฌ๋ผ์ด์Šคํ•˜๊ณ  ์••์ถ•ํ•˜๊ณ  ์•”ํ˜ธํ™”ํ•ฉ๋‹ˆ๋‹ค. ์•”ํ˜ธํ™”๋œ ํŒŒ์ผ์˜ ํฌ๊ธฐ๋Š” AES ๋ฐฉ์‹์œผ๋กœ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์œผ๋ฏ€๋กœ ๋‘ ๊ฒฝ์šฐ ๋ชจ๋‘ ์ง€๋ฌธ์ฒ˜๋Ÿผ ์„œ๋กœ ์ผ์น˜ํ•˜๋Š” ๋ฒ”์œ„ ํฌ๊ธฐ๊ฐ€ ์žˆ์Œ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋“ค์€(์ฃผ๋กœ ์ด๋ž€์ด๋‚˜ ๋Ÿฌ์‹œ์•„์™€ ๊ฐ™์€ ์••์ œ์ ์ธ ์ •๊ถŒ์˜ ํ–‰์ •๋ถ€๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค) ์ด๋Ÿฌํ•œ ํŒŒ์ผ์ด ์—ฌ๊ธฐ์— ์žˆ๋‹ค๊ณ  ํ•ฉ๋ฆฌ์ ์œผ๋กœ ๊ฐ€์ •ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๋”ฐ๋ผ์„œ ์šฉ์˜์ž๋ฅผ ๊ณ„์† ๊ณ ๋ฌธํ•ด์•ผ ํ•  ์ด์œ ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ €๋Š” ์™œ ์—ฌ๋Ÿฌ๋ถ„์ด ์ด๋Ÿฌํ•œ ์•„์ด๋””์–ด์— ๋Œ€ํ•ด ๊ทธ๋ ‡๊ฒŒ ๊ธฐ๋ถ„์ด ์ƒํ–ˆ๋Š”์ง€ ์ดํ•ดํ•˜์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค. ์ดํ•ดํ•˜๊ธฐ ์‰ฝ์ง€ ์•Š์Šต๋‹ˆ๊นŒ? ์ด๊ฒƒ์€ ๊ทธ ์ž์ฒด๋กœ ๋ฒ”์ฃ„๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ฃ ?

๊ทธ๋Ÿฌ๋‚˜ @viric์ด ์–ธ๊ธ‰ ํ•œ ๊ฒƒ์ฒ˜๋Ÿผ ๊ธฐ์ˆ ์ ์œผ๋กœ Restic์€ ์•”ํ˜ธํ™” ํ‚ค ์—†์ด๋Š” ์ฒญํฌ์˜ ํฌ๊ธฐ๋ฅผ ๋ณผ ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— ์ด๋Ÿฌํ•œ ์ทจ์•ฝ์ ์˜ ์˜ํ–ฅ์„ ๋ฐ›์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์–ด๋Š ์‹œ์ ์—์„œ ์••์ถ•์ด ์ถ”๊ฐ€๋˜๋ฉด Restic์€ ์•„์ง ์˜ํ–ฅ์„ ๋ฐ›์ง€ ์•Š์„ ์ˆ˜ ์žˆ์ง€๋งŒ ๋‚˜์ค‘์— ์˜ํ–ฅ์„ ๋ฐ›์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๋ฏธ ์ค‘๋ณต ์ œ๊ฑฐ๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒฝ์šฐ ์••์ถ•์„ ์ถ”๊ฐ€ํ•˜๋ฉด Restic์ด ์ถ”๊ฐ€ ์ทจ์•ฝ์ ์— ๋…ธ์ถœ๋ฉ๋‹ˆ๊นŒ?

๊ณต๊ฒฉ์ž๊ฐ€ ์••์ถ•๋˜์ง€ ์•Š์€ ํฌ๊ธฐ๋ฅผ ์œ ์ถ”ํ•˜๊ธฐ ์œ„ํ•ด ์••์ถ•๋œ ๋ธ”๋ก ํฌ๊ธฐ๋ฅผ ์ถ”์ธกํ•˜๋Š” ๊ฒƒ์ด ๋ฌธ์ œ๋ผ๋ฉด ์•Œ๊ฒ ์ง€๋งŒ ์••์ถ•์œผ๋กœ ์ธํ•ด ์ƒํ™ฉ์ด ์•…ํ™”๋ฉ๋‹ˆ๊นŒ? ๊ณต๊ฒฉ์ž๋Š” ๋™์ผํ•œ ๊ธฐ๋ณธ ์ •๋ณด๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์ง€ ์•Š์Šต๋‹ˆ๊นŒ?

๊ณต๊ฒฉ์ž๊ฐ€ ๊ฐ ํŒŒ์ผ์˜ ์••์ถ•๋˜์ง€ ์•Š์€ ํฌ๊ธฐ์™€ ์••์ถ•๋œ ํฌ๊ธฐ๋ฅผ ๋ณผ ์ˆ˜ ์žˆ๋‹ค๋ฉด ์‹๋ณ„์ด ๋” ํ˜„์‹ค์ ์ด ๋  ์ˆ˜ ์žˆ์ง€๋งŒ ์ œํ•œ์ ์—์„œ๋Š” ๋ถˆ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

๊ถ๊ทน์ ์œผ๋กœ ์ค‘๋ณต ์ œ๊ฑฐ๋Š” ์••์ถ•์ด ์˜ํ–ฅ์„ ๋ฏธ์น˜๋Š” ๊ฒƒ์œผ๋กœ ๋ณผ ์ˆ˜ ์žˆ๋Š” ๋ชจ๋“  ์ด๋ก ์  ๊ณต๊ฒฉ์— ์ด๋ฏธ ๋…ธ์ถœ๋˜์–ด ์žˆ์œผ๋ฉฐ, ์ƒํ™ฉ์— ๋” ์ž˜ ๋งž๋Š” ๊ฒฝ์šฐ ์••์ถ•์„ ๋น„ํ™œ์„ฑํ™”ํ•˜์—ฌ ํ˜„์žฌ ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์•”ํ˜ธํ™”๋œ ์ฒญํฌ์˜ ํฌ๊ธฐ๋ฅผ ๋ณด๊ณ  ํŒŒ์ผ ์กด์žฌ๋ฅผ ์ถ”์ธกํ•˜๋Š” ๊ฒƒ์— ๋Œ€ํ•œ ๊ฐ€์ƒ์˜ ๋ณด์•ˆ ๋ฌธ์ œ์— ๋Œ€ํ•ด ๋…ผ์˜ํ•˜๋Š” ์ด์œ ๋ฅผ ์ดํ•ดํ•˜์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค.,,

ZIP ๋˜๋Š” GZ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๊นŒ? ๊ทธ๋Ÿผ ๋‹น์‹ ์€ ๊ดœ์ฐฎ์„๊ฑฐ์•ผ.

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

๋‚˜๋Š” ์šฐ๋ฆฌ๊ฐ€ restic์— ์••์ถ•์„ ์ถ”๊ฐ€ํ•˜๋Š” ๋ชจ๋“  ๊ด€๋ จ ๊ฐ๋„๋ฅผ ๋‹ค๋ค˜๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋ชจ๋“  ์˜๊ฒฌ์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

๊ธฐ๋ณธ์ ์œผ๋กœ ์••์ถ•์„ ์ถ”๊ฐ€ํ•˜๊ณ  ํ™œ์„ฑํ™”ํ•ด์•ผ ํ•˜์ง€๋งŒ ์‚ฌ์šฉ์ž๊ฐ€ ์••์ถ•์„ ๋น„ํ™œ์„ฑํ™”ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ž‘์—…ํ•  ์‹œ๊ฐ„์ด ๋” ์žˆ์„ ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ ค ์ฃผ์‹ญ์‹œ์˜ค.

์ด ํ† ๋ก ์ด ์†์— ์žกํžˆ์ง€ ์•Š๋Š” ๊ฒƒ ๊ฐ™์•„์„œ ์ง€๊ธˆ์€ ์ด ๋ฌธ์ œ๋ฅผ ์ž ๊ทธ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ํ† ๋ก ์„ ๊ณ„์† ํ•˜๋ ค๋ฉด ํฌ๋Ÿผ์œผ๋กœ ์ด๋™ํ•˜์‹ญ์‹œ์˜ค . ๊ฐ์‚ฌ ํ•ด์š”!

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰