GitLab์ด ๋Œ€๊ทœ๋ชจ NextCloud ์Šคํ† ๋ฆฌ์ง€ ๋ฐฑ์—…์„ ์ง€์›ํ•˜๋Š” ๋ฐฉ๋ฒ•

ํ—ค์ด ํ•˜๋ธŒ๋ฅด!

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

์„ค์น˜ ๊ธฐ๋Šฅ์—์„œ ๋ฐœ์ƒํ•˜๋Š” ๋ฌธ์ œ๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ๋งŽ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. Nextcloud์—์„œ ์ œ๊ณตํ•˜๋Š” ๋ฒ„์ „ ๊ด€๋ฆฌ, ์ค‘๋ณต์„ฑ, ์ฃผ๊ด€์ ์ธ ์ด์œ  ๋“ฑ ๋งŽ์€ ์ค‘๋ณต์ด ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค.

์„ ์‚ฌ ์‹œ๋Œ€

Nextcloud๋ฅผ ๊ด€๋ฆฌํ•  ๋•Œ ๋ฐ์ดํ„ฐ๊ฐ€ ์ค‘์š”ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์•”ํ˜ธํ™”ํ•ด์•ผ ํ•˜๋Š” ํšจ๊ณผ์ ์ธ ๋ฐฑ์—…์„ ๊ตฌ์„ฑํ•˜๋Š” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋Š” ๊ด€๋ฆฌ์— ๋Œ€ํ•œ ์œ ์—ฐํ•˜๊ณ  ์ž๋™ํ™”๋œ ์ ‘๊ทผ ๋ฐฉ์‹์ด ํ•„์š”ํ•œ Nextcloud์™€๋Š” ๋ณ„๋„์˜ ์‹œ์Šคํ…œ์— ๋ฐฑ์—…์„ ์ €์žฅํ•˜๊ฑฐ๋‚˜ ๊ณ ๊ฐ์˜ ์žฅ์†Œ์— ๋ฐฑ์—…์„ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋Š” ์˜ต์…˜์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

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

๋จผ์ € ์ž…๋ ฅ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๋‹ค์Œ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค:

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

GitLab์ด ๋Œ€๊ทœ๋ชจ NextCloud ์Šคํ† ๋ฆฌ์ง€ ๋ฐฑ์—…์„ ์ง€์›ํ•˜๋Š” ๋ฐฉ๋ฒ•

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

๋ฌผ๋ก , ์šฐ๋ฆฌ๊ฐ€ ์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•œ ์ตœ์ดˆ์˜ ์‚ฌ๋žŒ์€ ์•„๋‹ˆ์ง€๋งŒ, ์šฐ๋ฆฌ์˜ ์‹ค์šฉ์ ์ด๊ณ  ํž˜๋“ค๊ฒŒ ์–ป์€ ๊ฒฝํ—˜์ด ํฅ๋ฏธ๋กœ์šธ ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๊ณ  ์ด๋ฅผ ๊ณต์œ ํ•  ์ค€๋น„๊ฐ€ ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

์šฐ๋ฆฌ ํšŒ์‚ฌ๋Š” ์˜คํ”ˆ์†Œ์Šค ์ •์ฑ…์„ ๊ฐ–๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์˜คํ”ˆ์†Œ์Šค ์†”๋ฃจ์…˜์„ ์ฐพ๊ณ  ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์ฐจ๋ก€๋กœ ์šฐ๋ฆฌ๋Š” ๊ฐœ๋ฐœ ๋‚ด์šฉ์„ ๊ณต์œ ํ•˜๊ณ  ๊ฒŒ์‹œํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด GitHub์—๋Š” ๋‹ค์Œ์ด ์žˆ์Šต๋‹ˆ๋‹ค. Nextcloud์šฉ ํ”Œ๋Ÿฌ๊ทธ์ธ, ์‹ค์ˆ˜๋กœ ๋˜๋Š” ์˜๋„์ ์œผ๋กœ ์‚ญ์ œ๋˜๋Š” ๊ฒฝ์šฐ ๋ฐ์ดํ„ฐ ๋ณด์•ˆ์„ ๊ฐ•ํ™”ํ•˜์—ฌ ๊ณ ๊ฐ์—๊ฒŒ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

๋ฐฑ์—… ๋„๊ตฌ

