Restic: ๋ฐฑ์—… ๋ฐ ๋ณต์›์„ ์œ„ํ•œ ํฌํ•จ ๋ฐ ์ œ์™ธ ํŒจํ„ด ํ˜ผํ•ฉ ํ—ˆ์šฉ

์— ๋งŒ๋“  2015๋…„ 07์›” 18์ผ  ยท  17์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: restic/restic

์ด๊ฒƒ์€ #226์˜ ํ›„์† ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. ์ง€๊ธˆ๊นŒ์ง€๋Š” ๋ฐฑ์—… ๋ฐ ๋ณต์›์— ๋Œ€ํ•œ ์ œ์™ธ ํŒจํ„ด๋งŒ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‹ค๋ฃจ์ง€ ์•Š๋Š” ์‚ฌ์šฉ ์‚ฌ๋ก€๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด: ์‚ฌ์šฉ์ž๋Š” C ์†Œ์Šค ํŒŒ์ผ์„ ์ œ์™ธํ•˜๊ณ  work ๋””๋ ‰ํ† ๋ฆฌ์—์„œ ๋ชจ๋“  ๊ฒƒ์„ ์ œ์™ธํ•˜๊ณ  /home/user ํ™ˆ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ๋ฐฑ์—…ํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

๋‚ด๊ฐ€ ์ƒ๊ฐํ•˜์ง€ ๋ชปํ•œ ๋‹ค๋ฅธ ์šฉ๋„๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?

๊ตฌํ˜„/์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค: ๊ณตํ†ต ๋ชฉ๋ก์„ ์ฑ„์šฐ๋Š” --include ๋ฐ --exclude ํŒจํ„ด์„ ๋ช…๋ น์ค„์— ๋ชจ๋‘ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(์—ฌ๊ธฐ์„œ ์ˆœ์„œ๋Š” ์ค‘์š”ํ•จ). ๊ฐ ๋””๋ ‰ํ† ๋ฆฌ/ํŒŒ์ผ์— ๋Œ€ํ•ด ๋ชฉ๋ก์˜ ๋ชจ๋“  ํŒจํ„ด์„ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค. ๋งˆ์ง€๋ง‰ ์ผ์น˜ ํŒจํ„ด์˜ ์ž‘์—…(์ œ์™ธ ๋˜๋Š” ํฌํ•จ)์ด ์Šน๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ ์ž‘์—…(ํฌํ•จ ๋˜๋Š” ์ œ์™ธ ํŒจํ„ด์ด ์ง€์ •๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ์—๋„ ์‚ฌ์šฉ๋จ)์€ "ํฌํ•จ"์ž…๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์—๋Š” ์ด๋ฏธ ์ฝ”๋„ˆ ์ผ€์ด์Šค๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. /home/user/work ๋ฅผ ๊ฑธ์–ด์•ผ ํ• ๊นŒ์š”?

