Elbrus OS ನಲ್ಲಿ Veeam ನಿಂದ Linux ಬ್ಯಾಕಪ್. ಆಮದು ಪರ್ಯಾಯ ['?' | '.' | '!']

ಎಲ್ಲರಿಗೂ ನಮಸ್ಕಾರ.
ಹಬ್ರೆ ಕುರಿತು ಇತ್ತೀಚಿನ ಲೇಖನಗಳು ಪ್ರಾಯೋಗಿಕವಾಗಿ ಆಮದು ಪರ್ಯಾಯ. ಭಾಗ 1. ಆಯ್ಕೆಗಳು и ಸಂಗೀತವು ದೀರ್ಘಕಾಲ ಪ್ಲೇ ಆಗಲಿಲ್ಲ... ಅಥವಾ ಎಲ್ಬ್ರಸ್ ಓಎಸ್ ಎಂದಿಗೂ ಮುಕ್ತವಾಗಲಿಲ್ಲ ನನ್ನನ್ನು ಅಸಡ್ಡೆ ಬಿಡಲಿಲ್ಲ. ಬ್ಯಾಕ್ಅಪ್ ಕಾರ್ಯದ ಸಂದರ್ಭದಲ್ಲಿ ನಾನು ಈ ಸಮಸ್ಯೆಯನ್ನು ಅಧ್ಯಯನ ಮಾಡಲು ನಿರ್ಧರಿಸಿದೆ. ಇದಲ್ಲದೆ, ಇನ್ ಈ ಲೇಖನ Veeam ಸಾಫ್ಟ್‌ವೇರ್ ಉತ್ಪನ್ನಗಳನ್ನು ಉಲ್ಲೇಖಿಸಲಾಗಿದೆ, ಅಂದರೆ ಆಮದು ಪರ್ಯಾಯದ ಸಂದರ್ಭದಲ್ಲಿ ಸಮಸ್ಯೆಯು ನಿರ್ದಿಷ್ಟವಾಗಿ ಪ್ರಸ್ತುತವಾಗಬಹುದು.

Elbrus OS ನಲ್ಲಿ Veeam ನಿಂದ Linux ಬ್ಯಾಕಪ್. ಆಮದು ಪರ್ಯಾಯ ['?' | '.' | '!']
ಮೂಲ ಚಿತ್ರದ ಮೂಲ

ಮೊದಲನೆಯದಾಗಿ, ನಾನು ಎಲ್ಬ್ರಸ್ ಓಎಸ್ ಅನ್ನು ಡೌನ್‌ಲೋಡ್ ಮಾಡಲು ನಿರ್ಧರಿಸಿದೆ, ಅಥವಾ x86_64 ಆರ್ಕಿಟೆಕ್ಚರ್‌ಗೆ ಲಭ್ಯವಿರುವ ವಿತರಣೆಯನ್ನು ಮಾತ್ರ, ಅದು ಹೇಗೆ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ ಎಂಬುದನ್ನು ನೋಡಿ ಮತ್ತು ಅದರ ಮೇಲೆ ಲಿನಕ್ಸ್‌ಗಾಗಿ ವೀಮ್ ಏಜೆಂಟ್ ಅನ್ನು ಸ್ಥಾಪಿಸಲು ಪ್ರಯತ್ನಿಸಿ. ಇದರಿಂದ ಏನಾಯಿತು ಎಂದು ನೀವು ತಿಳಿದುಕೊಳ್ಳಲು ಬಯಸಿದರೆ, ದಯವಿಟ್ಟು ಬೆಕ್ಕು ನೋಡಿ.

