рд╕рдмреИрд▓рд╛рдИ рдирдорд╕реНрдХрд╛рд░ред
Habr├й рдорд╛ рднрд░реНрдЦрд░рдХрд╛ рд▓реЗрдЦрд╣рд░реВ
рд╕рдмреИрднрдиреНрджрд╛ рдкрд╣рд┐рд▓реЗ, рдореИрд▓реЗ Elbrus OS рдбрд╛рдЙрдирд▓реЛрдб рдЧрд░реНрдиреЗ рдирд┐рд░реНрдгрдп рдЧрд░реЗрдВ, рд╡рд╛ рдмрд░реБ, x86_64 рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░рдХреЛ рд▓рд╛рдЧрд┐ рдорд╛рддреНрд░ рдЙрдкрд▓рдмреНрдз рд╡рд┐рддрд░рдг, рд╣реЗрд░реНрдиреБрд╣реЛрд╕реН рдпрд╕рд▓реЗ рдХрд╕рд░реА рдХрд╛рдо рдЧрд░реНрджрдЫ, рд░ рдпрд╕рдорд╛ рд▓рд┐рдирдХреНрд╕рдХреЛ рд▓рд╛рдЧрд┐ Veeam рдПрдЬреЗрдиреНрдЯ рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрдиреЗ рдкреНрд░рдпрд╛рд╕ рдЧрд░реНрдиреБрд╣реЛрд╕реНред рдпрд╕рдмрд╛рдЯ рдХреЗ рднрдпреЛ рдЬрд╛рдиреНрди рдЪрд╛рд╣рдиреБрд╣реБрдиреНрдЫ рднрдиреЗ, рдмрд┐рд░рд╛рд▓реЛ рд╣реЗрд░реНрдиреБрд╣реЛрд╕реНред
рддреНрдпрд╕реЛрднрдП, рдПрдЙрдЯрд╛ рд╕рд╛рдиреЛ рдбрд┐рдЧреНрд░реЗрд╢рди, рдпрджрд┐ рдХрд╕реИрд▓рд╛рдИ рдерд╛рд╣рд╛ рдЫреИрдиред "Elbrus" рдпрд╕реНрддреИ рдЫ
рдЕрд░реНрдХреЛ рд╕рд╛рдиреЛ рдЬрдмрд░рдЬрд╕реНрддреА рд░рд┐рдЯреНрд░реАрдЯред рддрдереНрдп рдпреЛ рд╣реЛ рдХрд┐ рдореИрд▓реЗ рдПрдХ рдкрдЯрдХ рдШрд░реЗрд▓реБ рд╕рдлреНрдЯрд╡реЗрдпрд░, рдЬрд╕реНрддреИ MSVS рд░ Baguette RTOS рд╕рдБрдЧ рд╡реНрдпрд╡рд╣рд╛рд░ рдЧрд░реЗрдВред рдорд╕рдБрдЧ MCST рдмрд╛рдЯ рдкреНрд░реЛрд╕реЗрд╕рд░ рд╕рд╣рд┐рдд рдШрд░реЗрд▓реБ рдХрдореНрдкреЛрдиреЗрдиреНрдЯрд╣рд░реВрд╕рдБрдЧ рдХрд╛рдо рдЧрд░реНрдиреЗ рдЕрдиреБрднрд╡ рдерд┐рдпреЛред рддреНрдпрд╕рдХрд╛рд░рдг, рдо рдкреВрд░реНрдг рдЬрд┐рдореНрдореЗрд╡рд╛рд░реАрдХрд╛ рд╕рд╛рде рднрдиреНрди рд╕рдХреНрдЫреБ рдХрд┐ рдпрд╕ рдХреНрд╖реЗрддреНрд░рдорд╛ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╡рд┐рд╢рд┐рд╖реНрдЯрддрд╛ рдЫ рд░ рдо рд▓реЗрдЦрдорд╛ рдпрд╕рд▓рд╛рдИ рдЫреБрдиреЗ рдкреНрд░рдпрд╛рд╕ рдЧрд░реНрдиреЗрдЫреБред рдЬрдм рдо рд╕рд╛рдБрдЪреНрдЪреИ рдЪрд╛рд╣рдиреНрдЫреБ, рдо рдЯреНрдпрд╛рдЧ [TBD] рд░рд╛рдЦреНрдиреЗрдЫреБред рддреНрдпрд╕реЛрднрдП рд╣рд╛рдореА рд╕реНрдкрд╖реНрдЯ рдЯреНрд░реЛрд▓рд┐рдЩ рд░ рд╕рд╛рдзрд╛рд░рдг рд╡рд┐рд▓рд╛рдк рдмрд┐рдирд╛ рдЧрд░реНрдиреЗ рдкреНрд░рдпрд╛рд╕ рдЧрд░реНрдиреЗрдЫреМрдВред рдЕрдиреНрддрдорд╛, рд░реВрд╕реА рд░рдХреНрд╖рд╛ рдЙрджреНрдпреЛрдЧ рд░ рд╕рд░рдХрд╛рд░реА рдПрдЬреЗрдиреНрд╕реАрд╣рд░реВ рдмреБрдЭреНрди рдЖрд╡рд╢реНрдпрдХ рдЫред рдареВрд▓реЛ рджреЗрд╢ - рд╕рд╛рдиреЛ рдмрдЬреЗрдЯ.. [TBD]ред
рд╢реВрдиреНрдп рдЪрд░рдг - рдбрд╛рдЙрдирд▓реЛрдб рдЧрд░реНрдиреБрд╣реЛрд╕реНред рдпреЛ рдЙрд▓реНрд▓реЗрдЦрдиреАрдп рдЫ рдХрд┐ Elbrus OS рдЙрдкрд▓рдмреНрдз рднрдПрдХреЛ рд╕рдорд╛рдЪрд╛рд░рд▓реЗ рдПрдХ рдкреНрд░рддрд┐рдзреНрд╡рдирд┐ рдирд┐рдореНрддреНрдпрд╛рдпреЛ, рдпрддрд┐ рдзреЗрд░реИ рдХрд┐ рд╡рд┐рддрд░рдг рд╕рд░реНрднрд░ рддрд▓ рдЧрдпреЛред [TBD] Yandex рд░ рдЗрдиреНрдЬрд┐рдирд┐рдпрд░рд▓рд╛рдИ рдзрдиреНрдпрд╡рд╛рдж рдЬрд╕рд▓реЗ рдпрд╕рд▓рд╛рдИ рддреНрдпрд╣рд╛рдБ рд╕рд╛рд░реНрди рд╕реЛрдЪреНрдпреЛред рддреНрдпрд╕реИрд▓реЗ рдбрд╛рдЙрдирд▓реЛрдб рдЧрддрд┐ рд░рд╛рдореНрд░реЛ рдЫред
рдкрд╣рд┐рд▓реЛ рдЪрд░рдг - рд╕реНрдерд╛рдкрдирд╛ред рдореИрд▓реЗ рдпрд╕рд▓рд╛рдИ рдкрд╣рд┐рд▓реЛ рд╣рд╛рдЗрдкрд░рд╡рд╛рдЗрдЬрд░рдорд╛ рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реЗрдВ рдЬреБрди рдирд┐: рд╢реБрд▓реНрдХ рдкреНрд░рдпреЛрдЧрдХреЛ рд▓рд╛рдЧрд┐ рдЙрдкрд▓рдмреНрдз рдерд┐рдпреЛред рдореИрд▓реЗ рджреБрдИ рдХреЛрд░, RAM рдХреЛ рдПрдХ рдЬреЛрдбреА, 32 MB рднрд┐рдбрд┐рдпреЛрдХреЛ рд▓рд╛рдЧрд┐ рдЖрд╡рдВрдЯрд┐рдд рдЧрд░реЗ (рддреНрдпрд╣рд╛рдБ рдПрдХ рдЧреНрд░рд╛рдлрд┐рдХрд▓ рдЗрдиреНрдЯрд░рдлреЗрд╕ рд╣реБрдиреЗрдЫ, рдореИрд▓реЗ рд╕реЛрдЪреЗ)ред рдбрд┐рд╕реНрдХ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдкрдорд╛ рдЫ - 32 рдЬреАрдмреАред
рдореИрд▓реЗ рд╕реНрдерд╛рдкрдирд╛ рд╕реБрд░реБ рдЧрд░реЗрдВред рдореИрд▓реЗ рд╕реНрдерд╛рдкрдирд╛ рдирд┐рд░реНрджреЗрд╢рдирд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рди, рддреНрдпрд╕реИрд▓реЗ рдо рдпрд╕рдорд╛ рдЯрд┐рдкреНрдкрдгреА рдЧрд░реНрди рд╕рдХреНрджрд┐рдиред TUI рд╕реНрдерд╛рдкрдирд╛ рдЗрдиреНрдЯрд░рдлреЗрд╕ рдЧрдореНрднреАрд░ рд░реВрдкрдорд╛ рдиреНрдпреВрдирддрдо рдЫред
рдареАрдХ рдЫ, рд░рд╛рдореНрд░реЛ, рд╣рд╛рдореА рдорд╛рдЙрд╕ рдмрд┐рдирд╛ рдЧрд░реНрди рд╕рдХреНрдЫреМрдВред
рдореИрд▓реЗ рджреЛрд╕реНрд░реЛ рдкреНрд░рдпрд╛рд╕рдорд╛ рдЕрд░реНрдХреЛ рд╡рд┐рдиреНрдбреЛ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди рдЧрд░реЗрдВред рдХрд┐рди рдбрд┐рд╕реНрдХрдмрд╛рдЯ рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрджрд╛ рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдЙрдкрдХрд░рдг sr0 [TBD] рдЪрдпрди рдирдЧрд░реНрдиреЗ?
CD-ROM рд╕реНрд░реЛрдд рдЪрдпрди рдЧрд░реНрдиреБрд╣реЛрд╕реН рд░ рдЕрдЧрд╛рдбрд┐ рдмрдвреНрдиреБрд╣реЛрд╕реНред
рд╕рдордп рдХреНрд╖реЗрддреНрд░ рдЪрдпрди рдЧрд░реНрджрд╛, рдореИрд▓реЗ рдЕрдЪрд╛рдирдХ рдорд╣рд╕реБрд╕ рдЧрд░реЗрдВ рдХрд┐ рдкреНрд░рдгрд╛рд▓реАрд▓реЗ init рдмреБрдЯ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджрдЫ, рд░ рдо TTY0 рдмрд╛рдЯ рдХрд╛рдо рдЧрд░реНрджреИрдЫреБред
рдареАрдХ рдЫ, рддреНрдпрд╕рдкрдЫрд┐ рд╕рдореБрджрд╛рдпрдХреЛ рд░реВрдкрдорд╛ "Elbrus" рд╡рд░реНрдЧреАрдХрд░рдг рдЧрд░реМрдВ
рдмрд╛рдБрдХреА рд▓рдЧрднрдЧ рдорд╣рддреНрд╡рд╣реАрди рдЫ: рд╣рд╛рдореА рд╕рдмреИ рд░рд╛рдЦреНрдЫреМрдВ рд░ рд╕рд╣рдордд рдЫреМрдВред рдмрд╛рдЯреЛрдорд╛, рд╣рд╛рдореАрд▓реЗ рдкрддреНрддрд╛ рд▓рдЧрд╛рдпреМрдВ рдХрд┐ рдХрд░реНрдиреЗрд▓ 3.14.79-13.84 рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдПрдХреЛ рдЫред рд╣рдореНрдо, рдбреЗрдмрд┐рдпрди рен рдорд╛ рей.реи [TBD] рдерд┐рдпреЛред
рдЕрд░реНрдХреЛ, рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдбрд┐рд╕реНрдХ рд╡рд┐рднрд╛рдЬрди рдЪрдпрди рдЧрд░реНрдиреБрд╣реЛрд╕реН рд░... рд╣рд╛рдореА рдПрдХ рдЪреЗрддрд╛рд╡рдиреА рджреЗрдЦреНрдЫреМрдВ:
рд╣рдореНрдо, рдХреБрдиреИ рдкрдирд┐ рддрд░рд┐рдХрд╛рд▓реЗ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд╡рд┐рднрд╛рдЬрдирд▓реЗ 32 рдЧрд┐рдЧ рдбрд┐рд╕реНрдХрд╕рдБрдЧ рд░рд╛рдореНрд░реЛрд╕рдБрдЧ рд╕рд╛рдордирд╛ рдЧрд░реНрди рд╕рдХреЗрдиред рдореИрд▓реЗ рдбрд┐рд╕реНрдХ рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░рд┐рди; рдореИрд▓реЗ "рд╕рдмреИ-рдорд╛-рдПрдХ" рд╢реИрд▓реАрдорд╛ рдореНрдпрд╛рдиреБрдЕрд▓ рдбрд┐рд╕реНрдХ рд╡рд┐рднрд╛рдЬрдирдХреЛ рд╕рд╛рде рдЦреЛрдЬ рдкреВрд░рд╛ рдЧрд░реЗрдВред рдореИрд▓реЗ ext3 рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрдиреБрдкрд░реНтАНрдпреЛ, рдХрд┐рдирдХрд┐ /boot 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/рдмреНрдпрд╛рдХрдЕрдк рдбрд╛рдЗрд░реЗрдХреНрдЯрд░реАрдорд╛ред рд╕реНрд░реЛрдд рдХреЛрдбрдорд╛ рдореИрд▓реЗ 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, рд╡реИрд╕реЗ, add-on рдорд╛ рд╕рдорд╛рд╡реЗрд╢ рдЫред рднрдгреНрдбрд╛рд░рд╣рд░реВред рд╕рдВрд╕реНрдХрд░рдг рей.рез.рейред рдорд▓рд╛рдИ рд▓рд╛рдЧреНрдЫ рдХрд┐ rsync рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБ рдЕрдЭреИ рдкрдирд┐ /mcst/bin/backup рдЕрдиреБрдкреНрд░рдпреЛрдЧрдХреЛ рд▓рд╛рдЧрд┐ рд░рд╛рдореНрд░реЛ рд╡рд┐рдХрд▓реНрдк рд╣реЛред
рдЕрд░реНрдХреЛ, рдореИрд▓реЗ рдирдпрд╛рдБ рд░рд╛рдЦреНрдиреЗ рдирд┐рд░реНрдгрдп рдЧрд░реЗрдВ рд▓рд┐рдирдХреНрд╕ рдХреЛ рд▓рд╛рдЧреА Veeam рдПрдЬреЗрдиреНрдЯред рдХрд╕реИрд▓реЗ рд╕реЛрдзреНрдиреЗрдЫ: "Veam рд░ рдЖрдпрд╛рдд рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрдирд╕рдБрдЧ рдХреЗ рд╕рдореНрдмрдиреНрдз рдЫ?" рд╣реЛ, рдпреЛ рджрд░реНрддрд╛рдорд╛ рдЫреИрди, рддрд░ рдпреЛ FSTEC рджреНрд╡рд╛рд░рд╛ рдкреНрд░рдорд╛рдгрд┐рдд рдЫ, рдЬрд╕рдХреЛ рдорддрд▓рдм рдпреЛ рд╡рд┐рдХрд▓реНрдкрдХреЛ рдЕрднрд╛рд╡рдорд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫред рдмрд╛рдЯ рд╡рд┐рдХрд▓реНрдк рдорд╛ рдкрдиреНрдзреНрд░ рдорд┐рдиреЗрдЯ рдЦрд░реНрдЪ
рдЪрд░рдг рддреАрди - рд▓рд┐рдирдХреНрд╕ рдХреЛ рд▓рд╛рдЧреА Veeam рдПрдЬреЗрдиреНрдЯ рдХреЛ рд╕реНрдерд╛рдкрдирд╛ред
рддреНрдпрд╕реЛрднрдП, рд▓рд┐рдирдХреНрд╕рдХрд╛ рд▓рд╛рдЧрд┐ Veeam рдПрдЬреЗрдиреНрдЯрд▓реЗ рджреБрдИ рдкреНрдпрд╛рдХреЗрдЬрд╣рд░реВ рд╕рдорд╛рд╡реЗрд╢ рдЧрд░реНрджрдЫ: veeamsnap рдХрд░реНрдиреЗрд▓ рдореЛрдбреНрдпреБрд▓ (рдпрд╕реИрд▓реЗ,
рдХрд░реНрдиреЗрд▓ рдореЛрдбреНрдпреБрд▓ рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрджрд╛ рдПрдЙрдЯрд╛ рд╕рд╛рдиреЛ рд╕рдорд╕реНрдпрд╛ рдерд┐рдпреЛ - рд╣рд░рд╛рдПрдХреЛ dkms рдкреНрдпрд╛рдХреЗрдЬред рдпреЛ рдПрдХ рд╕реЗрд╡рд╛ рд╣реЛ рдЬрд╕рд▓реЗ рддрдкрд╛рдИрдВрд▓рд╛рдИ рд╕реНрд░реЛрддрдмрд╛рдЯ рдХрд░реНрдиреЗрд▓ рдореЛрдбреНрдпреБрд▓рд╣рд░реВ рдирд┐рд░реНрдорд╛рдг рдЧрд░реНрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫред рдПрдХ рдирд┐рдпрдо рдХреЛ рд░реВрдк рдорд╛, рдпреЛ рд╕рдмреИ deb рд╡рд┐рддрд░рдг рдорд╛ рдЙрдкрд▓рдмреНрдз рдЫред рдореИрд▓реЗ рдпрд╕рд▓рд╛рдИ рддреЗрд╕реНрд░реЛ-рдкрдХреНрд╖ рдбреЗрдм рднрдгреНрдбрд╛рд░рдмрд╛рдЯ рдбрд╛рдЙрдирд▓реЛрдб рдЧрд░реНрдиреБрдкрд░реНтАНрдпреЛред рдПрдЙрдЯрд╛ рдХреБрд░рд╛рд▓реЗ рдорд▓рд╛рдИ рдЦреБрд╕реА рдмрдирд╛рдпреЛ рдХрд┐ рдкреНрдпрд╛рдХреЗрдЬ рд╡рд╛рд╕реНрддреБрдХрд▓рд╛рдорд╛ рдирд┐рд░реНрднрд░ рдЧрд░реНрджреИрди, рддреНрдпрд╕реИрд▓реЗ рдпреЛ рдПрдХ рджреЗрд╢реА рдЬрд╕реНрддреИ рдлрд┐рдЯ рд╣реБрдиреНрдЫред рдХрд┐рди рдпреЛ рдЙрдкрд▓рдмреНрдз рдкреНрдпрд╛рдХреЗрдЬрд╣рд░реВрдХреЛ рд╕реВрдЪреАрдорд╛ рд╕рдорд╛рд╡реЗрд╢ рдЧрд░рд┐рдПрди, рд╡рд╛ рдмрд░реБ, [TBD] рд╡рд┐рдХрд╕рд┐рдд рднрдПрди? рд╕рд╛рдпрдж рдпреЛ рдорд╛рдирд┐рдиреНрдЫ рдХрд┐ рдХрд╕реИрд▓реЗ рдкрдирд┐ рдЧреИрд░-MCST рдХрд░реНрдиреЗрд▓ рдореЛрдбреНрдпреБрд▓рд╣рд░реВ рдирд┐рд░реНрдорд╛рдг рд░ рдЪрд▓рд╛рдЙрдиреБ рд╣реБрдБрджреИрдиред рддреНрдпрд╣рд╛рдБ рд╕рд╛рдБрдЪреНрдЪреИ рдпрд╣рд╛рдБ рдПрдХ рд╡рд┐рд╕рдВрдЧрддрд┐ рдЫ - рдХрд┐рдирдХрд┐ рддреНрдпрд╣рд╛рдБ рд▓рд┐рдирдХреНрд╕-рд╣реЗрдбрд░рд╣рд░реВ рдЫрдиреНред рддреНрдпреЛ рд╣реЛ, рдореЛрдбреНрдпреБрд▓, рдпрджрд┐ рдЪрд╛рд╣рд┐рдпреЛ рднрдиреЗ, рд╣рд╛рддрд▓реЗ рднреЗрд▓рд╛ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫ рд░ рдореЗрд╕рд┐рди рд╕реБрд░реБ рд╣реБрдБрджрд╛ рд╕реНрдХреНрд░рд┐рдкреНрдЯрджреНрд╡рд╛рд░рд╛ рд╕реБрд░реВ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫред рдорд▓рд╛рдИ рд▓рд╛рдЧреНрдЫ рдХрд┐ рддрдкрд╛рдИрдВрд▓реЗ MCST [TBD] рдмрд╛рдЯ рдмрд╛рд░рдореНрдмрд╛рд░ рдЕрджреНрдпрд╛рд╡рдзрд┐рдХрд╣рд░реВрдХреЛ рдЖрд╢рд╛ рдЧрд░реНрдиреБ рд╣реБрдБрджреИрдиред
"рдареАрдХ рдЫ, рдореЛрдбреНрдпреБрд▓ рд╕реНрдерд╛рдкрдирд╛ рднрдпреЛ - рд╕рдмреИрднрдиреНрджрд╛ рдХрдард┐рди рднрд╛рдЧ рд╕рдХрд┐рдпреЛ," рдореИрд▓реЗ рд╕реЛрдЪреЗ... deb рднрдгреНрдбрд╛рд░рдХреЛ рд▓рд╛рдЧрд┐ veeam рдкреНрдпрд╛рдХреЗрдЬ 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 рдлрд╛рдЗрд▓рдорд╛ рд▓рд╛рдЗрди "# Source SuSE`s rc functions" [TBD] рдлрд╛рдЗрд▓рдХреЛ рд╕реБрд░реБрдорд╛ рдЫред
рдлрд╛рдЗрд▓рдХреЛ рд╕рд╛рде рдкреНрдпрд╛рдХреЗрдЬрдХреЛ рдпрд╕реНрддреЛ рдирд░рд╛рдореНрд░реЛ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдкрдЫрд┐, NFS рд╕реЗрдпрд░рдорд╛ рд╕рдореНрдкреВрд░реНрдг-рдореЗрд╕рд┐рди рдмреНрдпрд╛рдХрдЕрдк рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рд╕реБрд░реБ рднрдпреЛред рдмреНрдпрд╛рдХрдЕрдк рдорд╛рдЙрдиреНрдЯ рдкрдирд┐ рд╕рдлрд▓ рднрдпреЛред рддреНрдпрд╕реЛрднрдП, рдорд▓рд╛рдИ рд╡рд┐рд╢реНрд╡рд╛рд╕ рдЫ рдХрд┐ Elbrus PDK рд╕рдБрдЧ рдореЗрд╕рд┐рди рдмреНрдпрд╛рдХрдЕрдк рдЧрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐, рдбрд╛рдЙрдирд▓реЛрдб рдЧрд░рд┐рдПрдХреЛ "рддреНрдпрд╕реНрддреИ" рдХреБрдиреИ рджрд╛рдпрд┐рддреНрд╡ рдмрд┐рдирд╛, рд▓рд┐рдирдХреНрд╕рдХреЛ рд▓рд╛рдЧрд┐ Veeam рдПрдЬреЗрдиреНрдЯ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдкрдорд╛ рдЙрдкрдпреБрдХреНрдд рдЫред рдПрдХ рдлрд╛рдЗрд▓ рд╕рдВрдЧ рд╕рдмреИ рдкрд░рд┐рдорд╛рд░реНрдЬрди рдкрдЫрд┐ рдкрдирд┐ред
рдЕрд╡рд╢реНрдп рдкрдирд┐, Elbrus OS рд╡рд┐рддрд░рдг рдХрд┐рдЯ рдФрдкрдЪрд╛рд░рд┐рдХ рд░реВрдкрдорд╛ рд╕рдорд░реНрдерд┐рдд рдЫреИрди, рдХрд┐рдирдХрд┐ рдпреЛ рд╕рдорд░реНрдерд┐рдд рд╡реНрдпрдХреНрддрд┐рд╣рд░реВрдХреЛ рд╕реВрдЪреАрдорд╛ рд╕рдорд╛рд╡реЗрд╢ рдЧрд░рд┐рдПрдХреЛ рдЫреИрдиред рдердк рд░реВрдкрдорд╛, рд▓рд┐рдирдХреНрд╕рдХрд╛ рд▓рд╛рдЧрд┐ Veeam рдПрдЬреЗрдиреНрдЯ QA рд╡рд┐рднрд╛рдЧ рджреНрд╡рд╛рд░рд╛ рдкрд░реАрдХреНрд╖рдг рдЧрд░рд┐рдПрдХреЛ рдерд┐рдПрди, рддреНрдпрд╕реИрд▓реЗ рддреАред рддреНрдпрд╣рд╛рдБ рдХреБрдиреИ рд╕рдорд░реНрдерди рдЫреИрди (рдХрдореНрддреАрдорд╛ рд▓реЗрдЦрдХреЛ рдкреНрд░рдХрд╛рд╢рдирдХреЛ рд╕рдордпрдорд╛)ред
рдорд▓рд╛рдИ рдЖрд╢рд╛ рдЫ рдХрд┐ рдЬреБрди 334, 29.06.2017 рдХреЛ рдЖрджреЗрд╢ рдирдореНрдмрд░ XNUMX рд▓рд╛рдЧреВ рдЧрд░реНрди рдХреЛрд╢рд┐рд╕ рдЧрд░реНрдиреЗрд╣рд░реВрдХрд╛ рд▓рд╛рдЧрд┐ рд▓реЗрдЦ рдЙрдкрдпреЛрдЧреА рд╣реБрдиреЗрдЫред рддрд┐рдореНрд░реЛ рд▓рд╛рдЧрд┐ рдореЗрд░реЛ... [TBD]ред
рд╕реНрд░реЛрдд: www.habr.com