Elbrus OS์˜ Veeam์—์„œ Linux ๋ฐฑ์—…. ์ˆ˜์ž… ๋Œ€์ฒด ['?' | '.' | '!']

์•ˆ๋…• ๋ชจ๋‘
Habrรฉ์— ๊ด€ํ•œ ์ตœ๊ทผ ๊ธฐ์‚ฌ ์‹ค์ œ๋กœ ์ˆ˜์ž… ๋Œ€์ฒด. 1๋ถ€. ์˜ต์…˜ ะธ ์Œ์•…์ด ์˜ค๋žซ๋™์•ˆ ์žฌ์ƒ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค... ๋˜๋Š” Elbrus OS๊ฐ€ ๋ฌด๋ฃŒ๊ฐ€ ๋˜์ง€ ๋ชปํ•œ ์ด์œ  ๋‚˜๋ฅผ ๋ฌด๊ด€์‹ฌํ•˜๊ฒŒ ๋งŒ๋“ค์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๋ฐฑ์—… ์ž‘์—…์˜ ๋งฅ๋ฝ์—์„œ ์ด ๋ฌธ์ œ๋ฅผ ์—ฐ๊ตฌํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋”์šฑ์ด, ์ด ๊ธฐ์‚ฌ Veeam Software ์ œํ’ˆ์ด ์–ธ๊ธ‰๋˜์–ด ์žˆ๋Š”๋ฐ, ์ด๋Š” ํ•ด๋‹น ๋ฌธ์ œ๊ฐ€ ํŠนํžˆ ์ˆ˜์ž… ๋Œ€์ฒด์™€ ๊ด€๋ จ์ด ์žˆ์„ ์ˆ˜ ์žˆ์Œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

Elbrus OS์˜ Veeam์—์„œ Linux ๋ฐฑ์—…. ์ˆ˜์ž… ๋Œ€์ฒด ['?' | '.' | '!']
์›๋ณธ ์ด๋ฏธ์ง€ ์ถœ์ฒ˜

์šฐ์„  Elbrus OS๋ฅผ ๋‹ค์šด๋กœ๋“œํ•˜๊ฑฐ๋‚˜ x86_64 ์•„ํ‚คํ…์ฒ˜์— ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋ฐฐํฌํŒ๋งŒ ๋‹ค์šด๋กœ๋“œํ•˜์—ฌ ์ž‘๋™ ๋ฐฉ์‹์„ ํ™•์ธํ•œ ํ›„ Linux์šฉ Veeam Agent๋ฅผ ์„ค์น˜ํ•ด ๋ณด๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ์–ด๋–ป๊ฒŒ ๋‚˜์™”๋Š”์ง€ ์•Œ๊ณ  ์‹ถ๋‹ค๋ฉด ๊ณ ์–‘์ด๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ๋ชจ๋ฅด๋Š” ๊ฒฝ์šฐ๋ฅผ ๋Œ€๋น„ํ•ด ์ž‘์€ ์—ฌ๋‹ด์ž…๋‹ˆ๋‹ค. "์—˜๋ธŒ๋ฃจ์Šค"๋Š” ๊ทธ๋ ‡์ฃ  ํ”„๋กœ์„ธ์„œ ๋‹ค์†Œ ๊ตฌ์ฒด์ ์ธ ๋ช…๋ น ์‹œ์Šคํ…œ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๊ทธ ์™ธ์—๋„ Elbrus OS ์†Œํ”„ํŠธ์›จ์–ด๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋Œ€์ค‘์ ์ธ ๋ฏฟ์Œ๊ณผ๋Š” ๋‹ฌ๋ฆฌ Elbrus OS๋ฅผ ์ž‘๋™ํ•˜๊ธฐ ์œ„ํ•ด Elbrus ํ”„๋กœ์„ธ์„œ ๊ธฐ๋ฐ˜ ํ•˜๋“œ์›จ์–ด ์‹œ์Šคํ…œ์ด ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. x86์šฉ PDK "Elbrus"๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์‹ค์ œ๋กœ ์„ค์น˜ ๋””์Šคํฌ ํ˜•ํƒœ๋กœ ๊ณต๊ฐœ ๋„๋ฉ”์ธ์— ๋‚˜ํƒ€๋‚ฌ์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฑด ๊ทธ๋ ‡๊ณ , "PDK - ํ”Œ๋žซํผ ๊ฐœ๋ฐœ ํ‚คํŠธ, ๊ฐœ๋ฐœ์ž ํ‚คํŠธ"๋ผ๋Š” ๊ฐ์ฃผ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ํ›Œ๋ฅญํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์ตœ์†Œํ•œ ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ์žˆ๋‹ค๋Š” ์˜๋ฏธ์ž…๋‹ˆ๋‹ค.