ಆದ್ದರಿಂದ, ಒಂದು ಸಣ್ಣ ವ್ಯತಿರಿಕ್ತತೆ, ಯಾರಾದರೂ ತಿಳಿದಿಲ್ಲದಿದ್ದರೆ. "ಎಲ್ಬ್ರಸ್" ಹಾಗೆ процессор ಬದಲಿಗೆ ನಿರ್ದಿಷ್ಟ ಆದೇಶ ವ್ಯವಸ್ಥೆಯೊಂದಿಗೆ. ಇದರ ಜೊತೆಗೆ, ಎಲ್ಬ್ರಸ್ ಓಎಸ್ ಸಾಫ್ಟ್‌ವೇರ್ ಇದೆ. ಮತ್ತು - ಜನಪ್ರಿಯ ನಂಬಿಕೆಗೆ ವಿರುದ್ಧವಾಗಿ - ಎಲ್ಬ್ರಸ್ ಓಎಸ್ ಅನ್ನು ನಿರ್ವಹಿಸಲು, ಎಲ್ಬ್ರಸ್ ಪ್ರೊಸೆಸರ್ ಅನ್ನು ಆಧರಿಸಿ ಹಾರ್ಡ್ವೇರ್ ಸಿಸ್ಟಮ್ ಅನ್ನು ಹೊಂದಿರುವುದು ಅನಿವಾರ್ಯವಲ್ಲ. x86 ಗಾಗಿ “PDK “Elbrus” ಇದೆ - ವಾಸ್ತವವಾಗಿ, ಇದು ಸಾರ್ವಜನಿಕ ಡೊಮೇನ್‌ನಲ್ಲಿ ಅನುಸ್ಥಾಪನಾ ಡಿಸ್ಕ್ ರೂಪದಲ್ಲಿ ಕಾಣಿಸಿಕೊಂಡಿತು. ಅಂದಹಾಗೆ, "PDK - ಪ್ಲಾಟ್‌ಫಾರ್ಮ್ ಡೆವಲಪ್‌ಮೆಂಟ್ ಕಿಟ್, ಡೆವಲಪರ್ ಕಿಟ್" ಅಡಿಟಿಪ್ಪಣಿ ಇದೆ - ಅದ್ಭುತವಾಗಿದೆ, ಅಂದರೆ ಅಲ್ಲಿ ಕನಿಷ್ಠ ಕಂಪೈಲರ್ ಇದೆ.

ಮತ್ತೊಂದು ಸಣ್ಣ ಬಲವಂತದ ಹಿಮ್ಮೆಟ್ಟುವಿಕೆ. ವಾಸ್ತವವೆಂದರೆ ನಾನು ಒಮ್ಮೆ MSVS ಮತ್ತು ಬ್ಯಾಗೆಟ್ RTOS ನಂತಹ ದೇಶೀಯ ಸಾಫ್ಟ್‌ವೇರ್‌ನೊಂದಿಗೆ ವ್ಯವಹರಿಸಿದ್ದೇನೆ. MCST ಯಿಂದ ಪ್ರೊಸೆಸರ್ ಸೇರಿದಂತೆ ದೇಶೀಯ ಘಟಕಗಳೊಂದಿಗೆ ಕೆಲಸ ಮಾಡಿದ ಅನುಭವ ನನಗೆ ಇತ್ತು. ಆದ್ದರಿಂದ, ಈ ಪ್ರದೇಶದಲ್ಲಿ ಒಂದು ನಿರ್ದಿಷ್ಟ ನಿರ್ದಿಷ್ಟತೆ ಇದೆ ಎಂದು ನಾನು ಸಂಪೂರ್ಣ ಜವಾಬ್ದಾರಿಯೊಂದಿಗೆ ಹೇಳಬಲ್ಲೆ ಮತ್ತು ಲೇಖನದಲ್ಲಿ ಅದನ್ನು ಸ್ಪರ್ಶಿಸದಿರಲು ನಾನು ಪ್ರಯತ್ನಿಸುತ್ತೇನೆ. ನಾನು ನಿಜವಾಗಿಯೂ ಬಯಸಿದಾಗ, ನಾನು [TBD] ಟ್ಯಾಗ್ ಅನ್ನು ಹಾಕುತ್ತೇನೆ. ಆದ್ದರಿಂದ ನಾವು ಸಂಪೂರ್ಣ ಟ್ರೋಲಿಂಗ್ ಮತ್ತು ನೀರಸ ನರಳುವಿಕೆ ಇಲ್ಲದೆ ಮಾಡಲು ಪ್ರಯತ್ನಿಸುತ್ತೇವೆ. ಕೊನೆಯಲ್ಲಿ, ರಷ್ಯಾದ ರಕ್ಷಣಾ ಉದ್ಯಮ ಮತ್ತು ಸರ್ಕಾರಿ ಏಜೆನ್ಸಿಗಳನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳಬೇಕು. ದೊಡ್ಡ ದೇಶ - ಸಣ್ಣ ಬಜೆಟ್.. [ಟಿಬಿಡಿ].