์šฐ๋ฆฌ๋Š” ๋ฐฑ์—… ์ƒ์„ฑ ๋„๊ตฌ๋ฅผ ์„ ํƒํ•˜์—ฌ ์†”๋ฃจ์…˜ ๋ฐฉ๋ฒ•์„ ์ฐพ๊ธฐ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค.

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

๋ณต์ œ ๊ธฐ๋Šฅ์ด ์žˆ๋Š” ๋ฐฑ์—… ๋„๊ตฌ๋Š” ์˜คํ”ˆ ์†Œ์Šค์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(Habrรฉ์—๋Š” ์กฐํ•ญ ์ด ์ฃผ์ œ์—) ์ตœ์ข… ํ›„๋ณด๋Š” ๋ณด๊ทธ ะธ ๋ ˆ์Šค์Šคํ‹ฑ. ๋‘ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์— ๋Œ€ํ•œ ๋น„๊ต๋Š” ์•„๋ž˜์— ์žˆ์ง€๋งŒ ์ง€๊ธˆ์€ ์ „์ฒด ๊ตฌ์„ฑํ‘œ๋ฅผ ์–ด๋–ป๊ฒŒ ๊ตฌ์„ฑํ–ˆ๋Š”์ง€ ์•Œ๋ ค ๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค.

๋ฐฑ์—… ๊ด€๋ฆฌ

Borg์™€ Restic์€ ํ›Œ๋ฅญํ•˜์ง€๋งŒ ๋‘ ์ œํ’ˆ ๋ชจ๋‘ ์ค‘์•™ ์ง‘์ค‘์‹ ์ œ์–ด ๋ฉ”์ปค๋‹ˆ์ฆ˜์ด ์—†์Šต๋‹ˆ๋‹ค. ๊ด€๋ฆฌ ๋ฐ ์ œ์–ด๋ฅผ ์œ„ํ•ด ์šฐ๋ฆฌ๋Š” ์ž๋™ํ™”๋ฅผ ํฌํ•จํ•˜์—ฌ ์ž‘์—…์„ ์ƒ์ƒํ•  ์ˆ˜ ์—†๋Š” ์ด๋ฏธ ๊ตฌํ˜„ํ•œ ๋„๊ตฌ๋ฅผ ์„ ํƒํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ๋ฐ”๋กœ ์ž˜ ์•Œ๋ ค์ง„ CI/CD์ธ GitLab์ž…๋‹ˆ๋‹ค.

์•„์ด๋””์–ด๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. Nextcloud ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ๊ฐ ๋…ธ๋“œ์— gitlab-runner๊ฐ€ ์„ค์น˜๋ฉ๋‹ˆ๋‹ค. ์‹คํ–‰๊ธฐ๋Š” ๋ฐฑ์—… ํ”„๋กœ์„ธ์Šค๋ฅผ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๋Š” ์ผ์ •์— ๋”ฐ๋ผ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‹คํ–‰ํ•˜๊ณ  Borg ๋˜๋Š” Restic์„ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋Š” ๋ฌด์—‡์„ ์–ป์—ˆ๋‚˜์š”? ์‹คํ–‰ ํ”ผ๋“œ๋ฐฑ, ๋ณ€๊ฒฝ ์‚ฌํ•ญ์— ๋Œ€ํ•œ ํŽธ๋ฆฌํ•œ ์ œ์–ด, ์˜ค๋ฅ˜ ๋ฐœ์ƒ ์‹œ ์„ธ๋ถ€ ์ •๋ณด.

์—ฌ๊ธฐ์— ์—ฌ๊ธฐ GitHub์—์„œ ๋‹ค์–‘ํ•œ ์ž‘์—…์— ๋Œ€ํ•œ ์Šคํฌ๋ฆฝํŠธ ์˜ˆ์ œ๋ฅผ ๊ฒŒ์‹œํ–ˆ๊ณ  ๊ฒฐ๊ตญ ์ด๋ฅผ Nextcloud๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๋‹ค๋ฅธ ์—ฌ๋Ÿฌ ์„œ๋น„์Šค์˜ ๋ฐฑ์—…์—๋„ ์ฒจ๋ถ€ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ˆ˜๋™์œผ๋กœ ๊ตฌ์„ฑํ•˜๊ณ  ์‹ถ์ง€ ์•Š์€ ๊ฒฝ์šฐ(์ €ํฌ๋„ ์›ํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ) .gitlab-ci.yml ์Šค์ผ€์ค„๋Ÿฌ๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