๋‚˜๋Š” ๊ทธ๊ฒƒ์ด ์•ˆ๋œ๋‹ค๊ณ  ์ƒ๊ฐํ•œ๋‹ค. ๋Œ€์‹ , ์ด๊ฒƒ์ด ๋ฐ”๋žŒ์งํ•œ ๋™์ž‘์ด๋ผ๋ฉด ์‚ฌ์šฉ์ž๊ฐ€ ์ œ์™ธ๋œ ๋””๋ ‰ํ† ๋ฆฌ๋„ ํ•จ๊ป˜ ์ด๋™ํ•ด์•ผ ํ•จ์„ ์•Œ๋ฆฌ๋Š” ๋ณด๋‹ค ๊ตฌ์ฒด์ ์ธ ํŒจํ„ด์„ ์ถ”๊ฐ€ํ•˜๋„๋ก ์š”๊ตฌํ•ฉ๋‹ˆ๋‹ค(์˜ˆ: restic backup --exclude /home/user/work --include /home/user/work/**/*c. /home/user .

๋” ๋‚˜์€ ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค๋Š” ํŒŒ์ผ์—์„œ ํŒจํ„ด์„ ์ฝ์„ ์ˆ˜ ์žˆ๋„๋ก ์ง€์ •ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค( --pattern-file ๋˜๋Š” ์ด์™€ ์œ ์‚ฌํ•œ ๊ฒƒ). ์ด ํŒŒ์ผ์—์„œ # ๋กœ ์‹œ์ž‘ํ•˜๋Š” ๋ชจ๋“  ์ค„์€ ์ฃผ์„์ด๊ณ  ๋นˆ ์ค„์€ ๋ฌด์‹œ๋˜๋ฉฐ ๋‹ค๋ฅธ ๋ชจ๋“  ์ค„์€ ๊ณต๋ฐฑ ๋‹ค์Œ์— + (ํฌํ•จ) ๋˜๋Š” - (์ œ์™ธ)๋กœ ์‹œ์ž‘ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์บ๋ฆญํ„ฐ์™€ ํŒจํ„ด. ์œ„์˜ ์‚ฌ์šฉ ์‚ฌ๋ก€์˜ ๊ฒฝ์šฐ ํ•„ํ„ฐ ํŒŒ์ผ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

# filter out everything from work, but include c source code files
- /home/user/work
+ /home/user/work/**/*.c

์ด ๋ฌธ์ œ๋Š” ํฌํ•จ ๋ฐ ์ œ์™ธ ํŒจํ„ด์„ ๋ชจ๋‘ ํฌํ•จํ•˜๋Š” ์ตœ์ข… ์†”๋ฃจ์…˜์ด ๊ตฌํ˜„๋˜๋ฉด ์ข…๋ฃŒ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

backup restore feature enhancement

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

.gitignore ์‚ฌ์šฉํ•˜๋Š” ํ‘œ์ค€ ๋ฌด์‹œ ํ˜•์‹์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ์˜ˆ๋ฅผ ๋“ค์–ด

# ignore everything
*
# include $HOME/.local
!$HOME/.local

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

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

๋‹ต๋ณ€์„ ๊ฒŒ์‹œํ•˜๊ธฐ ์ „์— ์ „์ฒด ํ…์ŠคํŠธ๋ฅผ ์ฝ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ๋ช…๋ น์ค„ ์ธ์ˆ˜ ๋Œ€์‹  ํ‘œ์ค€ ์ž…๋ ฅ์—์„œ ๋ฐฑ์—…ํ•  ํŒŒ์ผ/๋””๋ ‰ํ† ๋ฆฌ ๋ชฉ๋ก์„ ๊ฐ€์ ธ์˜ค๋Š” ๋‹ค๋ฅธ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์„ ๊ฐ€์งˆ ๊ฐ€์น˜๊ฐ€ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๊นŒ? ๊ทธ๋ ‡๋‹ค๋ฉด ๋ฌธ์ œ๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

๋‚˜ ์ž์‹ ์„ ์œ„ํ•œ ์•Œ๋ฆผ: ์ด ๋ฌธ์ œ๋Š” ๋ฐฑ์—…์šฉ ํ•„ํ„ฐ ํฌํ•จ์— ๊ด€ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋ณต์›์—๋Š” ์ด๋ฏธ ํ•„ํ„ฐ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

rsync์˜ --exclude/--include/--exclude-from ๊ตฌ๋ฌธ์„ ๋ณต์‚ฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋“ค์€ 20๋…„์˜ ๊ฒฝํ—˜์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค :-)
(์ตœ์†Œํ•œ "/foo"์™€ "foo"๊ฐ€ ๋™์ผํ•œ์ง€ ๋˜๋Š” "*.c"๊ฐ€ ์ง€์›๋˜๋Š”์ง€ ์—ฌ๋ถ€๊ฐ€ ๋ถˆ๋ถ„๋ช…ํ•˜๋ฏ€๋กœ ์‚ฌ์šฉ์ž ๊ฐ€์ด๋“œ์— ํ˜„์žฌ ๊ตฌ๋ฌธ์˜ ๋ช‡ ๊ฐ€์ง€ ์˜ˆ๋ฅผ ์ถ”๊ฐ€ํ•˜์‹ญ์‹œ์˜ค.

์•„, ๋Œ“๊ธ€ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๋งค๋‰ด์–ผ์— ๋ˆ„๋ฝ๋œ ์˜ˆ์ œ์— ๋Œ€ํ•œ ๋ฌธ์ œ๋ฅผ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค: https://github.com/restic/restic/issues/396

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

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

$ find -name '*.go' | restic backup --files-from -
open -: no such file or directory

๋‹ค์Œ๊ณผ ๊ฐ™์ด ์“ธ ์ˆ˜ ์žˆ์ง€๋งŒ

restic backup --exclude '*' --include '*.go'

์Œ, stdin์—์„œ ํŒŒ์ผ ๋ชฉ๋ก์„ ์ฝ๋Š” ๊ฒƒ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด restic์„ ํ˜ธ์ถœํ•˜์—ฌ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

$ find -name '*.go' | restic backup --files-from /dev/stdin

์›ํ•˜์‹ ๋‹ค๋ฉด --files-from - ์ฒ˜๋ฆฌ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” PR์„ ์ˆ˜๋ฝํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. :)