ಶೂನ್ಯ ಹಂತ - ಡೌನ್ಲೋಡ್. ಎಲ್ಬ್ರಸ್ ಓಎಸ್ ಲಭ್ಯವಾಗಿದೆ ಎಂಬ ಸುದ್ದಿಯು ಅನುರಣನವನ್ನು ಉಂಟುಮಾಡಿತು, ಇದರಿಂದಾಗಿ ವಿತರಣಾ ಸರ್ವರ್ ಡೌನ್ ಆಗಿದೆ. [ಟಿಬಿಡಿ] ಯಾಂಡೆಕ್ಸ್ ಮತ್ತು ಅದನ್ನು ಅಲ್ಲಿಗೆ ಸ್ಥಳಾಂತರಿಸಲು ಯೋಚಿಸಿದ ಎಂಜಿನಿಯರ್‌ಗೆ ಧನ್ಯವಾದಗಳು. ಹಾಗಾಗಿ ಡೌನ್‌ಲೋಡ್ ವೇಗ ಉತ್ತಮವಾಗಿದೆ.

ಮೊದಲ ಹಂತದ - ಅನುಸ್ಥಾಪನ. ನಾನು ಅದನ್ನು ಉಚಿತ ಬಳಕೆಗೆ ಲಭ್ಯವಿರುವ ಮೊದಲ ಹೈಪರ್‌ವೈಸರ್‌ನಲ್ಲಿ ಸ್ಥಾಪಿಸಿದೆ. ನಾನು ಎರಡು ಕೋರ್ಗಳನ್ನು, RAM ನ ಒಂದೆರಡು ಗಿಗ್ಸ್, ವೀಡಿಯೊಗಾಗಿ 32 MB ಅನ್ನು ನಿಯೋಜಿಸಿದ್ದೇನೆ (ಗ್ರಾಫಿಕಲ್ ಇಂಟರ್ಫೇಸ್ ಇರುತ್ತದೆ, ನಾನು ಭಾವಿಸಿದೆವು). ಡಿಸ್ಕ್ ಎಂದಿನಂತೆ - 32 ಜಿಬಿ.
ನಾನು ಅನುಸ್ಥಾಪನೆಯನ್ನು ಪ್ರಾರಂಭಿಸಿದೆ. ನಾನು ಅನುಸ್ಥಾಪನಾ ಸೂಚನೆಗಳನ್ನು ಬಳಸಲಿಲ್ಲ, ಆದ್ದರಿಂದ ನಾನು ಅದರ ಬಗ್ಗೆ ಕಾಮೆಂಟ್ ಮಾಡಲು ಸಾಧ್ಯವಿಲ್ಲ. TUI ಅನುಸ್ಥಾಪನ ಇಂಟರ್ಫೇಸ್ ತೀವ್ರವಾಗಿ ಕನಿಷ್ಠವಾಗಿದೆ.

Elbrus OS ನಲ್ಲಿ Veeam ನಿಂದ Linux ಬ್ಯಾಕಪ್. ಆಮದು ಪರ್ಯಾಯ ['?' | '.' | '!']
ಸರಿ, ಅದ್ಭುತವಾಗಿದೆ, ನಾವು ಮೌಸ್ ಇಲ್ಲದೆ ಮಾಡಬಹುದು.

ನಾನು ಎರಡನೇ ಪ್ರಯತ್ನದಲ್ಲಿ ಮುಂದಿನ ವಿಂಡೋವನ್ನು ನಿರ್ವಹಿಸಿದೆ. ಡಿಸ್ಕ್‌ನಿಂದ ಸ್ಥಾಪಿಸುವಾಗ ಡಿಫಾಲ್ಟ್ ಸಾಧನ sr0 [TBD] ಅನ್ನು ಏಕೆ ಆಯ್ಕೆ ಮಾಡಬಾರದು?
CD-ROM ಮೂಲವನ್ನು ಆಯ್ಕೆಮಾಡಿ ಮತ್ತು ಮುಂದುವರಿಯಿರಿ.

Elbrus OS ನಲ್ಲಿ Veeam ನಿಂದ Linux ಬ್ಯಾಕಪ್. ಆಮದು ಪರ್ಯಾಯ ['?' | '.' | '!']