์•„์ง Gitlab API์—์„œ CI/CD ์‹œ๊ฐ„ ์ดˆ๊ณผ๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์€ ์—†์ง€๋งŒ ํฌ๊ธฐ๊ฐ€ ์ž‘์Šต๋‹ˆ๋‹ค. ๋Š˜๋ ค์•ผ ํ•œ๋‹ค๊ณ  ํ•˜๋”๊ตฐ์š” 1d.

๋‹คํ–‰์Šค๋Ÿฝ๊ฒŒ๋„ GitLab์€ ์ปค๋ฐ‹๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์ผ์ •์— ๋”ฐ๋ผ์„œ๋งŒ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ๋ฐ”๋กœ ์šฐ๋ฆฌ์—๊ฒŒ ํ•„์š”ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด์ œ ๋ž˜ํผ ์Šคํฌ๋ฆฝํŠธ์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

์ด ์Šคํฌ๋ฆฝํŠธ์— ๋Œ€ํ•ด ๋‹ค์Œ ์กฐ๊ฑด์„ ์„ค์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.

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

์ „์ฒด ๋กœ๊ทธ๋Š” GitLab์— ์•„ํ‹ฐํŒฉํŠธ๋กœ ์ €์žฅ๋˜๋ฉฐ, ์˜ค๋ฅ˜๊ฐ€ ์—†์œผ๋ฉด ๋กœ๊ทธ๊ฐ€ ์‚ญ์ œ๋ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” bash๋กœ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค.

์˜คํ”ˆ ์†Œ์Šค์— ๊ด€ํ•œ ๋ชจ๋“  ์ œ์•ˆ๊ณผ ์˜๊ฒฌ์„ ๊ธฐ๊บผ์ด ๊ณ ๋ คํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค.

์ด๊ฑฐ ์–ด๋–ป๊ฒŒ ์ž‘๋™ ์‹œ์ผœ์š”

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

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

SSH๋ฅผ ํ†ตํ•ด ๋ฐฑ์—…์„ ๋ณด๋‚ด๋Š” ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ์ด๋Š” ๋ณด์•ˆ์„ ์ถ”๊ฐ€ํ•˜์ง€ ์•Š์œผ๋ฉฐ S3 ๊ณต๊ธ‰์ž์˜ ๋„คํŠธ์›Œํฌ ๊ธฐ๋Šฅ์€ ๋‹จ์ผ SSH ์‹œ์Šคํ…œ๋ณด๋‹ค ํ›จ์”ฌ ๋†’์Šต๋‹ˆ๋‹ค.

ํ•ด์ปค๊ฐ€ S3์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ง€์šธ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๋กœ์ปฌ ์‹œ์Šคํ…œ์„ ํ•ด์ปค๋กœ๋ถ€ํ„ฐ ๋ณดํ˜ธํ•˜๋ ค๋ฉด ๋ฒ„์ „ ๊ด€๋ฆฌ๋ฅผ ํ™œ์„ฑํ™”ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
๋ฐฑ์—…์€ ํ•ญ์ƒ ๋ฐฑ์—…์„ ์•”ํ˜ธํ™”ํ•ฉ๋‹ˆ๋‹ค.

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

๋ณ„๋„์˜ ์Šค์ผ€์ค„๋Ÿฌ๊ฐ€ ๋ฐฑ์—…์—์„œ ์ธ๋ฑ์Šค์™€ ์ฝ˜ํ…์ธ ์˜ ๋ฌด๊ฒฐ์„ฑ์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ์ ๊ฒ€์ด ๋Š๋ฆฌ๊ณ  ๊ธธ์–ด์„œ ํ•œ ๋‹ฌ์— ํ•œ ๋ฒˆ์”ฉ ๋”ฐ๋กœ ์‹คํ–‰ํ•ด๋“œ๋ฆฌ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฉฐ์น ์ด ๊ฑธ๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋Ÿฌ์‹œ์•„์–ด๋กœ ์ฝ์–ด๋ณด๊ธฐ

์ฃผ์š” ๊ธฐ๋Šฅ

  • prepare ํ›ˆ๋ จ
  • testcheck ์ค€๋น„ ์ƒํƒœ ํ™•์ธ
  • maincommand ํ•ต์‹ฌ ํŒ€
  • forcepostscript ๊ฒฐ๊ตญ ๋˜๋Š” ์˜ค๋ฅ˜๋กœ ์ธํ•ด ์‹คํ–‰๋˜๋Š” ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค. ํŒŒํ‹ฐ์…˜์„ ๋งˆ์šดํŠธ ํ•ด์ œํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