@opennota ์‚ฌ์šฉ ์‚ฌ๋ก€๋ฅผ ์„ค๋ช…ํ•ด ์ฃผ์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? ๊ทธ๊ฒƒ์€ ์šฐ๋ฆฌ์—๊ฒŒ ํฅ๋ฏธ๋กœ์šธ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋Œ€์‹œ( - ) ๋ฌธ์ œ๋Š” #769๋กœ ์ถ”์ ๋ฉ๋‹ˆ๋‹ค.

@fd0
์‚ฌ์šฉ ์‚ฌ๋ก€๊ฐ€ ๋งŽ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ชฉ๋ก์— ์ž„์‹œ ํŒŒ์ผ์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ํŠน์ • ํ™•์žฅ์ž๋ฅผ ๊ฐ€์ง„ ํŒŒ์ผ๋งŒ ๋ฐฑ์—…ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

์›ํ•œ๋‹ค๋ฉด --files-from์— ๋Œ€ํ•œ ์ฒ˜๋ฆฌ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” PR์„ ์ˆ˜๋ฝํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. :)

๋‚ด๊ฐ€ ๋ฌด์—‡์„ ํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ์•Œ์•„๋ณผ ๊ฒŒ.

sed ๋ฐ ๋ช…๋ช…๋œ ํŒŒ์ดํ”„๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ด ๋™์ž‘์„ ์—๋ฎฌ๋ ˆ์ดํŠธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

restic --exclude-file <(sed -n 's/^- \(.*\)/\1/p' files.list) --files-from <(sed -n 's/^+ \(.*\)/\1/p' files.list)

- ๋กœ ์‹œ์ž‘ํ•˜๋Š” ํ–‰์€ ์ œ์™ธ๋˜๊ณ  + ์€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

์ข‹์€ ๋ชจ๋ธ์€ borg๊ฐ€ ์ตœ๊ทผ --pattern ๋ฐ --patterns-from์— ๋Œ€ํ•ด ๊ตฌํ˜„ํ•œ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.
https://borgbackup.readthedocs.io/en/stable/usage/help.html#borg -help-patterns
๋‹ค์–‘ํ•œ ์Šคํƒ€์ผ ์„ ํƒ๊ธฐ๊ฐ€ ์•„๋‹ˆ๋ผ ํŒŒ์ผ์— ๋ฃจํŠธ ๊ฒฝ๋กœ, ํฌํ•จ ๊ทœ์น™, ์ œ์™ธ ๊ทœ์น™ ๋ฐ ์žฌ๊ท€ ์—†๋Š” ์ œ์™ธ ๊ทœ์น™์„ ์ง€์ •ํ•˜๋Š” ์˜ต์…˜์ด ์žˆ์Šต๋‹ˆ๋‹ค.

.gitignore ์‚ฌ์šฉํ•˜๋Š” ํ‘œ์ค€ ๋ฌด์‹œ ํ˜•์‹์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ์˜ˆ๋ฅผ ๋“ค์–ด

# ignore everything
*
# include $HOME/.local
!$HOME/.local

--include๊ฐ€ ๊ตฌํ˜„๋  ์˜ˆ์ •์ž…๋‹ˆ๊นŒ?