ಸಮಯ ವಲಯವನ್ನು ಆಯ್ಕೆಮಾಡುವಾಗ, ಸಿಸ್ಟಮ್ init ಬೂಟ್ ಪ್ರಕ್ರಿಯೆಯನ್ನು ಬಳಸುತ್ತದೆ ಎಂದು ನಾನು ಇದ್ದಕ್ಕಿದ್ದಂತೆ ಅರಿತುಕೊಂಡೆ ಮತ್ತು ನಾನು TTY0 ನಿಂದ ಕೆಲಸ ಮಾಡುತ್ತಿದ್ದೇನೆ.

Elbrus OS ನಲ್ಲಿ Veeam ನಿಂದ Linux ಬ್ಯಾಕಪ್. ಆಮದು ಪರ್ಯಾಯ ['?' | '.' | '!']

ಸರಿ, ನಂತರ ನಾವು "ಎಲ್ಬ್ರಸ್" ಅನ್ನು ಸಮುದಾಯವಾಗಿ ವರ್ಗೀಕರಿಸೋಣ ಹಳೆಯ ನಂಬಿಕೆಯುಳ್ಳವರು[ಟಿಬಿಡಿ]. ತಾತ್ವಿಕವಾಗಿ, ಇದು ಒಳ್ಳೆಯದು: ಡೌನ್‌ಲೋಡ್ ಪ್ರಕ್ರಿಯೆಯು ಹೇಗೆ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ ಎಂಬುದನ್ನು ನೋಡಲು ನೀವು ಮೂಲ ಕೋಡ್ ಅನ್ನು ಕೇಳಬೇಕಾಗಿಲ್ಲ, ಏಕೆಂದರೆ ಎಲ್ಲವನ್ನೂ ಸ್ಕ್ರಿಪ್ಟ್ ಮಾಡಲಾಗಿದೆ.

ಉಳಿದವು ಬಹುತೇಕ ಮುಖ್ಯವಲ್ಲ: ನಾವು ಎಲ್ಲವನ್ನೂ ಹಾಕುತ್ತೇವೆ ಮತ್ತು ಒಪ್ಪಿಕೊಳ್ಳುತ್ತೇವೆ. ದಾರಿಯುದ್ದಕ್ಕೂ, ಕರ್ನಲ್ ಅನ್ನು 3.14.79-13.84 ಬಳಸಲಾಗಿದೆ ಎಂದು ನಾವು ಕಂಡುಕೊಳ್ಳುತ್ತೇವೆ. ಹಾಂ, ಡೆಬಿಯನ್ 7 3.2 [TBD] ಹೊಂದಿತ್ತು.

ಮುಂದೆ, ಡಿಫಾಲ್ಟ್ ಡಿಸ್ಕ್ ವಿಭಜನೆಯನ್ನು ಆಯ್ಕೆಮಾಡಿ ಮತ್ತು... ನಾವು ಎಚ್ಚರಿಕೆಯನ್ನು ನೋಡುತ್ತೇವೆ:

Elbrus OS ನಲ್ಲಿ Veeam ನಿಂದ Linux ಬ್ಯಾಕಪ್. ಆಮದು ಪರ್ಯಾಯ ['?' | '.' | '!']

ಹಾಂ, ಹೇಗಾದರೂ ಸ್ವಯಂಚಾಲಿತ ವಿಭಜನೆಯು 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

ಆದರೂ, ಬಹುಶಃ ನನಗೆ ಏನಾದರೂ ಅರ್ಥವಾಗಲಿಲ್ಲವೇ? ಬಹುಶಃ ಯಾರಾದರೂ ಕಾಮೆಂಟ್‌ಗಳಲ್ಲಿ ವಿವರಿಸಬಹುದು: ಈ ಸ್ಕ್ರಿಪ್ಟ್ ಸುರಕ್ಷಿತ ಮತ್ತು ವಿಶ್ವಾಸಾರ್ಹ ಡೇಟಾ ಬ್ಯಾಕಪ್ ಅನ್ನು ಹೇಗೆ ಖಚಿತಪಡಿಸುತ್ತದೆ? [ಟಿಬಿಡಿ]

rsync, ಮೂಲಕ, ಆಡ್-ಆನ್‌ನಲ್ಲಿ ಸೇರಿಸಲಾಗಿದೆ. ಭಂಡಾರಗಳು. ಆವೃತ್ತಿ 3.1.3. rsync ಅನ್ನು ಬಳಸುವುದು ಇನ್ನೂ /mcst/bin/backup ಅಪ್ಲಿಕೇಶನ್‌ಗೆ ಉತ್ತಮ ಪರ್ಯಾಯವಾಗಿದೆ ಎಂದು ನಾನು ಭಾವಿಸುತ್ತೇನೆ.

