рдирдорд╕реНрдХрд╛рд░.
Habr├й рд╡рд░ рдЕрд▓реАрдХрдбреАрд▓ рд▓реЗрдЦ
рд╕рд░реНрд╡ рдкреНрд░рдердо, рдореА рдПрд▓реНрдмреНрд░рд╕ рдУрдПрд╕ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдгреНрдпрд╛рдЪрд╛ рдирд┐рд░реНрдгрдп рдШреЗрддрд▓рд╛, рдХрд┐рдВрд╡рд╛ рддреНрдпрд╛рдРрд╡рдЬреА, рдлрдХреНрдд x86_64 рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░рд╕рд╛рдареА рдЙрдкрд▓рдмреНрдз рд╡рд┐рддрд░рдг, рддреЗ рдХрд╕реЗ рдХрд╛рд░реНрдп рдХрд░рддреЗ рддреЗ рдкрд╣рд╛ рдЖрдгрд┐ рддреНрдпрд╛рд╡рд░ рд▓рд┐рдирдХреНрд╕рд╕рд╛рдареА рд╡реАрдо рдПрдЬрдВрдЯ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдгреНрдпрд╛рдЪрд╛ рдкреНрд░рдпрддреНрди рдХрд░рд╛. рдпрд╛рддреВрди рдХрд╛рдп рдирд┐рд╖реНрдкрдиреНрди рдЭрд╛рд▓реЗ рд╣реЗ рдЬрд╛рдгреВрди рдШреНрдпрд╛рдпрдЪреЗ рдЕрд╕рд▓реНрдпрд╛рд╕, рдХреГрдкрдпрд╛ рдорд╛рдВрдЬрд░ рдкрд╣рд╛.
рддрд░, рдПрдХ рд▓рд╣рд╛рди рд╡рд┐рд╖рдпрд╛рдВрддрд░, рдЬрд░ рдПрдЦрд╛рджреНрдпрд╛рд▓рд╛ рдорд╛рд╣рд┐рдд рдирд╕реЗрд▓ рддрд░. "рдПрд▓реНрдмреНрд░рд╕" рдЕрд╕реЗ рдЖрд╣реЗ
рдЖрдгрдЦреА рдПрдХ рд▓рд╣рд╛рди рдЬрдмрд░рджрд╕реНрдд рдорд╛рдШрд╛рд░. рд╡рд╕реНрддреБрд╕реНрдерд┐рддреА рдЕрд╢реА рдЖрд╣реЗ рдХреА рдореА рдПрдХрджрд╛ MSVS рдЖрдгрд┐ Baguette RTOS рд╕рд╛рд░рдЦреНрдпрд╛ рдШрд░рдЧреБрддреА рд╕реЙрдлреНрдЯрд╡реЗрдЕрд░рдЪрд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЗрд▓рд╛. рдорд▓рд╛ MCST рдЪреНрдпрд╛ рдкреНрд░реЛрд╕реЗрд╕рд░рд╕рд╣ рдШрд░рдЧреБрддреА рдШрдЯрдХрд╛рдВрд╕рд╣ рдХрд╛рдо рдХрд░рдгреНрдпрд╛рдЪрд╛ рдЕрдиреБрднрд╡ рд╣реЛрддрд╛. рдореНрд╣рдгреВрди, рдореА рдкреВрд░реНрдг рдЬрдмрд╛рдмрджрд╛рд░реАрдиреЗ рдореНрд╣рдгреВ рд╢рдХрддреЛ рдХреА рдпрд╛ рдХреНрд╖реЗрддреНрд░рд╛рдд рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╡реИрд╢рд┐рд╖реНрдЯреНрдп рдЖрд╣реЗ рдЖрдгрд┐ рдореА рд▓реЗрдЦрд╛рдд рддреНрдпрд╛рд╕ рд╕реНрдкрд░реНрд╢ рди рдХрд░рдгреНрдпрд╛рдЪрд╛ рдкреНрд░рдпрддреНрди рдХрд░реЗрди. рдЬреЗрд╡реНрд╣рд╛ рдорд▓рд╛ рдЦрд░реЛрдЦрд░ рдХрд░рд╛рдпрдЪреЗ рдЕрд╕реЗрд▓, рддреЗрд╡реНрд╣рд╛ рдореА [TBD] рдЯреЕрдЧ рд▓рд╛рд╡реЗрди. рдореНрд╣рдгреВрди рдЖрдореНрд╣реА рд╕рд░рд│ рдЯреНрд░реЛрд▓рд┐рдВрдЧ рдЖрдгрд┐ рд╕рд╛рдорд╛рдиреНрдп рдЖрдХреНрд░реЛрд╢ рди рдХрд░рддрд╛ рдХрд░рдгреНрдпрд╛рдЪрд╛ рдкреНрд░рдпрддреНрди рдХрд░реВ. рд╢реЗрд╡рдЯреА, рд░рд╢рд┐рдпрди рд╕рдВрд░рдХреНрд╖рдг рдЙрджреНрдпреЛрдЧ рдЖрдгрд┐ рд╕рд░рдХрд╛рд░реА рд╕рдВрд╕реНрдерд╛ рд╕рдордЬреВрди рдШреЗрдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ. рдореЛрдард╛ рджреЗрд╢ - рд▓рд╣рд╛рди рдмрдЬреЗрдЯ.. [TBD].
рд╢реВрдиреНрдп рдЯрдкреНрдкрд╛ - рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рд╛. рд╣реЗ рд▓рдХреНрд╖рд╛рдд рдШреЗрдгреНрдпрд╛рд╕рд╛рд░рдЦреЗ рдЖрд╣реЗ рдХреА рдПрд▓реНрдмреНрд░рд╕ рдУрдПрд╕ рдЙрдкрд▓рдмреНрдз рдЭрд╛рд▓реНрдпрд╛рдЪреНрдпрд╛ рдмрд╛рддрдореНрдпрд╛рдВрдореБрд│реЗ рдПрдХ рдЕрдиреБрдирд╛рдж рдЭрд╛рд▓рд╛, рдЗрддрдХрд╛ рдХреА рд╡рд┐рддрд░рдг рд╕рд░реНрд╡реНрд╣рд░ рдбрд╛рдЙрди рдЭрд╛рд▓рд╛. [TBD] Yandex рдЖрдгрд┐ рдЕрднрд┐рдпрдВрддрд╛ рдпрд╛рдВрдирд╛ рдзрдиреНрдпрд╡рд╛рдж рдЬреНрдпрд╛рдВрдиреА рддреЗ рддрд┐рдереЗ рд╣рд▓рд╡рдгреНрдпрд╛рдЪрд╛ рд╡рд┐рдЪрд╛рд░ рдХреЗрд▓рд╛. рддреНрдпрд╛рдореБрд│реЗ рдбрд╛рдЙрдирд▓реЛрдбрдЪрд╛ рд╡реЗрдЧ рдЪрд╛рдВрдЧрд▓рд╛ рдЖрд╣реЗ.
рдкрд╣рд┐рд▓рд╛ рдЯрдкреНрдкрд╛ - рд╕реНрдерд╛рдкрдирд╛. рдореА рддреЗ рдкрд╣рд┐рд▓реНрдпрд╛ рд╣рд╛рдпрдкрд░рд╡рд╛рдЗрдЬрд░рд╡рд░ рд╕реНрдерд╛рдкрд┐рдд рдХреЗрд▓реЗ рдЬреЗ рд╡рд┐рдирд╛рдореВрд▓реНрдп рд╡рд╛рдкрд░рд╛рд╕рд╛рдареА рдЙрдкрд▓рдмреНрдз рд╣реЛрддреЗ. рдореА рджреЛрди рдХреЛрд░ рд╡рд╛рдЯрдк рдХреЗрд▓реЗ, RAM рдЪреЗ рджреЛрди рдЧрд┐рдЧреНрд╕, рд╡реНрд╣рд┐рдбрд┐рдУрд╕рд╛рдареА 32 MB (рддреЗрдереЗ рдПрдХ рдЧреНрд░рд╛рдлрд┐рдХрд▓ рдЗрдВрдЯрд░рдлреЗрд╕ рдЕрд╕реЗрд▓, рдорд▓рд╛ рд╡рд╛рдЯрд▓реЗ). рдбрд┐рд╕реНрдХ рдиреЗрд╣рдореАрдкреНрд░рдорд╛рдгреЗ рдЖрд╣реЗ - 32 рдЬреАрдмреА.
рдореА рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рд╕реБрд░реВ рдХреЗрд▓реЗ. рдореА рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рд╕реВрдЪрдирд╛ рд╡рд╛рдкрд░рд▓реНрдпрд╛ рдирд╛рд╣реАрдд, рдореНрд╣рдгреВрди рдореА рддреНрдпрд╛рд╡рд░ рдЯрд┐рдкреНрдкрдгреА рдХрд░реВ рд╢рдХрдд рдирд╛рд╣реА. TUI рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рдЗрдВрдЯрд░рдлреЗрд╕ рдЕрддреНрдпрдВрдд рдХрдореА рдЖрд╣реЗ.
рдмрд░рдВ, рдЫрд╛рди, рдЖрдореНрд╣реА рдорд╛рдКрд╕рд╢рд┐рд╡рд╛рдп рдХрд░реВ рд╢рдХрддреЛ.
рдореА рджреБрд╕рд▒реНрдпрд╛ рдкреНрд░рдпрддреНрдирд╛рдд рдкреБрдвреАрд▓ рд╡рд┐рдВрдбреЛ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрд┐рдд рдХреЗрд▓реА. рдбрд┐рд╕реНрдХрд╡рд░реВрди рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░рддрд╛рдирд╛ рдбреАрдлреЙрд▓реНрдЯ рдбрд┐рд╡реНрд╣рд╛рдЗрд╕ sr0 [TBD] рдХрд╛ рдирд┐рд╡рдбреВ рдирдпреЗ?
CD-ROM рд╕реНрддреНрд░реЛрдд рдирд┐рд╡рдбрд╛ рдЖрдгрд┐ рдкреБрдвреЗ рдЬрд╛.
рдЯрд╛рдЗрдо рдЭреЛрди рдирд┐рд╡рдбрддрд╛рдирд╛, рдорд▓рд╛ рдЕрдЪрд╛рдирдХ рд▓рдХреНрд╖рд╛рдд рдЖрд▓реЗ рдХреА рд╕рд┐рд╕реНрдЯрдо рдЗрдирд┐рдЯ рдмреВрдЯ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╡рд╛рдкрд░рддреЗ рдЖрдгрд┐ рдореА TTY0 рд╡рд░реВрди рдХрд╛рдо рдХрд░рдд рдЖрд╣реЗ.
рдареАрдХ рдЖрд╣реЗ, рдордЧ "рдПрд▓реНрдмреНрд░рд╕" рдЪреЗ рд╕рдореБрджрд╛рдп рдореНрд╣рдгреВрди рд╡рд░реНрдЧреАрдХрд░рдг рдХрд░реВрдпрд╛
рдмрд╛рдХреАрдЪреЗ рдЬрд╡рд│рдЬрд╡рд│ рдмрд┐рдирдорд╣рддреНрддреНрд╡рд╛рдЪреЗ рдЖрд╣реЗ: рдЖрдореНрд╣реА рд╕рд░реНрд╡рдХрд╛рд╣реА рдареЗрд╡рддреЛ рдЖрдгрд┐ рд╕рд╣рдордд рдЕрд╕рддреЛ. рд╡рд╛рдЯреЗрдд, рдЖрдореНрд╣рд╛рд▓рд╛ рдХрд│рд▓реЗ рдХреА рдХрд░реНрдирд▓ 3.14.79-13.84 рд╡рд╛рдкрд░рд▓рд╛ рдЖрд╣реЗ. рд╣рдореНрдо, рдбреЗрдмрд┐рдпрди 7 рдордзреНрдпреЗ 3.2 [TBD] рд╣реЛрддреЗ.
рдкреБрдвреЗ, рдбрд┐рдлреЙрд▓реНрдЯ рдбрд┐рд╕реНрдХ рд╡рд┐рднрд╛рдЬрди рдирд┐рд╡рдбрд╛ рдЖрдгрд┐... рдЖрдореНрд╣рд╛рд▓рд╛ рдПрдХ рдЪреЗрддрд╛рд╡рдгреА рджрд┐рд╕реЗрд▓:
рд╣рдореНрдо, рдХрд╕рд╛ рддрд░реА рд╕реНрд╡рдпрдВрдЪрд▓рд┐рдд рд╡рд┐рднрд╛рдЬрдирд╛рдиреЗ 32 рдЧрд┐рдЧ рдбрд┐рд╕реНрдХрд╢реА рд╕рд╛рдордирд╛ рдХреЗрд▓рд╛ рдирд╛рд╣реА. рдореА рдбрд┐рд╕реНрдХ рдмрджрд▓рд▓реА рдирд╛рд╣реА; рдореА "рдСрд▓-рдЗрди-рд╡рди" рд╢реИрд▓реАрдордзреНрдпреЗ рдореЕрдиреНрдпреБрдЕрд▓ рдбрд┐рд╕реНрдХ рд╡рд┐рднрд╛рдЬрдирд╛рд╕рд╣ рд╢реЛрдз рдкреВрд░реНрдг рдХреЗрд▓рд╛. рдорд▓рд╛ ext3 рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░рд╛рд╡реЗ рд▓рд╛рдЧрд▓реЗ, рдХрд╛рд░рдг /boot ext4 рдордзреНрдпреЗ рдЕрд╕реВ рд╢рдХрдд рдирд╛рд╣реА.
рдХреЛрдгрддреАрд╣реА рдШрдЯрдирд╛ рди рд╣реЛрддрд╛ рдпрдВрддреНрд░рдгрд╛ рдкреБрдвреЗ рдЖрд▓реА.
рджреБрд╕рд░рд╛ рдЯрдкреНрдкрд╛ - рдкрд░реНрдпрд╛рдп рд╢реЛрдзрд╛.
рджреБрд╕рд░реНтАНрдпрд╛ рдбрд┐рд╕реНрдХрдЪреНрдпрд╛ рд╕рд╛рдореБрдЧреНрд░реАрдЪрд╛ рдЕрднреНрдпрд╛рд╕ рдХреЗрд▓реНрдпрд╛рд╡рд░, рдорд▓рд╛ рд╕рдордЬрд▓реЗ рдХреА рд╣реЗ рдЕрддрд┐рд░рд┐рдХреНрдд рдЕрд╕рд▓реЗрд▓реЗ рднрд╛рдВрдбрд╛рд░ рдЖрд╣реЗ. рдкреЕрдХреЗрдЬреЗрд╕рдордзреНрдпреЗ. рдЖрдгрд┐ /etc/apt/sources.list рд╡рд░ рдкрд╛рд╣рддрд╛рдирд╛ рдорд▓рд╛ рд╕рдордЬрд▓реЗ рдХреА рддреЗ /mnt/cdrom рдордзреНрдпреЗ рдорд╛рдЙрдВрдЯ рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ. рдкрдг рдорд▓рд╛ /etc/os-release рд╕рд╛рдкрдбрд▓реЗ рдирд╛рд╣реА. рдкрд░рдВрддреБ рд╕рд╛рдордЧреНрд░реА 3.0-rc36 рд╕рд╣ /etc/mcst-рдЖрд╡реГрддреНрддреА рдЖрд╣реЗ. 3.0 рд╣реА рдХрджрд╛рдЪрд┐рдд рдЖрд╡реГрддреНрддреА рдЖрд╣реЗ - рддреА рдмрд╕рддреЗ рдЕрд╕реЗ рджрд┐рд╕рддреЗ, рдкрд░рдВрддреБ rc36? рд╕рд░реНрд╡рд╕рд╛рдзрд╛рд░рдгрдкрдгреЗ, рддреГрддреАрдп-рдкрдХреНрд╖ рд╕реЙрдлреНрдЯрд╡реЗрдЕрд░ рдмрд╣реБрдзрд╛ рд╣реЗ рд╡рд┐рддрд░рдг рд╢рд╛рд╕реНрддреНрд░реАрдп рдкрджреНрдзрддреАрдиреЗ рдУрд│рдЦреВ рд╢рдХрдгрд╛рд░ рдирд╛рд╣реА.
рд░реВрдЯ рд╡рд┐рднрд╛рдЬрдирд╛рдордзреНрдпреЗ, /mcst рдбрд┐рд░реЗрдХреНрдЯреНрд░реАрдиреЗ рдорд╛рдЭреЗ рд▓рдХреНрд╖ рд╡реЗрдзрд▓реЗ, рдЖрдгрд┐ рддреЗрдереЗ, рдмреБрдбрддреНрдпрд╛ рд╣реГрджрдпрд╛рдиреЗ, рдорд▓рд╛ /mcst/backup рд╕рд╛рдкрдбрд▓рд╛. рдореНрд╣рдгрдЬреЗрдЪ, рдПрдХ рдмреЕрдХрдЕрдк рд╕рд╛рдзрди рдЖрд╣реЗ рдЖрдгрд┐ рддреЗ рд╕рд┐рд╕реНрдЯрдордордзреНрдпреЗ рдЕрдВрдЧрднреВрдд рдЖрд╣реЗ! "рдЫрд╛рди," рдореА рд╡рд┐рдЪрд╛рд░ рдХреЗрд▓рд╛, "рд╣реЗ рдХрд╕реЗ рдХрд╛рд░реНрдп рдХрд░рддреЗ рддреЗ рдкрд╛рд╣реВрдпрд╛!"
рдЕрд╕реЗ рджрд┐рд╕реВрди рдЖрд▓реЗ рдХреА 4Kb рдмреЕрд╢ рд╕реНрдХреНрд░рд┐рдкреНрдЯ /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
рдЬрд░реА, рдХрджрд╛рдЪрд┐рдд рдорд▓рд╛ рдХрд╛рд╣реАрддрд░реА рд╕рдордЬрд▓реЗ рдирд╛рд╣реА? рдХрджрд╛рдЪрд┐рдд рдХреЛрдгреАрддрд░реА рдЯрд┐рдкреНрдкрдгреНрдпрд╛рдВрдордзреНрдпреЗ рд╕реНрдкрд╖реНрдЯ рдХрд░реВ рд╢рдХреЗрд▓: рд╣реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реБрд░рдХреНрд╖рд┐рдд рдЖрдгрд┐ рд╡рд┐рд╢реНрд╡рд╛рд╕рд╛рд░реНрд╣ рдбреЗрдЯрд╛ рдмреЕрдХрдЕрдк рдХрд╢реА рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддреЗ? [TBD]
rsync, рддрд╕реЗ, рдНрдб-рдСрди рдордзреНрдпреЗ рд╕рдорд╛рд╡рд┐рд╖реНрдЯ рдЖрд╣реЗ. рднрд╛рдВрдбрд╛рд░. рдЖрд╡реГрддреНрддреА рей.рез.рей. рдорд▓рд╛ рд╡рд╛рдЯрддрдВ /mcst/bin/backup рдНрдкреНрд▓рд┐рдХреЗрд╢рдирд╕рд╛рдареА rsync рд╡рд╛рдкрд░рдгреЗ рд╣рд╛ рдЕрдЬреВрди рдЪрд╛рдВрдЧрд▓рд╛ рдкрд░реНрдпрд╛рдп рдЖрд╣реЗ.
рдкреБрдвреЗ, рдореА рдПрдХ рдирд╡реАрди рдареЗрд╡рдгреНрдпрд╛рдЪрд╛ рдирд┐рд░реНрдгрдп рдШреЗрддрд▓рд╛ рд▓рд┐рдирдХреНрд╕рд╕рд╛рдареА рд╡реАрдо рдПрдЬрдВрдЯ. рдХреЛрдгреАрддрд░реА рд╡рд┐рдЪрд╛рд░реЗрд▓: "рд╡реАрдо рдЖрдгрд┐ рдЖрдпрд╛рдд рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрдирд╛рдЪрд╛ рддреНрдпрд╛рдЪреНрдпрд╛рд╢реА рдХрд╛рдп рд╕рдВрдмрдВрдз рдЖрд╣реЗ?" рд╣реЛрдп, рддреЗ рд░рдЬрд┐рд╕реНрдЯрд░рдордзреНрдпреЗ рдирд╛рд╣реА, рдкрд░рдВрддреБ рддреЗ FSTEC рджреНрд╡рд╛рд░реЗ рдкреНрд░рдорд╛рдгрд┐рдд рдЖрд╣реЗ, рдпрд╛рдЪрд╛ рдЕрд░реНрде рдкрд░реНрдпрд╛рдпрд╛рдВрдЪреНрдпрд╛ рдЕрдиреБрдкрд╕реНрдерд┐рддреАрдд рддреЗ рд╡рд╛рдкрд░рд▓реЗ рдЬрд╛рдК рд╢рдХрддреЗ. рдкрд╛рд╕реВрди рдкрд░реНрдпрд╛рдпреА рдкрдВрдзрд░рд╛ рдорд┐рдирд┐рдЯреЗ рдЦрд░реНрдЪ
рд╕реНрдЯреЗрдЬ рддреАрди - рд▓рд┐рдирдХреНрд╕рд╕рд╛рдареА рд╡реАрдо рдПрдЬрдВрдЯрдЪреА рд╕реНрдерд╛рдкрдирд╛.
рддрд░, рд▓рд┐рдирдХреНрд╕рд╕рд╛рдареА рд╡реАрдо рдПрдЬрдВрдЯрдордзреНрдпреЗ рджреЛрди рдкреЕрдХреЗрдЬреЗрд╕ рдЕрд╕рддрд╛рдд: рд╡реАрдореНрд╕рдиреЕрдк рдХрд░реНрдирд▓ рдореЙрдбреНрдпреВрд▓ (рддрд╕реЗ,
рдХрд░реНрдирд▓ рдореЙрдбреНрдпреВрд▓ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддрд╛рдирд╛ рдПрдХ рдЫреЛрдЯреА рд╕рдорд╕реНрдпрд╛ рд╣реЛрддреА - рдЧрд╣рд╛рд│ dkms рдкреЕрдХреЗрдЬ. рд╣реА рдПрдХ рд╕реЗрд╡рд╛ рдЖрд╣реЗ рдЬреА рддреБрдореНрд╣рд╛рд▓рд╛ рд╕реНрддреНрд░реЛрддрд╛рдкрд╛рд╕реВрди рдХрд░реНрдирд▓ рдореЙрдбреНрдпреВрд▓ рддрдпрд╛рд░ рдХрд░рдгреНрдпрд╛рд╕ рдкрд░рд╡рд╛рдирдЧреА рджреЗрддреЗ. рдирд┐рдпрдорд╛рдиреБрд╕рд╛рд░, рддреЗ рд╕рд░реНрд╡ рдбреЗрдм рд╡рд┐рддрд░рдгрд╛рдВрд╡рд░ рдЙрдкрд▓рдмреНрдз рдЖрд╣реЗ. рдорд▓рд╛ рддреЗ рдерд░реНрдб-рдкрд╛рд░реНрдЯреА рдбреЗрдм рд░рд┐рдкреЙрдЬрд┐рдЯрд░реАрдордзреВрди рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рд╛рд╡реЗ рд▓рд╛рдЧрд▓реЗ. рдорд▓рд╛ рдЖрдирдВрдж рджреЗрдгрд╛рд░реА рдПрдХ рдЧреЛрд╖реНрдЯ рдЕрд╢реА рдЖрд╣реЗ рдХреА рдкреЕрдХреЗрдЬ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░рд╡рд░ рдЕрд╡рд▓рдВрдмреВрди рдирд╛рд╣реА, рдореНрд╣рдгреВрди рддреЗ рдореВрд│рд╕рд╛рд░рдЦреЗрдЪ рдмрд╕рддреЗ. рддреЗ рдЙрдкрд▓рдмреНрдз рдкреЕрдХреЗрдЬреЗрд╕рдЪреНрдпрд╛ рдпрд╛рджреАрдордзреНрдпреЗ рдХрд╛ рд╕рдорд╛рд╡рд┐рд╖реНрдЯ рдХреЗрд▓реЗ рдЧреЗрд▓реЗ рдирд╛рд╣реА рдХрд┐рдВрд╡рд╛ рддреНрдпрд╛рдРрд╡рдЬреА рд╡рд┐рдХрд╕рд┐рдд рдХреЗрд▓реЗ рдЧреЗрд▓реЗ рдирд╛рд╣реА [TBD]? рдХрджрд╛рдЪрд┐рдд рдЕрд╕реЗ рдЧреГрд╣реАрдд рдзрд░рд▓реЗ рдЬрд╛рддреЗ рдХреА рдХреЛрдгреАрд╣реА рдПрдорд╕реАрдПрд╕рдЯреА рдирд╕рд▓реЗрд▓реЗ рдХрд░реНрдирд▓ рдореЙрдбреНрдпреВрд▓ рддрдпрд╛рд░ рдХрд░реВ рдирдпреЗ рдЖрдгрд┐ рдЪрд╛рд▓рд╡реВ рдирдпреЗ. рдпреЗрдереЗ рдЦрд░реЛрдЦрд░ рдПрдХ рд╡рд┐рд╕рдВрдЧрддреА рдЖрд╣реЗ - рдХрд╛рд░рдг рддреЗрдереЗ рд▓рд┐рдирдХреНрд╕-рд╣реЗрдбрд░ рдЖрд╣реЗрдд. рдореНрд╣рдгрдЬреЗрдЪ, рдореЙрдбреНрдпреВрд▓, рдЗрдЪреНрдЫрд┐рдд рдЕрд╕рд▓реНрдпрд╛рд╕, рд╣рд╛рддрд╛рдиреЗ рдПрдХрддреНрд░ рдХреЗрд▓реЗ рдЬрд╛рдК рд╢рдХрддреЗ рдЖрдгрд┐ рдорд╢реАрди рд╕реБрд░реВ рдЭрд╛рд▓реНрдпрд╛рд╡рд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯрджреНрд╡рд╛рд░реЗ рд▓реЙрдиреНрдЪ рдХреЗрд▓реЗ рдЬрд╛рдК рд╢рдХрддреЗ. рдорд▓рд╛ рд╡рд╛рдЯрддреЗ рдХреА рддреБрдореНрд╣реА MCST [TBD] рдХрдбреВрди рд╡рд╛рд░рдВрд╡рд╛рд░ рдЕрдкрдбреЗрдЯреНрд╕рдЪреА рдЕрдкреЗрдХреНрд╖рд╛ рдХрд░реВ рдирдпреЗ.
"рдареАрдХ рдЖрд╣реЗ, рдореЙрдбреНрдпреВрд▓ рд╕реНрдерд╛рдкрд┐рдд рдХреЗрд▓реЗ рдЖрд╣реЗ - рд╕рд░реНрд╡рд╛рдд рдХрдареАрдг рднрд╛рдЧ рд╕рдВрдкрд▓рд╛ рдЖрд╣реЗ," рдорд▓рд╛ рд╡рд╛рдЯрд▓реЗ... рдбреЗрдм рд░реЗрдкреЙрдЬрд┐рдЯрд░реАрд╕рд╛рдареА рд╡реАрдо рдкреЕрдХреЗрдЬ amd64 рдкреНрд▓реЕрдЯрдлреЙрд░реНрдорд╕рд╛рдареА рдЖрд╣реЗ рдЖрдгрд┐ Elbrus OS рдордзреНрдпреЗ x86_64 [TBD] рдкреНрд▓реЕрдЯрдлреЙрд░реНрдо рдЖрд╣реЗ. рдлрд░рдХ, рдЕрд░реНрдерд╛рддрдЪ, рдлрдХреНрдд рдирд╛рд╡рд╛рдд рдЖрд╣реЗ, рдкрд░рдВрддреБ рд╣рд╛ рдлрд░рдХ рддреГрддреАрдп-рдкрдХреНрд╖ рдбреЗрдм рд░реЗрдкреЙрдЬрд┐рдЯрд░реАрдЬрдордзреАрд▓ рдЬрд╡рд│рдЬрд╡рд│ рд╕рд░реНрд╡ рдкреЕрдХреЗрдЬреЗрд╕ 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 рдлрд╛рдЗрд▓рдордзреНрдпреЗ [TBD] рдлрд╛рдЗрд▓рдЪреНрдпрд╛ рд╕реБрд░реБрд╡рд╛рддреАрд▓рд╛ тАЬ# Source SuSEтАЩs rc functionsтАЭ рд╣реА рдУрд│ рдЖрд╣реЗ.
рдлрд╛рдЗрд▓рд╕рд╣ рдкреЕрдХреЗрдЬрдЪреНрдпрд╛ рдЕрд╢рд╛ рдвреЛрдмрд│ рдкреНрд░рдХреНрд░рд┐рдпреЗрдирдВрддрд░, NFS рд╢реЗрдЕрд░рд╡рд░ рд╕рдВрдкреВрд░реНрдг-рдорд╢реАрди рдмреЕрдХрдЕрдк рдпрд╢рд╕реНрд╡реАрд░рд┐рддреНрдпрд╛ рд▓рд╛рдБрдЪ рдХреЗрд▓реЗ рдЧреЗрд▓реЗ. рдмреЕрдХрдЕрдк рдорд╛рдЙрдВрдЯ рджреЗрдЦреАрд▓ рдпрд╢рд╕реНрд╡реА рдЭрд╛рд▓реЗ. рдореНрд╣рдгреВрди, рдорд╛рдЭрд╛ рд╡рд┐рд╢реНрд╡рд╛рд╕ рдЖрд╣реЗ рдХреА рдПрд▓реНрдмреНрд░рд╕ рдкреАрдбреАрдХреЗрд╕рд╣ рдорд╢реАрдирдЪрд╛ рдмреЕрдХрдЕрдк рдШреЗрдгреНрдпрд╛рд╕рд╛рдареА, рдХреЛрдгрддреНрдпрд╛рд╣реА рдмрдВрдзрдирд╛рд╢рд┐рд╡рд╛рдп рдбрд╛рдЙрдирд▓реЛрдб рдХреЗрд▓реЗрд▓реЗ "рдЕрд╕реЗрдЪ" рд▓рд┐рдирдХреНрд╕рд╕рд╛рдареА рд╡реАрдо рдПрдЬрдВрдЯ рдирд┐рд╢реНрдЪрд┐рддрдкрдгреЗ рдпреЛрдЧреНрдп рдЖрд╣реЗ. рдлрд╛рдИрд▓рд╕рд╣ рд╕рд░реНрд╡ рдмрджрд▓ рдХреЗрд▓реНрдпрд╛рдирдВрддрд░рд╣реА.
рдЕрд░реНрдерд╛рдд, рдПрд▓реНрдмреНрд░рд╕ рдУрдПрд╕ рдбрд┐рд╕реНрдЯреНрд░рд┐рдмреНрдпреБрд╢рди рдХрд┐рдЯ рдФрдкрдЪрд╛рд░рд┐рдХрдкрдгреЗ рд╕рдорд░реНрдерд┐рдд рдирд╛рд╣реА, рдХрд╛рд░рдг рддреЗ рд╕рдорд░реНрдерд┐рдд рдЕрд╕рд▓реЗрд▓реНрдпрд╛рдВрдЪреНрдпрд╛ рдпрд╛рджреАрдордзреНрдпреЗ рд╕рдорд╛рд╡рд┐рд╖реНрдЯ рдХреЗрд▓реЗрд▓реЗ рдирд╛рд╣реА. рдпрд╛рд╡реНрдпрддрд┐рд░рд┐рдХреНрдд, рд▓рд┐рдирдХреНрд╕рд╕рд╛рдареА рд╡реАрдо рдПрдЬрдВрдЯрдЪреА QA рд╡рд┐рднрд╛рдЧрд╛рджреНрд╡рд╛рд░реЗ рдЪрд╛рдЪрдгреА рдХреЗрд▓реА рдЧреЗрд▓реА рдирд╛рд╣реА, рдореНрд╣рдгреВрди рддреНрдпрд╛. рдХреЛрдгрддреЗрд╣реА рд╕рдорд░реНрдерди рдирд╛рд╣реА (рдирд┐рджрд╛рди рд▓реЗрдЦрд╛рдЪреНрдпрд╛ рдкреНрд░рдХрд╛рд╢рдирд╛рдЪреНрдпрд╛ рд╡реЗрд│реА).
рдорд▓рд╛ рдЖрд╢рд╛ рдЖрд╣реЗ рдХреА рдЬреЗ 334 рдЬреВрди 29.06.2017 рдЪреНрдпрд╛ рдСрд░реНрдбрд░ рдХреНрд░рдорд╛рдВрдХ XNUMX рдЪреА рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреА рдХрд░рдгреНрдпрд╛рдЪрд╛ рдкреНрд░рдпрддреНрди рдХрд░рдд рдЖрд╣реЗрдд рддреНрдпрд╛рдВрдЪреНрдпрд╛рд╕рд╛рдареА рд╣рд╛ рд▓реЗрдЦ рдЙрдкрдпреБрдХреНрдд рдард░реЗрд▓. рдорд╛рдЭреЗ рддреБрдордЪреНрдпрд╛рд╕рд╛рдареА... [TBD].
рд╕реНрддреНрд░реЛрдд: www.habr.com