์„œ๋น„์Šค ๊ธฐ๋Šฅ

  • cleanup ์˜ค๋ฅ˜๋ฅผ ๊ธฐ๋กํ•˜๊ฑฐ๋‚˜ ๋กœ๊ทธ ํŒŒ์ผ์„ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค.
  • checklog ์˜ค๋ฅ˜๊ฐ€ ์žˆ๋Š” ์ค„์ด ๋ฐœ์ƒํ–ˆ๋Š”์ง€ ๋กœ๊ทธ๋ฅผ ๊ตฌ๋ฌธ ๋ถ„์„ํ•ฉ๋‹ˆ๋‹ค.
  • ret ์ข…๋ฃŒ ํ•ธ๋“ค๋Ÿฌ.
  • checktimeout ์‹œ๊ฐ„ ์ดˆ๊ณผ๋ฅผ ํ™•์ธํ•˜์„ธ์š”.

ํ™˜๊ฒฝ

  • VERBOSE=1 ์˜ค๋ฅ˜๋Š” ์ฆ‰์‹œ ํ™”๋ฉด์— ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค(stdout).
  • SAVELOGSONSUCCES=1 ์„ฑ๊ณต ์‹œ ๋กœ๊ทธ๋ฅผ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.
  • INIT_REPO_IF_NOT_EXIST=1 ์ €์žฅ์†Œ๊ฐ€ ์—†์œผ๋ฉด ๋งŒ๋“ญ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ ๋น„ํ™œ์„ฑํ™”๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.
  • TIMEOUT ์ฃผ์š” ์ž‘์—…์˜ ์ตœ๋Œ€ ์‹œ๊ฐ„. ๋งˆ์ง€๋ง‰์— 'm', 'h', 'd'๋กœ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์˜ค๋ž˜๋œ ์‚ฌ๋ณธ์˜ ์ €์žฅ ๋ชจ๋“œ์ž…๋‹ˆ๋‹ค. ๊ธฐ๋ณธ:

  • KEEP_DAILY=7
  • KEEP_WEEKLY=4
  • KEEP_MONTHLY=6

์Šคํฌ๋ฆฝํŠธ ๋‚ด๋ถ€์˜ ๋ณ€์ˆ˜

  • ERROR_STRING โ€” ์˜ค๋ฅ˜์— ๋Œ€ํ•œ ์ฒดํฌ์ธ ๋กœ๊ทธ ๋ฌธ์ž์—ด์ž…๋‹ˆ๋‹ค.
  • EXTRACT_ERROR_STRING โ€” ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•œ ๊ฒฝ์šฐ ๋ฌธ์ž์—ด ํ‘œ์‹œ์— ๋Œ€ํ•œ ํ‘œํ˜„์‹์ž…๋‹ˆ๋‹ค.
  • KILL_TIMEOUT_SIGNAL โ€” ์‹œ๊ฐ„์ด ์ดˆ๊ณผ๋˜๋ฉด ์ข…๋ฃŒํ•˜๋ผ๋Š” ์‹ ํ˜ธ์ž…๋‹ˆ๋‹ค.
  • TAIL โ€” ํ™”๋ฉด์— ์˜ค๋ฅ˜๊ฐ€ ์žˆ๋Š” ๋ฌธ์ž์—ด ์ˆ˜.
  • COLORMSG โ€” ๋ฉ”์‹œ์ง€ ์ƒ‰์ƒ(๊ธฐ๋ณธ๊ฐ’ ๋…ธ๋ž€์ƒ‰).

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

๋ ˆ์Šคํ‹ฑ vs ๋ณด๊ทธ

Borg์™€ Restic์˜ ๋น„๊ต๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ ํ•˜๋ธŒ๋ ˆ์—์„œ, ๊ทธ๋ฆฌ๊ณ  ์šฐ๋ฆฌ๋Š” ๋˜ ๋‹ค๋ฅธ ๊ฒƒ์„ ๋งŒ๋“œ๋Š” ์ž„๋ฌด๊ฐ€ ์•„๋‹ˆ๋ผ ์šฐ๋ฆฌ ์ž์‹ ์˜ ๊ฒƒ์„ ๋งŒ๋“œ๋Š” ์ž„๋ฌด๋ฅผ ๊ฐ€์กŒ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ์˜ ์„ธ๋ถ€ ์‚ฌํ•ญ๊ณผ ํ•จ๊ป˜ ๋ฐ์ดํ„ฐ๊ฐ€ ์–ด๋–ป๊ฒŒ ๋ณด์ด๋Š”์ง€ ์šฐ๋ฆฌ์—๊ฒŒ ์ค‘์š”ํ–ˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๊ทธ๋“ค์„ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.