ಮುಂದೆ, ನಾನು ಹೊಸದನ್ನು ಹಾಕಲು ನಿರ್ಧರಿಸಿದೆ ಲಿನಕ್ಸ್‌ಗಾಗಿ ವೀಮ್ ಏಜೆಂಟ್. ಯಾರಾದರೂ ಕೇಳುತ್ತಾರೆ: "ವೀಮ್ ಮತ್ತು ಆಮದು ಪರ್ಯಾಯಕ್ಕೂ ಇದಕ್ಕೂ ಏನು ಸಂಬಂಧವಿದೆ?" ಹೌದು, ಇದು ರಿಜಿಸ್ಟರ್‌ನಲ್ಲಿಲ್ಲ, ಆದರೆ ಇದು ಎಫ್‌ಎಸ್‌ಟಿಇಸಿಯಿಂದ ಪ್ರಮಾಣೀಕರಿಸಲ್ಪಟ್ಟಿದೆ, ಅಂದರೆ ಪರ್ಯಾಯಗಳ ಅನುಪಸ್ಥಿತಿಯಲ್ಲಿ ಅದನ್ನು ಬಳಸಬಹುದು. ನಿಂದ ಪರ್ಯಾಯಗಳಲ್ಲಿ ಹದಿನೈದು ನಿಮಿಷಗಳನ್ನು ಕಳೆಯುತ್ತಿದ್ದಾರೆ ನೋಂದಾವಣೆ, "ಬ್ಯಾಕಪ್" ಪದಕ್ಕಾಗಿ ನಾನು 3 ಲಿಂಕ್‌ಗಳನ್ನು ಹುಡುಕಲು ಸಾಧ್ಯವಾಯಿತು ("ಮೀಸಲು" ಪದಕ್ಕಾಗಿ ನನ್ನ ಪ್ರಶ್ನೆಗೆ ಯಾವುದೂ ಸಂಬಂಧಿಸಿಲ್ಲ). ನಾನು ಈ ಕಾರ್ಯಕ್ರಮಗಳ ಆಳವಾದ ವಿಶ್ಲೇಷಣೆಯನ್ನು ಮಾಡಿಲ್ಲ, ಆದ್ದರಿಂದ ಲಿನಕ್ಸ್ ಚಾಲನೆಯಲ್ಲಿರುವ ಯಂತ್ರಗಳನ್ನು ಬ್ಯಾಕಪ್ ಮಾಡಲು ಅವು ಎಷ್ಟು ಸೂಕ್ತವೆಂದು ನಾನು ನಿರ್ಣಯಿಸಲು ಪ್ರಯತ್ನಿಸುವುದಿಲ್ಲ. ಯಾರಿಗೆ ಇದು ಅಗತ್ಯವಿದೆಯೋ ಅವರು ತಮ್ಮದೇ ಆದ ತೀರ್ಮಾನವನ್ನು ತೆಗೆದುಕೊಳ್ಳುತ್ತಾರೆ ಮತ್ತು ಅದನ್ನು ಕಾಮೆಂಟ್‌ಗಳಲ್ಲಿ ಹಂಚಿಕೊಳ್ಳುತ್ತಾರೆ.

ಹಂತ ಮೂರು - Linux ಗಾಗಿ Veeam ಏಜೆಂಟ್ ಸ್ಥಾಪನೆ.
ಆದ್ದರಿಂದ, ಲಿನಕ್ಸ್‌ಗಾಗಿ ವೀಮ್ ಏಜೆಂಟ್ ಎರಡು ಪ್ಯಾಕೇಜ್‌ಗಳನ್ನು ಒಳಗೊಂಡಿದೆ: ವೀಮ್ಸ್ನ್ಯಾಪ್ ಕರ್ನಲ್ ಮಾಡ್ಯೂಲ್ (ಮೂಲಕ, ಮೂಲ ಇಲ್ಲಿ) ಮತ್ತು ವೀಮ್ ಪ್ಯಾಕೇಜ್‌ನ ರೂಪದಲ್ಲಿ ಸ್ವಾಮ್ಯದ ಬಳಕೆದಾರ-ಸ್ಪೇಸ್ ಕೋಡ್.