๋˜ ๋‹ค๋ฅธ ์ž‘์€ ๊ฐ•์ œ ํ‡ด๊ฐ. ์‚ฌ์‹ค ์ œ๊ฐ€ ํ•œ๋•Œ MSVS, ๋ฐ”๊ฒŒํŠธ RTOS ๋“ฑ ๊ตญ์‚ฐ ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ๋‹ค๋ฃจ์—ˆ๋˜ ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ €๋Š” MCST์˜ ํ”„๋กœ์„ธ์„œ๋ฅผ ํฌํ•จํ•˜์—ฌ ๊ตญ๋‚ด ๋ถ€ํ’ˆ์„ ์ž‘์—…ํ•œ ๊ฒฝํ—˜์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฏ€๋กœ ๋‚˜๋Š” ์ด ๋ถ„์•ผ์— ํŠน์ •ํ•œ ํŠน์ด์„ฑ์ด ์žˆ๋‹ค๊ณ  ์ „์ ์ธ ์ฑ…์ž„์„ ๊ฐ–๊ณ  ๋งํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ๊ธฐ์‚ฌ์—์„œ๋Š” ์ด์— ๋Œ€ํ•ด ์–ธ๊ธ‰ํ•˜์ง€ ์•Š์œผ๋ ค๊ณ  ๋…ธ๋ ฅํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ผญ ํ•˜๊ณ  ์‹ถ์„ ๋•Œ [๋ฏธ์ •] ํƒœ๊ทธ๋ฅผ ๋‹ฌ๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์šฐ๋ฆฌ๋Š” ๋…ธ๊ณจ์ ์ธ ํŠธ๋กค๋ง๊ณผ ์ง„๋ถ€ํ•œ ์‹ ์Œ ์†Œ๋ฆฌ ์—†์ด ๋…ธ๋ ฅํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ฒฐ๊ตญ ๋Ÿฌ์‹œ์•„ ๋ฐฉ์‚ฐ์—…์ฒด์™€ ์ •๋ถ€๊ธฐ๊ด€์— ๋Œ€ํ•œ ์ดํ•ด๊ฐ€ ํ•„์š”ํ•˜๋‹ค. ํฐ ๋‚˜๋ผ - ์ ์€ ์˜ˆ์‚ฐ.. [๋ฏธ์ •].

์ œ๋กœ ์Šคํ…Œ์ด์ง€ - ๋‹ค์šด๋กœ๋“œ. ์—˜๋ธŒ๋ฃจ์Šค OS๊ฐ€ ์ถœ์‹œ๋๋‹ค๋Š” ์†Œ์‹์ด ๋ฐฐํฌ ์„œ๋ฒ„๊ฐ€ ๋‹ค์šด๋  ์ •๋„๋กœ ํฐ ๋ฐ˜ํ–ฅ์„ ๋ถˆ๋Ÿฌ์ผ์œผ์ผฐ๋‹ค๋Š” ์ ์€ ์ฃผ๋ชฉํ•  ๋งŒํ•˜๋‹ค. [๋ฏธ์ •] Yandex์™€ ๊ทธ๊ณณ์œผ๋กœ ์˜ฎ๊ธฐ๋Š” ๊ฒƒ์„ ์ƒ๊ฐํ•œ ์—”์ง€๋‹ˆ์–ด์—๊ฒŒ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๋‹ค์šด๋กœ๋“œ ์†๋„๊ฐ€ ์ข‹์Šต๋‹ˆ๋‹ค.

์ฒซ ๋ฒˆ์งธ ๋‹จ๊ณ„ - ์„ค์น˜. ๋ฌด๋ฃŒ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ฒซ ๋ฒˆ์งธ ํ•˜์ดํผ๋ฐ”์ด์ €์— ์„ค์น˜ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ €๋Š” ๋น„๋””์˜ค์šฉ์œผ๋กœ 32๊ฐœ์˜ ์ฝ”์–ด, ๋ช‡ ๊ธฐ๊ฐ€์˜ RAM, 32MB๋ฅผ ํ• ๋‹นํ–ˆ์Šต๋‹ˆ๋‹ค(๊ทธ๋ž˜ํ”ฝ ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ์žˆ์„ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ–ˆ์Šต๋‹ˆ๋‹ค). ๋””์Šคํฌ๋Š” ํ‰์†Œ์™€ ๊ฐ™์ด XNUMXGB์ž…๋‹ˆ๋‹ค.
์„ค์น˜๋ฅผ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค. ์„ค์น˜ ์ง€์นจ์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์•˜์œผ๋ฏ€๋กœ ์ด์— ๋Œ€ํ•ด ์–ธ๊ธ‰ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. TUI ์„ค์น˜ ์ธํ„ฐํŽ˜์ด์Šค๋Š” ๋งค์šฐ ๋‹จ์ˆœํ•ฉ๋‹ˆ๋‹ค.