์ด๋ฏธ ์–ธ๊ธ‰ํ•œ ์‚ฌํ•ญ(์ค‘๋ณต ์ œ๊ฑฐ, ๋น ๋ฅธ ๋ณต๊ตฌ ๋“ฑ) ์™ธ์— ์„ ํƒ ๊ธฐ์ค€์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • ๋ฏธ์™„์„ฑ ์ž‘์—…์— ๋Œ€ํ•œ ์ €ํ•ญ. kill -9๋ฅผ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค.
  • ๋””์Šคํฌ ํฌ๊ธฐ.
  • ๋ฆฌ์†Œ์Šค(CPU, ๋ฉ”๋ชจ๋ฆฌ) ์š”๊ตฌ ์‚ฌํ•ญ์ž…๋‹ˆ๋‹ค.
  • ์ €์žฅ๋œ Blob์˜ ํฌ๊ธฐ์ž…๋‹ˆ๋‹ค.
  • S3์™€ ํ˜‘๋ ฅํ•ฉ๋‹ˆ๋‹ค.
  • ๋ฌด๊ฒฐ์„ฑ ๊ฒ€์‚ฌ.

ํ…Œ์ŠคํŠธ๋ฅผ ์œ„ํ•ด ์‹ค์ œ ๋ฐ์ดํ„ฐ์™€ ์ด ํฌ๊ธฐ๊ฐ€ 1,6TB์ธ ํด๋ผ์ด์–ธํŠธ ํ•˜๋‚˜๋ฅผ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค.
์กฐ๊ฑด.

Borg๋Š” S3๋กœ ์ง์ ‘ ์ž‘์—…ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ชจ๋ฅด๋ฏ€๋กœ ๋‹ค์Œ์„ ํ†ตํ•ด ๋””์Šคํฌ๋ฅผ ํ“จ์ฆˆ๋กœ ๋งˆ์šดํŠธํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ฐ”๋ณด. Restic์€ ์ด๋ฅผ S3 ์ž์ฒด๋กœ ๋ณด๋ƒˆ์Šต๋‹ˆ๋‹ค.

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

๋„คํŠธ์›Œํฌ์˜ ์˜ํ–ฅ์„ ์ค„์ด๊ธฐ ์œ„ํ•ด ์šฐ๋ฆฌ๋Š” ๋กœ์ปฌ ๊ณต๊ธ‰์ž์ธ Yandex Cloud๋ฅผ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค.

๋น„๊ต ํ…Œ์ŠคํŠธ ๊ฒฐ๊ณผ.

  • ์ถ”๊ฐ€ ์žฌ์‹œ์ž‘์œผ๋กœ Kill -9๊ฐ€ ๋ชจ๋‘ ์„ฑ๊ณตํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ๋””์Šคํฌ ํฌ๊ธฐ. Borg๋Š” ์••์ถ•ํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๊ฒฐ๊ณผ๋Š” ์˜ˆ์ƒ๋Œ€๋กœ์ž…๋‹ˆ๋‹ค.

๋ฐฑ์—…ํผ
ํฌ๊ธฐ

๋ณด๊ทธ
562Gb

๋ ˆ์Šค์Šคํ‹ฑ
628Gb

  • CPU๋ณ„
    Borg ์ž์ฒด๋Š” ๊ธฐ๋ณธ ์••์ถ•์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ฑฐ์˜ ์†Œ๋น„ํ•˜์ง€ ์•Š์ง€๋งŒ Goofys ํ”„๋กœ์„ธ์Šค์™€ ํ•จ๊ป˜ ํ‰๊ฐ€๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ „์ฒด์ ์œผ๋กœ ์ด๋“ค์€ ๋™์ผํ•˜๋ฉฐ ๋™์ผํ•œ ํ…Œ์ŠคํŠธ ๊ฐ€์ƒ ๋จธ์‹ ์—์„œ ์•ฝ 1,2๊ฐœ์˜ ์ฝ”์–ด๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
  • ๋ฉ”๋ชจ๋ฆฌ. Restic์€ ์•ฝ 0,5GB, Borg๋Š” ์•ฝ 200MB์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด๊ฒƒ์€ ์‹œ์Šคํ…œ ํŒŒ์ผ ์บ์‹œ์— ๋น„ํ•ด ๋ชจ๋‘ ์ค‘์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋” ๋งŽ์€ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ• ๋‹นํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.
  • ๋ฉ์–ด๋ฆฌ ํฌ๊ธฐ์˜ ์ฐจ์ด๊ฐ€ ๋ˆˆ์— ๋„์—ˆ์Šต๋‹ˆ๋‹ค.