ಕರ್ನಲ್ ಮಾಡ್ಯೂಲ್ ಅನ್ನು ಸ್ಥಾಪಿಸುವಲ್ಲಿ ಒಂದು ಸಣ್ಣ ಸಮಸ್ಯೆ ಇದೆ - ಕಾಣೆಯಾದ dkms ಪ್ಯಾಕೇಜ್. ಇದು ಮೂಲದಿಂದ ಕರ್ನಲ್ ಮಾಡ್ಯೂಲ್‌ಗಳನ್ನು ನಿರ್ಮಿಸಲು ನಿಮಗೆ ಅನುಮತಿಸುವ ಸೇವೆಯಾಗಿದೆ. ನಿಯಮದಂತೆ, ಇದು ಎಲ್ಲಾ ಡೆಬ್ ವಿತರಣೆಗಳಲ್ಲಿ ಲಭ್ಯವಿದೆ. ನಾನು ಅದನ್ನು ಮೂರನೇ ವ್ಯಕ್ತಿಯ ಡೆಬ್ ರೆಪೊಸಿಟರಿಯಿಂದ ಡೌನ್‌ಲೋಡ್ ಮಾಡಬೇಕಾಗಿತ್ತು. ನನಗೆ ಸಂತೋಷವನ್ನುಂಟು ಮಾಡಿದ ಒಂದು ವಿಷಯವೆಂದರೆ ಪ್ಯಾಕೇಜ್ ವಾಸ್ತುಶಿಲ್ಪದ ಮೇಲೆ ಅವಲಂಬಿತವಾಗಿಲ್ಲ, ಆದ್ದರಿಂದ ಇದು ಸ್ಥಳೀಯವಾಗಿ ಹೊಂದಿಕೊಳ್ಳುತ್ತದೆ. ಲಭ್ಯವಿರುವ ಪ್ಯಾಕೇಜುಗಳ ಪಟ್ಟಿಯಲ್ಲಿ ಏಕೆ ಸೇರಿಸಲಾಗಿಲ್ಲ, ಅಥವಾ ಬದಲಿಗೆ, ಅಭಿವೃದ್ಧಿಪಡಿಸಲಾಗಿಲ್ಲ [TBD]? ಬಹುಶಃ ಯಾರೂ ಯಾವುದೇ MCST ಅಲ್ಲದ ಕರ್ನಲ್ ಮಾಡ್ಯೂಲ್‌ಗಳನ್ನು ನಿರ್ಮಿಸಬಾರದು ಮತ್ತು ಚಲಾಯಿಸಬಾರದು ಎಂದು ಊಹಿಸಲಾಗಿದೆ. ಇಲ್ಲಿ ನಿಜವಾಗಿಯೂ ವ್ಯತ್ಯಾಸವಿದೆ - ಲಿನಕ್ಸ್-ಹೆಡರ್‌ಗಳು ಇರುವುದರಿಂದ. ಅಂದರೆ, ಮಾಡ್ಯೂಲ್, ಬಯಸಿದಲ್ಲಿ, ಕೈಯಿಂದ ಜೋಡಿಸಬಹುದು ಮತ್ತು ಯಂತ್ರವು ಪ್ರಾರಂಭವಾದಾಗ ಸ್ಕ್ರಿಪ್ಟ್ ಮೂಲಕ ಪ್ರಾರಂಭಿಸಬಹುದು. ನೀವು MCST [TBD] ನಿಂದ ಆಗಾಗ್ಗೆ ನವೀಕರಣಗಳನ್ನು ನಿರೀಕ್ಷಿಸಬಾರದು ಎಂದು ನಾನು ಭಾವಿಸುತ್ತೇನೆ.