Elbrus OS์˜ Veeam์—์„œ Linux ๋ฐฑ์—…. ์ˆ˜์ž… ๋Œ€์ฒด ['?' | '.' | '!']
์Œ, ์ข‹์Šต๋‹ˆ๋‹ค. ๋งˆ์šฐ์Šค ์—†์ด๋„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‘ ๋ฒˆ์งธ ์‹œ๋„์—์„œ ๋‹ค์Œ ์ฐฝ์„ ๊ด€๋ฆฌํ–ˆ์Šต๋‹ˆ๋‹ค. ๋””์Šคํฌ์—์„œ ์„ค์น˜ํ•  ๋•Œ ๊ธฐ๋ณธ ์žฅ์น˜ sr0 [TBD]๋ฅผ ์„ ํƒํ•˜์ง€ ์•Š๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?
CD-ROM ์†Œ์Šค๋ฅผ ์„ ํƒํ•˜๊ณ  ๊ณ„์† ์ง„ํ–‰ํ•˜์‹ญ์‹œ์˜ค.

Elbrus OS์˜ Veeam์—์„œ Linux ๋ฐฑ์—…. ์ˆ˜์ž… ๋Œ€์ฒด ['?' | '.' | '!']

์‹œ๊ฐ„๋Œ€๋ฅผ ์„ ํƒํ•˜๋Š” ๋™์•ˆ ์‹œ์Šคํ…œ์ด init ๋ถ€ํŒ… ํ”„๋กœ์„ธ์Šค๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  TTY0์—์„œ ์ž‘์—…ํ•˜๊ณ  ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ๊ฐ‘์ž๊ธฐ ๊นจ๋‹ฌ์•˜์Šต๋‹ˆ๋‹ค.

Elbrus OS์˜ Veeam์—์„œ Linux ๋ฐฑ์—…. ์ˆ˜์ž… ๋Œ€์ฒด ['?' | '.' | '!']

์ข‹์•„์š”, ๊ทธ๋Ÿผ "Elbrus"๋ฅผ ์ปค๋ฎค๋‹ˆํ‹ฐ๋กœ ๋ถ„๋ฅ˜ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์˜› ์‹ ์ž๋“ค[๋ฏธ์ •]. ์›์น™์ ์œผ๋กœ ์ด๊ฒƒ์€ ์ข‹์€ ์ผ์ž…๋‹ˆ๋‹ค. ๋ชจ๋“  ๊ฒƒ์ด ์Šคํฌ๋ฆฝํŠธ๋กœ ์ž‘์„ฑ๋˜๋ฏ€๋กœ ๋‹ค์šด๋กœ๋“œ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•˜๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ์š”์ฒญํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

๋‚˜๋จธ์ง€๋Š” ๊ฑฐ์˜ ์ค‘์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๋ชจ๋“  ๊ฒƒ์„ ๋„ฃ๊ณ  ๋™์˜ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ ๊ณผ์ •์—์„œ ์šฐ๋ฆฌ๋Š” ์ปค๋„์ด 3.14.79-13.84์—์„œ ์‚ฌ์šฉ๋œ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ํ , ๋ฐ๋น„์•ˆ 7์—๋Š” 3.2[TBD]๊ฐ€ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

๋‹ค์Œ์œผ๋กœ ๊ธฐ๋ณธ ๋””์Šคํฌ ํŒŒํ‹ฐ์…”๋‹์„ ์„ ํƒํ•˜๊ณ ... ๊ฒฝ๊ณ ๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

Elbrus OS์˜ Veeam์—์„œ Linux ๋ฐฑ์—…. ์ˆ˜์ž… ๋Œ€์ฒด ['?' | '.' | '!']