--include ๋ฐ --exclude์™€ ๊ฐ™์€ ์†Œ๋ฆฌ๋Š” ํ•จ๊ป˜ ๊ตฌํ˜„ํ•  ์ˆ˜ ์—†๊ฑฐ๋‚˜ ์ ์–ด๋„ ํ•˜๋‚˜์˜ ์šฐ์„  ์ˆœ์œ„ ๊ณ„์ธต์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค...

--files-from ์™€ ํ•จ๊ป˜ ํŒŒ์ผ ๋ชฉ๋ก์„ ์ œ๊ณตํ•˜๋ฉด snapshots ํ•˜์œ„ ๋ช…๋ น์ด ํŒŒ์ผ์˜ ๊ฑฐ๋Œ€ํ•œ ๋ชฉ๋ก์„ ํ‘œ์‹œํ•˜๊ณ  forget ํ•˜์œ„ ๋ช…๋ น์ด ์˜ˆ์ƒ๋Œ€๋กœ ์ž‘๋™ํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ๋ฌธ์ œ๊ฐ€ ์™„์ „ํžˆ ํ•ด๊ฒฐ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋‚ด ์‚ฌ์šฉ ์‚ฌ๋ก€๋Š” ๋‚ด ์ง‘์„ ๋ฐฑ์—…ํ•˜๋Š” ๊ฒƒ์ด๋ฉฐ ์ผ๋ถ€ ์ œ์™ธ ๋ฐ ์ œ์™ธ์— ๋Œ€ํ•œ ์ผ๋ถ€ ์˜ˆ์™ธ๊ฐ€ ์žˆ๋Š” ๊ฒฝ๋กœ ๋ชฉ๋ก์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฒฝ๋กœ์˜ ๊ธฐ๋ณธ ๋ชฉ๋ก์—๋Š” ์ด๋ฏธ 100๊ฐœ์˜ ํ•ญ๋ชฉ์ด ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ๊ฒƒ์ด $HOME ์•„๋ž˜์— ์žˆ์œผ๋ฏ€๋กœ --exclude=** --include=~/path1 --include=~/path2 --exclude=~/path2/something --exclude=*~ ์™€ ๊ฐ™์ด ๋งํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒ๋ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๊ฒฝ๋กœ๋ฅผ ํฌํ•จํ•ด์•ผ ํ•˜๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ๊ฒฐ์ •ํ•˜๋ ค๋ฉด ๊ฐ --exclude ๋ฐ --include ์— ๋Œ€ํ•ด ์˜ฌ๋ฐ”๋ฅธ ์ˆœ์„œ๋กœ ์ผ์น˜ํ•ด์•ผ ํ•˜๋ฉฐ ๋งˆ์ง€๋ง‰ ์ผ์น˜๊ฐ€ ์Šน๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

@vincentbernat ์˜ PR ์ด ์ด ์š”๊ตฌ ์‚ฌํ•ญ์— ๋Œ€ํ•œ ํšจ๊ณผ์ ์ธ ์†”๋ฃจ์…˜์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

_์š”์•ฝ: gitignore ์Šคํƒ€์ผ์˜ ๋ถ€์ • ํŒจํ„ด์ด ๋ฐฑ์—… ๋ฐ ๋ณต์› ๋ชจ๋‘์— ๋Œ€ํ•œ ์ œ์™ธ ๊ทœ์น™์„ ์ง€์ •ํ•˜๋„๋ก ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค._

๋‚˜๋Š” ์ง€๊ธˆ ๋ช‡ ์ฃผ ๋™์•ˆ ๊ทธ๊ฒƒ์„ ํšจ๊ณผ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

ํŠนํžˆ, ์ด์ „์—๋Š” ๋งค์šฐ ์žฅํ™ฉํ–ˆ๋˜ ์Šค๋ƒ…์ƒท ๋ชฉ๋ก์„ ๋‹จ์ˆœํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

b951f6a2  2019-06-15 11:30:18  elvandar    manual      /Users/daniel/Desktop
                                                       /Users/daniel/Documents
                                                       <lots more...>

์—๊ฒŒ:

d0c0bed1  2019-06-18 08:20:57  elvandar                /Users/daniel

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

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