"ಸರಿ, ಮಾಡ್ಯೂಲ್ ಅನ್ನು ಸ್ಥಾಪಿಸಲಾಗಿದೆ - ಕಠಿಣವಾದ ಭಾಗವು ಮುಗಿದಿದೆ," ನಾನು ಯೋಚಿಸಿದೆ... deb ರೆಪೊಸಿಟರಿಗಾಗಿ veeam ಪ್ಯಾಕೇಜ್ amd64 ಪ್ಲಾಟ್‌ಫಾರ್ಮ್‌ಗಾಗಿ, ಮತ್ತು Elbrus OS x86_64 [TBD] ಪ್ಲಾಟ್‌ಫಾರ್ಮ್ ಅನ್ನು ಹೊಂದಿದೆ. ವ್ಯತ್ಯಾಸ, ಸಹಜವಾಗಿ, ಹೆಸರಿನಲ್ಲಿ ಮಾತ್ರ, ಆದರೆ ಈ ವ್ಯತ್ಯಾಸವು ಮೂರನೇ ವ್ಯಕ್ತಿಯ ಡೆಬ್ ರೆಪೊಸಿಟರಿಗಳಿಂದ ಬಹುತೇಕ ಎಲ್ಲಾ ಪ್ಯಾಕೇಜ್‌ಗಳನ್ನು ಎಲ್ಬ್ರಸ್ ಓಎಸ್‌ಗೆ ಹೊಂದಿಕೆಯಾಗುವುದಿಲ್ಲ. ಈ ಕಿರಿಕಿರಿ ತಪ್ಪುಗ್ರಹಿಕೆಯನ್ನು ಸರಳವಾಗಿ ತೆಗೆದುಹಾಕಬಹುದು: ಪ್ಯಾಕೇಜ್ ಅನ್ನು ಡಿಸ್ಅಸೆಂಬಲ್ ಮಾಡಿ, ವಾಸ್ತುಶಿಲ್ಪದ ಬಗ್ಗೆ ಮಾಹಿತಿಯನ್ನು ಸರಿಪಡಿಸಿ ಮತ್ತು ಅದನ್ನು ಮತ್ತೆ ಒಟ್ಟಿಗೆ ಸೇರಿಸಿ. ಅದನ್ನು ಹೇಗೆ ಮಾಡುವುದು ಅದನ್ನು ಗೂಗಲ್ ಮಾಡಿದೆ ತಕ್ಷಣ.

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

ಮತ್ತೊಂದು ಸಮಸ್ಯೆ ಅವಲಂಬನೆಯಾಗಿದೆ. ಅಗತ್ಯ ಫೈಲ್‌ಗಳು ಇದ್ದಂತೆ ತೋರುತ್ತಿದೆ, ಆದರೆ ಪ್ಯಾಕೇಜ್‌ಗಳು ಇಲ್ಲ. ಪ್ಯಾಕೇಜುಗಳ ಹೆಸರುಗಳು ಅವುಗಳ "ಆಮದು ಮಾಡಿಕೊಂಡ ಅನಲಾಗ್‌ಗಳಿಂದ" ಭಿನ್ನವಾಗಿವೆ ಎಂದು ಅನಿಸಿಕೆ. ಬಹುಶಃ ಗ್ರಂಥಾಲಯಗಳನ್ನು ವಿಭಿನ್ನವಾಗಿ ಪ್ಯಾಕ್ ಮಾಡಲಾಗಿದೆ. ನಾನು ಹೆಚ್ಚು ವಿವರವಾಗಿ ಹೋಗಲಿಲ್ಲ, ಬಹುತೇಕ ಎಲ್ಲಾ ಅವಲಂಬನೆಗಳನ್ನು ತೆಗೆದುಹಾಕಿದೆ ಮತ್ತು ಅನುಸ್ಥಾಪನೆಯು ಮುಂದುವರೆಯಿತು.

ನಂತರ ಸೇವೆ ಪ್ರಾರಂಭದ ಕೋಡ್‌ನೊಂದಿಗೆ ಸಮಸ್ಯೆಗಳು ಹೊರಹೊಮ್ಮಿದವು. ಸ್ಕ್ರಿಪ್ಟ್ /lib/init/vars.sh ಕಾಣೆಯಾಗಿದೆ. ಕೆಲವು ಕಾರಣಗಳಿಗಾಗಿ, ಎಲ್ಬ್ರಸ್ ಅದು ಇಲ್ಲದೆ ನಿರ್ವಹಿಸುತ್ತದೆ, ಆದ್ದರಿಂದ ನಾವು ಅದನ್ನು ಸಹ ತೆಗೆದುಹಾಕುತ್ತೇವೆ. ಮುಂದೆ, ನಾವು ಸಂದೇಶದ ಔಟ್‌ಪುಟ್ ಕಾರ್ಯವನ್ನು ಬದಲಾಯಿಸಬೇಕಾಗಿತ್ತು: log_daemon_msg ಮತ್ತು log_end_msg ಕಾರ್ಯಗಳು ಕಾಣೆಯಾಗಿವೆ. /lib/lsb/init-functions ಫೈಲ್‌ನಲ್ಲಿ ಸುತ್ತಾಡಿದ ನಂತರ, ನಾನು log_success_msg ಕಾರ್ಯವನ್ನು ಕಂಡುಕೊಂಡಿದ್ದೇನೆ - ಇದು ಪ್ರಯೋಗಗಳಿಗೆ ನಮಗೆ ಉತ್ತಮವಾಗಿರುತ್ತದೆ. ಮೂಲಕ, /lib/lsb/init-functions ಫೈಲ್‌ನಲ್ಲಿ “# ಮೂಲ SuSE`s rc ಕಾರ್ಯಗಳು” ಎಂಬ ಸಾಲು [TBD] ಫೈಲ್‌ನ ಪ್ರಾರಂಭದಲ್ಲಿದೆ.