ํ , ์™ ์ง€ ์ž๋™ ํŒŒํ‹ฐ์…”๋‹์ด 32GB ๋””์Šคํฌ์—๋Š” ์ œ๋Œ€๋กœ ์ž‘๋™ํ•˜์ง€ ์•Š๋”๊ตฐ์š”. ๋””์Šคํฌ๋ฅผ ๋ฐ”๊พธ์ง€ ์•Š๊ณ  '์˜ฌ์ธ์›' ์Šคํƒ€์ผ์˜ ์ˆ˜๋™ ๋””์Šคํฌ ํŒŒํ‹ฐ์…”๋‹์œผ๋กœ ํ€˜์ŠคํŠธ๋ฅผ ์™„๋ฃŒํ–ˆ์Šต๋‹ˆ๋‹ค. /boot๊ฐ€ ext3์— ์žˆ์„ ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— ext4์„ ์„ค์น˜ํ•ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค.
์‹œ์Šคํ…œ์€ ์‚ฌ๊ณ  ์—†์ด ์ž‘๋™๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๋‘ ๋ฒˆ์งธ ๋‹จ๊ณ„ - ๋Œ€์•ˆ์„ ์ฐพ์•„๋ณด์„ธ์š”.
๋‘ ๋ฒˆ์งธ ๋””์Šคํฌ์˜ ๋‚ด์šฉ์„ ๋’ค์ง„ ํ›„ ์ด๊ฒƒ์ด ์ถ”๊ฐ€ ์ •๋ณด๊ฐ€ ์žˆ๋Š” ์ €์žฅ์†Œ๋ผ๋Š” ๊ฒƒ์„ ๊นจ๋‹ฌ์•˜์Šต๋‹ˆ๋‹ค. ํŒจํ‚ค์ง€๋กœ. ๊ทธ๋ฆฌ๊ณ  /etc/apt/sources.list๋ฅผ ๋ณด๋‹ˆ /mnt/cdrom์— ๋งˆ์šดํŠธํ•ด์•ผ ํ•œ๋‹ค๋Š” ๊ฑธ ๊นจ๋‹ฌ์•˜์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ /etc/os-release๋ฅผ ์ฐพ์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋‚ด์šฉ์ด 3.0-rc36์ธ /etc/mcst-version์ด ์žˆ์Šต๋‹ˆ๋‹ค. 3.0์ด ์•„๋งˆ๋„ ๋ฒ„์ „์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋งž๋Š” ๊ฒƒ ๊ฐ™์ง€๋งŒ rc36์ธ๊ฐ€์š”? ์ผ๋ฐ˜์ ์œผ๋กœ ํƒ€์‚ฌ ์†Œํ”„ํŠธ์›จ์–ด๋Š” ์ด๋Ÿฌํ•œ ๋ถ„ํฌ๋ฅผ ์ „ํ†ต์ ์ธ ๋ฐฉ์‹์œผ๋กœ ์ธ์‹ํ•˜์ง€ ๋ชปํ•  ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์Šต๋‹ˆ๋‹ค.

๋ฃจํŠธ ํŒŒํ‹ฐ์…˜์—์„œ /mcst ๋””๋ ‰ํ† ๋ฆฌ๊ฐ€ ๋‚ด ๋ˆˆ๊ธธ์„ ๋Œ์—ˆ๊ณ , ๊ฑฐ๊ธฐ์—์„œ ๋‚˜๋Š” ๋–จ๋ฆฌ๋Š” ๋งˆ์Œ์œผ๋กœ /mcst/backup์„ ๋ฐœ๊ฒฌํ–ˆ์Šต๋‹ˆ๋‹ค. ์ฆ‰, ๋ฐฑ์—… ๋„๊ตฌ๊ฐ€ ์žˆ๊ณ  ์‹œ์Šคํ…œ์— ๋‚ด์žฅ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค! โ€œ์ข‹์•„์š”.โ€ ๋‚˜๋Š” โ€œ์ด๊ฒŒ ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•˜๋Š”์ง€ ๋ณด์ž!โ€๋ผ๊ณ  ์ƒ๊ฐํ–ˆ์Šต๋‹ˆ๋‹ค.

ํŒŒ์ผ ๋ณต์‚ฌ๋ฅผ ์ œ๊ณตํ•˜๋Š” 4Kb bash ์Šคํฌ๋ฆฝํŠธ /mcst/bin/backup์ด ์žˆ๋Š” ๊ฒƒ์œผ๋กœ ๋‚˜ํƒ€๋‚ฌ์Šต๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ /mcst/backup ๋””๋ ‰ํ„ฐ๋ฆฌ์ž…๋‹ˆ๋‹ค. ์†Œ์Šค ์ฝ”๋“œ์—๋Š” rsync ๋ช…๋ น์ด ํ‘œ์‹œ๋  ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒํ–ˆ์ง€๋งŒ ๊ธฐ๋ณธ ๊ตฌ์„ฑ์—๋Š” ์—†์Šต๋‹ˆ๋‹ค. ์Šคํฌ๋ฆฝํŠธ๋Š” ๋‹จ์ˆœํžˆ ํŒŒ์ผ์„ ๋ณต์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๋ช…๋ น์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