๋ฐฑ์—…ํผ
ํฌ๊ธฐ

๋ณด๊ทธ
์•ฝ 500MB

๋ ˆ์Šค์Šคํ‹ฑ
์•ฝ 5MB

  • Restic์˜ S3 ์‚ฌ์šฉ ๊ฒฝํ—˜์€ ํ›Œ๋ฅญํ–ˆ์Šต๋‹ˆ๋‹ค. goofys๋ฅผ ํ†ตํ•ด Borg๋กœ ์ž‘์—…ํ•˜๋Š” ๊ฒƒ์€ ์–ด๋–ค ์งˆ๋ฌธ๋„ ์ œ๊ธฐํ•˜์ง€ ์•Š์ง€๋งŒ, ์บ์‹œ๋ฅผ ์™„์ „ํžˆ ์žฌ์„ค์ •ํ•˜๋ ค๋ฉด ๋ฐฑ์—…์ด ์™„๋ฃŒ๋œ ํ›„ umount๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์ด ๋ฐ”๋žŒ์งํ•˜๋‹ค๊ณ  ์–ธ๊ธ‰๋˜์—ˆ์Šต๋‹ˆ๋‹ค. S3์˜ ํŠน์ง•์€ ๋œ ํŽŒํ•‘๋œ ์ฒญํฌ๊ฐ€ ๋ฒ„ํ‚ท์œผ๋กœ ์ „์†ก๋˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๋Š” ๋ถˆ์™„์ „ํ•˜๊ฒŒ ์ฑ„์›Œ์ง„ ๋ฐ์ดํ„ฐ๊ฐ€ ํฐ ์†์ƒ์„ ์ดˆ๋ž˜ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.
  • ๋ฌด๊ฒฐ์„ฑ ๊ฒ€์‚ฌ๋Š” ๋‘ ๊ฒฝ์šฐ ๋ชจ๋‘ ์ž˜ ์ž‘๋™ํ•˜์ง€๋งŒ ์†๋„์—๋Š” ์ƒ๋‹นํ•œ ์ฐจ์ด๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
    ๋ ˆ์Šคํ‹ฑ 3,5 ์‹œ๊ฐ„.
    100GB SSD ํŒŒ์ผ ์บ์‹œ๋ฅผ ๊ฐ–์ถ˜ Borg โ€“ 5 ์‹œ๊ฐ„.๋ฐ์ดํ„ฐ๊ฐ€ ๋กœ์ปฌ ๋””์Šคํฌ์— ์žˆ๋Š” ๊ฒฝ์šฐ ์†๋„๋Š” ๊ฑฐ์˜ ๋™์ผํ•ฉ๋‹ˆ๋‹ค.
    Borg๋Š” ์บ์‹œ ์—†์ด S3์—์„œ ์ง์ ‘ ์ฝ์Šต๋‹ˆ๋‹ค. 33 ์‹œ๊ฐ„. ์—„์ฒญ๋‚˜๊ฒŒ ๊ธธ๋‹ค.

๊ฒฐ๋ก ์ ์œผ๋กœ Borg๋Š” ์••์ถ•ํ•  ์ˆ˜ ์žˆ๊ณ  ๋” ํฐ blob์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ S3์˜ ์Šคํ† ๋ฆฌ์ง€ ๋ฐ GET/PUT ์ž‘์—…์ด ๋” ์ €๋ ดํ•ด์ง‘๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด๋Š” ๋” ๋ณต์žกํ•˜๊ณ  ๋Š๋ฆฐ ๊ฒ€์ฆ์˜ ๋Œ€๊ฐ€๋ฅผ ์น˜๋ฅด๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๋ณต๊ตฌ ์†๋„๋Š” ์•„๋ฌด๋Ÿฐ ์ฐจ์ด๋ฅผ ๋Š๋ผ์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค. Restic์€ ํ›„์† ๋ฐฑ์—…(์ฒซ ๋ฒˆ์งธ ๋ฐฑ์—… ์ดํ›„)์ด ์กฐ๊ธˆ ๋” ์˜ค๋ž˜ ๊ฑธ๋ฆฌ์ง€๋งŒ ํฌ๊ฒŒ ๋‹ค๋ฅด์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค.