ಫೈಲ್‌ನೊಂದಿಗೆ ಪ್ಯಾಕೇಜ್‌ನ ಇಂತಹ ಒರಟು ಪ್ರಕ್ರಿಯೆಯ ನಂತರ, NFS ಹಂಚಿಕೆಯಲ್ಲಿ ಸಂಪೂರ್ಣ-ಯಂತ್ರ ಬ್ಯಾಕ್‌ಅಪ್ ಅನ್ನು ಯಶಸ್ವಿಯಾಗಿ ಪ್ರಾರಂಭಿಸಲಾಯಿತು. ಬ್ಯಾಕಪ್ ಮೌಂಟ್ ಕೂಡ ಯಶಸ್ವಿಯಾಗಿದೆ. ಆದ್ದರಿಂದ, ಯಾವುದೇ ಕಟ್ಟುಪಾಡುಗಳಿಲ್ಲದೆ "ಅಂತೆಯೇ" ಡೌನ್‌ಲೋಡ್ ಮಾಡಿದ ಎಲ್ಬ್ರಸ್ PDK ಯೊಂದಿಗೆ ಯಂತ್ರವನ್ನು ಬ್ಯಾಕಪ್ ಮಾಡಲು, Linux ಗಾಗಿ Veeam ಏಜೆಂಟ್ ಖಂಡಿತವಾಗಿಯೂ ಸೂಕ್ತವಾಗಿದೆ ಎಂದು ನಾನು ನಂಬುತ್ತೇನೆ. ಫೈಲ್‌ನೊಂದಿಗೆ ಎಲ್ಲಾ ಮಾರ್ಪಾಡುಗಳ ನಂತರವೂ ಸಹ.

ಸಹಜವಾಗಿ, ಎಲ್ಬ್ರಸ್ ಓಎಸ್ ವಿತರಣಾ ಕಿಟ್ ಅನ್ನು ಔಪಚಾರಿಕವಾಗಿ ಬೆಂಬಲಿಸುವುದಿಲ್ಲ, ಏಕೆಂದರೆ ಇದು ಬೆಂಬಲಿತವಾದವುಗಳ ಪಟ್ಟಿಯಲ್ಲಿ ಸೇರಿಸಲಾಗಿಲ್ಲ. ಹೆಚ್ಚುವರಿಯಾಗಿ, ಲಿನಕ್ಸ್‌ಗಾಗಿ ವೀಮ್ ಏಜೆಂಟ್ ಅನ್ನು QA ವಿಭಾಗವು ಅದರ ಮೇಲೆ ಪರೀಕ್ಷಿಸಲಿಲ್ಲ, ಆದ್ದರಿಂದ ಅವುಗಳು. ಯಾವುದೇ ಬೆಂಬಲವಿಲ್ಲ (ಕನಿಷ್ಠ ಲೇಖನದ ಪ್ರಕಟಣೆಯ ಸಮಯದಲ್ಲಿ).

ಜೂನ್ 334, 29.06.2017 ರ ಆದೇಶ ಸಂಖ್ಯೆ XNUMX ಅನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸಲು ಪ್ರಯತ್ನಿಸುತ್ತಿರುವವರಿಗೆ ಲೇಖನವು ಉಪಯುಕ್ತವಾಗಿದೆ ಎಂದು ನಾನು ಭಾವಿಸುತ್ತೇನೆ. ನಿಮಗೆ ನನ್ನದು... [TBD].

ಮೂಲ: www.habr.com

ಕಾಮೆಂಟ್ ಅನ್ನು ಸೇರಿಸಿ