cp -rpdx <file backup> <file>

์ „์ฒด ํŒŒ์ผ /mcst/bin/backup์€ ์—ฌ๊ธฐ์— ์žˆ์Šต๋‹ˆ๋‹ค.์ด ์Šคํฌ๋ฆฝํŠธ๋งŒ์œผ๋กœ๋Š” ์™„์ „ํžˆ ์ดํ•ดํ•˜๊ธฐ์—๋Š” ์ถฉ๋ถ„ํ•˜์ง€ ์•Š์Œ์„ ์ฆ‰์‹œ ๊ฒฝ๊ณ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ํ•จ์ˆ˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ ์œ ์‚ฌํ•œ /mcst/bin/source์—์„œ ํ•จ์ˆ˜๋ฅผ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค. ํฌํ•จํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค(44KB).

#!/bin/bash

unalias -a

set +vx

source $(dirname $0)/source
[[ $? != 0 ]] && exit 1

OPTIONS="hvcdrRil:L:"

usage()
{
	echo "Usage: $PROG_NAME [-$OPTIONS] [backup]"
	echo "    h            - this help"
	echo "    v vv vvv     - verbose, very verbose, extremly verbose"
	echo "    c            - create backup"
	echo "    d            - diffs backup and system"
	echo "    r            - recovery system"
	echo "    R            - remove backup"
	echo "    i            - prompt before backup removing"
	echo "    l list       - additional backup files list"
	echo "    L list       - global backup files list"
	echo "    backup       - backup directory, default /mcst/backup/backup"
}