๋งˆ์ง€๋ง‰์œผ๋กœ ์„ ํƒ์˜ ์—ฌ์ง€๊ฐ€ ์žˆ๋Š” ๊ฒƒ์€ ์ปค๋ฎค๋‹ˆํ‹ฐ์˜ ๊ทœ๋ชจ์˜€์Šต๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์šฐ๋ฆฌ๋Š” ๋ณด๊ทธ๋ฅผ ์„ ํƒํ–ˆ์Šต๋‹ˆ๋‹ค.

์••์ถ•์— ๋Œ€ํ•œ ๋ช‡ ๋งˆ๋””

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

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

Borg์—๋Š” ๋‹ค์†Œ ๋ณด๋„ˆ์Šค ์••์ถ• ๋ชจ๋“œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ํŒŒ์ผ์˜ ์—”ํŠธ๋กœํ”ผ๊ฐ€ ๋†’์œผ๋ฉด ์••์ถ•์ด ์ „ํ˜€ ์ ์šฉ๋˜์ง€ ์•Š์•„ ์†๋„๊ฐ€ ๋นจ๋ผ์ง‘๋‹ˆ๋‹ค. ์ƒ์„ฑ ์‹œ ์˜ต์…˜์œผ๋กœ ํ™œ์„ฑํ™”
-C auto,zstd
zstd ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ๊ฒฝ์šฐ
๋”ฐ๋ผ์„œ ์ด ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜๋ฉด ๊ธฐ๋ณธ ์••์ถ•๊ณผ ๋น„๊ตํ•˜์—ฌ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒฐ๊ณผ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๊ฐ๊ฐ 560Gb ๋ฐ 562Gb. ์œ„ ์˜ˆ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋ฉด ์••์ถ•ํ•˜์ง€ ์•Š์€ ๊ฒฐ๊ณผ๋Š” 628Gb์ž…๋‹ˆ๋‹ค. 2GB ์ฐจ์ด์˜ ๊ฒฐ๊ณผ๋Š” ๋‹ค์†Œ ๋†€๋ž์ง€๋งŒ ๊ฒฐ๊ตญ ์šฐ๋ฆฌ๋Š” ๊ทธ๊ฒƒ์„ ์„ ํƒํ•  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ–ˆ์Šต๋‹ˆ๋‹ค. auto,zstd.

๋ฐฑ์—… ํ™•์ธ ๋ฐฉ๋ฒ•

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

goofys --cache "--free:5%:/mnt/cache" -o allow_other --endpoint https://storage.yandexcloud.net --file-mode=0666 --dir-mode=0777 xxxxxxx.com /mnt/goofys
export BORG_PASSCOMMAND="cat /home/borg/.borg-passphrase"
borg list /mnt/goofys/borg1/
borg check --debug -p --verify-data /mnt/goofys/borg1/

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

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

๊ฒฐ๋ก 

๊ฒฐ๊ณผ์ ์œผ๋กœ ์šฐ๋ฆฌ๋Š” ๋ฐฑ์—…์„ ๋งŒ๋“ค๊ณ  ์žˆ๊ณ , ๋ฐฑ์—…์ด ์œ ํšจํ•˜๋ฉฐ, ๋ฐฑ์—…๊ณผ ๊ด€๋ จํ•˜์—ฌ ๋ฐœ์ƒํ•˜๋Š” ๋ฌธ์ œ๋Š” ์‹œ๊ฐ„์ด ๊ฑฐ์˜ ๊ฑธ๋ฆฌ์ง€ ์•Š์œผ๋ฉฐ ๋‹ด๋‹น ๊ด€๋ฆฌ์ž ์ˆ˜์ค€์—์„œ ํ•ด๊ฒฐ๋œ๋‹ค๋Š” ๊ฒƒ์„ ํ™•์‹คํžˆ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐฑ์—…์€ tar.gz ๋˜๋Š” Bacula์— ๋น„ํ•ด ๊ณต๊ฐ„์„ ๊ฑฐ์˜ ์ฐจ์ง€ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : habr.com

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€