init_prog()
{
	typeset flg=0

	while getopts $OPTIONS opt
	do
		case $opt in
		h ) usage; exit 0;;
		v ) (( verbose = verbose + 1 )); set_verbose;;
		c ) flg=1; c_flg=1;;
		d ) flg=1; d_flg=1;;
		r ) flg=1; r_flg=1;;
		R ) flg=1; R_flg=1;;
		i ) i_flg=1;;
		l ) l_flg=1; list_arg="$list_arg $OPTARG";;
		L ) L_flg=1; LIST_arg="$LIST_arg $OPTARG";;
		* ) usage "Invalid option"; exit 1;;
		esac
	done

	set_verbose

	check_su

	init_variables

	shift $((OPTIND-1))

	if (( $# > 1 ))
	then
		echo_fatal "invalid arguments number, exp 0|1, act $#"
		exit 1
	fi

	[[ $# = 1 ]] && BACKUP=$1

	echo "Backup directory is $BACKUP"

	if [[ $L_flg = 1 ]]
	then
		backup_list="$LIST_arg"
	elif [[ $c_flg != 1 && $R_flg != 1 ]]
	then
		get_output_cmd "cat $BACKUP/$BACKUP_LIST_NAME"
		backup_list="$output_cmd"
	else
		get_output_cmd "get_backup_list"
		backup_list="$output_cmd"
	fi

	if [[ $l_flg = 1 ]]
	then
		backup_list="$backup_list $list_arg"
	fi

	if [[ $flg = 0 ]]
	then
		if [[ -d $BACKUP ]]
		then
			ls -laR $BACKUP
		else
			echo_info "Cannot access $BACKUP"	
		fi
		echo "backup_list=$backup_list"
		exit 0
	fi

###	echo "Backup list: $backup_list"
}

create_file()
{
	typeset f=$1 fr=$2
	typeset fb

	[[ -z $fr ]] && fr=$f

	fb=${f#/}

	fb=$BACKUP/$fb

	xcmd="rm -rf $fb"
	set_cmd "$xcmd"
	run_cmd

	xcmd="mkdir -p $fb"
	set_cmd "$xcmd"
	run_cmd

	if [[ -a $fr ]]
	then
		xcmd="cp -rpdx $fr $fb/file"
		set_cmd "$xcmd"
		run_cmd

		xcmd="touch $fb/create"
		set_cmd "$xcmd"
		run_cmd
	else
		xcmd="touch $fb/delete"
		set_cmd "$xcmd"
		run_cmd
	fi
}

diff_file()
{
	typeset f=$1
	typeset fb

	fb=${f#/}

	fb=$BACKUP/$fb

	if [[ -f $fb/delete ]]
	then
		echo_info "$f absent"
	elif [[ -f $fb/create ]]
	then
#		echo "state: create $f"

		if [[ ! -a $f ]]
		then
			echo_info "cannot access $f"
		else
			xcmd="diff -r $f $fb/file"
			echo "$xcmd"
			set_cmd "$xcmd" "" "0 1 2"
			run_cmd
		fi
	else
		echo_fatal "wrong $f backup"
		exit 1
	fi
}

recovery_file()
{
	typeset f=$1
	typeset fb

	fb=${f#/}

	fb=$BACKUP/$fb

	if [[ ! -a $fb ]]
	then
		echo_fatal "cannot access $fb"
		exit 1
	fi

	xcmd="rm -rf $f"
	set_cmd "$xcmd"
	run_cmd

	if [[ -f $fb/delete ]]
	then
		:
	elif [[ -f $fb/create ]]
	then
		xcmd="cp -rpdx $fb/file $f"
		set_cmd "$xcmd"
		run_cmd
	else
		echo_fatal "wrong $fb backup"
		exit 1
	fi
}

remove_backup()
{
	echo "Remove backup"

	if [[ ! -d $BACKUP ]]
	then
		echo_info "Cannot access $BACKUP"
		return
	fi

	if [[ ! -f $BACKUP/$BACKUP_LIST_NAME ]]
	then
		echo_fatal "$BACKUP_LIST_NAME absent, remove backup manually"
		exit 0
	fi

	answer=
	if [[ $i_flg = 1 ]]
	then
		echo -n "Remove $BACKUP directory (yes/...)?"
		read answer
	else
		answer=yes
	fi
	if [[ $answer = yes ]]
	then
		xcmd="rm -rf $BACKUP"
		set_cmd "$xcmd"
		run_cmd
	fi
}

recovery_backup()
{
	echo "Recovery system from $BACKUP" 

	for f in $backup_list
	do
		get_output_cmd "get_mount_point $f"
		mnt=$output_cmd
		get_output_cmd "is_ro_mounted $mnt"
		mnt=$output_cmd
		if [[ ! -z $mnt ]]
		then
			remount_rw_fs $mnt
		fi 
		recovery_file $f
		if [[ ! -z $mnt ]]
		then
			remount_ro_fs $mnt
		fi 
	done

	echo "The system is ready, reboot the system manually" 
}

create_backup()
{
		echo "Create backup"

		xcmd="mkdir -pm0777 $BACKUP"
		set_cmd "$xcmd"
		run_cmd

		for v in $backup_list
		do
			f=${v%%:*}
			backup_list2="$backup_list2 $f"
			fr=${v#*:}
			create_file $f $fr
		done
		echo "$backup_list2" >$BACKUP/$BACKUP_LIST_NAME
}

diff_backup()
{
	echo "Diffs system and backup" 

	if [[ ! -d $BACKUP ]]
	then
		echo_fatal "cannot access $BACKUP"
		exit 1
	fi

	for f in $backup_list
	do
		diff_file $f
	done
}

main()
{
	typeset f mnt mnt_list answer

	if [[ $R_flg = 1 ]]
	then
		remove_backup
	fi

	if [[ $r_flg = 1 ]]
	then
		recovery_backup
	fi

	if [[ $c_flg = 1 ]]
	then
		create_backup
	fi

	if [[ $d_flg = 1 ]]
	then
		diff_backup
	fi
}

init_prog "$@"

main

exit 0

๊ทธ๋Ÿฐ๋ฐ ๋‚ด๊ฐ€ ๋ญ”๊ฐ€ ์ดํ•ดํ•˜์ง€ ๋ชปํ–ˆ์„๊นŒ์š”? ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ๋Œ“๊ธ€๋กœ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด ์Šคํฌ๋ฆฝํŠธ๋Š” ์–ด๋–ป๊ฒŒ ์•ˆ์ „ํ•˜๊ณ  ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐ์ดํ„ฐ ๋ฐฑ์—…์„ ๋ณด์žฅํ•ฉ๋‹ˆ๊นŒ? [๋ฏธ์ •]

๊ทธ๋Ÿฐ๋ฐ rsync๋Š” ์ถ”๊ฐ€ ๊ธฐ๋Šฅ์— ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ €์žฅ์†Œ. ๋ฒ„์ „ 3.1.3. ๋‚˜๋Š” rsync๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด /mcst/bin/backup ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ๋Œ€ํ•œ ๋” ๋‚˜์€ ๋Œ€์•ˆ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๋‹ค์Œ์—๋Š” ์ƒˆ๋กœ์šด ๊ฒƒ์„ ๋„ฃ๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค Linux์šฉ Veeam ์—์ด์ „ํŠธ. ๋ˆ„๊ตฐ๊ฐ€๋Š” "Veeam๊ณผ ์ˆ˜์ž… ๋Œ€์ฒดํ’ˆ์ด ๋ฌด์Šจ ๊ด€๋ จ์ด ์žˆ๋‚˜์š”?"๋ผ๊ณ  ๋ฌป์Šต๋‹ˆ๋‹ค. ์˜ˆ, ๋“ฑ๋ก๋ถ€์— ์—†์ง€๋งŒ FSTEC ์ธ์ฆ์„ ๋ฐ›์•˜์Šต๋‹ˆ๋‹ค. ์ฆ‰, ๋Œ€์•ˆ์ด ์—†๋Š” ๊ฒฝ์šฐ์—๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ์˜ ๋Œ€์•ˆ์— ๋Œ€ํ•ด XNUMX๋ถ„์„ ์†Œ๋น„ํ•ฉ๋‹ˆ๋‹ค. ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ, "๋ฐฑ์—…"์ด๋ผ๋Š” ๋‹จ์–ด์— ๋Œ€ํ•œ 3๊ฐœ์˜ ๋งํฌ๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค("์˜ˆ์•ฝ"์ด๋ผ๋Š” ๋‹จ์–ด์— ๋Œ€ํ•œ ๋‚ด ์งˆ๋ฌธ๊ณผ ๊ด€๋ จ๋œ ๋งํฌ๋Š” ์—†์Œ). ๋‚˜๋Š” ์ด๋Ÿฌํ•œ ํ”„๋กœ๊ทธ๋žจ์— ๋Œ€ํ•ด ๊นŠ์ด ๋ถ„์„ํ•˜์ง€ ์•Š์•˜์œผ๋ฏ€๋กœ Linux๋ฅผ ์‹คํ–‰ํ•˜๋Š” ์‹œ์Šคํ…œ์„ ๋ฐฑ์—…ํ•˜๋Š” ๋ฐ ์–ผ๋งˆ๋‚˜ ์ ํ•ฉํ•œ์ง€ ํŒ๋‹จํ•˜๋ ค๊ณ  ์‹œ๋„ํ•˜์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํ•„์š”ํ•œ ์‚ฌ๋žŒ์€ ๋ˆ„๊ตฌ๋‚˜ ์Šค์Šค๋กœ ๊ฒฐ๋ก ์„ ๋„์ถœํ•˜๊ณ  ๋Œ“๊ธ€๋กœ ๊ณต์œ ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋‹จ ์„ธ โ€” Linux์šฉ Veeam Agent ์„ค์น˜.
๋”ฐ๋ผ์„œ Linux์šฉ Veeam Agent๋Š” veeamsnap ์ปค๋„ ๋ชจ๋“ˆ(๊ทธ๋Ÿฐ๋ฐ, ์ถœ์ฒ˜๋Š” ์—ฌ๊ธฐ) ๋ฐ veeam ํŒจํ‚ค์ง€ ํ˜•ํƒœ์˜ ๋…์  ์‚ฌ์šฉ์ž ๊ณต๊ฐ„ ์ฝ”๋“œ์ž…๋‹ˆ๋‹ค.

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

"์ข‹์•„, ๋ชจ๋“ˆ์ด ์„ค์น˜๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ฐ€์žฅ ์–ด๋ ค์šด ๋ถ€๋ถ„์€ ๋๋‚ฌ์Šต๋‹ˆ๋‹ค."๋ผ๊ณ  ์ƒ๊ฐํ–ˆ์Šต๋‹ˆ๋‹ค... deb ์ €์žฅ์†Œ์šฉ veeam ํŒจํ‚ค์ง€๋Š” amd64 ํ”Œ๋žซํผ์šฉ์ด๊ณ  Elbrus OS์—๋Š” x86_64 [TBD] ํ”Œ๋žซํผ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฌผ๋ก  ์ฐจ์ด์ ์€ ์ด๋ฆ„์—๋งŒ ์žˆ์ง€๋งŒ ์ด๋Ÿฌํ•œ ์ฐจ์ด์ ์œผ๋กœ ์ธํ•ด ํƒ€์‚ฌ deb ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์˜ ๊ฑฐ์˜ ๋ชจ๋“  ํŒจํ‚ค์ง€๊ฐ€ Elbrus OS์™€ ํ˜ธํ™˜๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด ์งœ์ฆ๋‚˜๋Š” ์˜คํ•ด๋Š” ๊ฐ„๋‹จํ•˜๊ฒŒ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํŒจํ‚ค์ง€๋ฅผ ๋ถ„ํ•ดํ•˜๊ณ  ์•„ํ‚คํ…์ฒ˜์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์ˆ˜์ •ํ•œ ํ›„ ๋‹ค์‹œ ์กฐ๋ฆฝํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์„ํ•˜๋Š” ๋ฐฉ๋ฒ• ๊ตฌ๊ธ€๋งํ•ด๋ดค์–ด ๊ณง.

mkdir tmp
dpkg-deb -R original.deb tmp
# edit DEBIAN/postinst
dpkg-deb -b tmp fixed.deb

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

๊ทธ๋Ÿฌ๋‹ค๊ฐ€ ์„œ๋น„์Šค ์‹œ์ž‘ ์ฝ”๋“œ์— ๋ฌธ์ œ๊ฐ€ ๋‚˜ํƒ€๋‚ฌ์Šต๋‹ˆ๋‹ค. /lib/init/vars.sh ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ๋ˆ„๋ฝ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์–ด๋–ค ์ด์œ ๋กœ Elbrus๋Š” ๊ทธ๊ฒƒ ์—†์ด๋„ ๊ด€๋ฆฌํ•˜๋ฏ€๋กœ ์šฐ๋ฆฌ๋„ ๊ทธ๊ฒƒ์„ ์ œ๊ฑฐํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ์œผ๋กœ ๋ฉ”์‹œ์ง€ ์ถœ๋ ฅ ๊ธฐ๋Šฅ์„ ๊ต์ฒดํ•ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค. log_daemon_msg ๋ฐ log_end_msg ๊ธฐ๋Šฅ์ด ๋ˆ„๋ฝ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. /lib/lsb/init-functions ํŒŒ์ผ์„ ๋’ค์ง„ ํ›„ log_success_msg ํ•จ์ˆ˜๋ฅผ ์ฐพ์•˜์Šต๋‹ˆ๋‹ค. ์ด๋Š” ์‹คํ—˜์— ์œ ์šฉํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ /lib/lsb/init-functions ํŒŒ์ผ์—์„œ "# Source SuSE`s rc function" ์ค„์€ [TBD] ํŒŒ์ผ์˜ ์‹œ์ž‘ ๋ถ€๋ถ„์— ์žˆ์Šต๋‹ˆ๋‹ค.

ํŒŒ์ผ์ด ํฌํ•จ๋œ ํŒจํ‚ค์ง€๋ฅผ ๋Œ€๋žต์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•œ ํ›„ NFS ๊ณต์œ ์˜ ์ „์ฒด ๋จธ์‹  ๋ฐฑ์—…์ด ์„ฑ๊ณต์ ์œผ๋กœ ์‹œ์ž‘๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋ฐฑ์—… ๋งˆ์šดํŠธ๋„ ์„ฑ๊ณตํ–ˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์•„๋ฌด๋Ÿฐ ์˜๋ฌด ์—†์ด "๊ทธ๋ƒฅ" ๋‹ค์šด๋กœ๋“œํ•œ Elbrus PDK๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์‹œ์Šคํ…œ์„ ๋ฐฑ์—…ํ•˜๋ ค๋ฉด Veeam Agent for Linux๊ฐ€ ํ™•์‹คํžˆ ์ ํ•ฉํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ํŒŒ์ผ์„ ๋ชจ๋‘ ์ˆ˜์ •ํ•œ ํ›„์—๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค.

๋ฌผ๋ก  Elbrus OS ๋ฐฐํฌ ํ‚คํŠธ๋Š” ์ง€์› ๋ชฉ๋ก์— ํฌํ•จ๋˜์–ด ์žˆ์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๊ณต์‹์ ์œผ๋กœ ์ง€์›๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ Veeam Agent for Linux๋Š” QA ๋ถ€์„œ์—์„œ ํ…Œ์ŠคํŠธ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. (์ ์–ด๋„ ๊ธฐ์‚ฌ๊ฐ€ ์ถœํŒ๋˜๋Š” ์‹œ์ ์—๋Š”) ์ง€์›์ด ์—†์Šต๋‹ˆ๋‹ค.

์ด ๊ธฐ์‚ฌ๊ฐ€ 334๋…„ 29.06.2017์›” XNUMX์ผ ๋ช…๋ น ๋ฒˆํ˜ธ XNUMX๋ฅผ ๊ตฌํ˜„ํ•˜๋ ค๋Š” ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ๋„์›€์ด ๋˜๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค. ๋‚ด ๊ฒƒ์ด ๋‹น์‹ ์—๊ฒŒ... [๋ฏธ์ •].

์ถœ์ฒ˜ : habr.com

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