ื’ื™ื‘ื•ื™ ืœื™ื ื•ืงืก ืž- Veeam ื‘-Elbrus OS. ืชื—ืœื™ืฃ ื™ื™ื‘ื•ื โ€‹โ€‹['?' | '.' | '!']

ืฉืœื•ื ืœื›ื•ืœื.
ืžืืžืจื™ื ืื—ืจื•ื ื™ื ืขืœ Habrรฉ ืชื—ืœื™ืฃ ื™ื‘ื•ื ื‘ืคื•ืขืœ. ื—ืœืง 1. ืืคืฉืจื•ื™ื•ืช ะธ ื”ืžื•ื–ื™ืงื” ืœื ื”ืชื ื’ื ื” ืœืื•ืจืš ื–ืžืŸ... ืื• ืื™ืš Elbrus OS ืžืขื•ืœื ืœื ื”ืคื›ื” ื—ื•ืคืฉื™ืช ืœื ื”ืฉืื™ืจ ืื•ืชื™ ืื“ื™ืฉ. ื”ื—ืœื˜ืชื™ ืœืœืžื•ื“ ืืช ื”ื ื•ืฉื ื”ื–ื” ื‘ื”ืงืฉืจ ืฉืœ ืžืฉื™ืžืช ื”ื’ื™ื‘ื•ื™. ื™ืชืจ ืขืœ ื›ืŸ, ื‘ ืžืืžืจ ื–ื” ืžื•ื–ื›ืจื™ื ืžื•ืฆืจื™ Veeam Software, ืžื” ืฉืื•ืžืจ ืฉื”ื ื•ืฉื ืขืฉื•ื™ ืœื”ื™ื•ืช ืจืœื•ื•ื ื˜ื™ ื‘ืžื™ื•ื—ื“ ื‘ื”ืงืฉืจ ืฉืœ ื”ื—ืœืคืช ื™ื™ื‘ื•ื.

ื’ื™ื‘ื•ื™ ืœื™ื ื•ืงืก ืž-Veeam ื‘-Elbrus OS. ืชื—ืœื™ืฃ ื™ื™ื‘ื•ื โ€‹โ€‹['?' | '.' | '!']
ืžืงื•ืจ ื”ืชืžื•ื ื” ื”ืžืงื•ืจื™

ืงื•ื“ื ื›ืœ, ื”ื—ืœื˜ืชื™ ืœื”ื•ืจื™ื“ ืืช ืžืขืจื›ืช ื”ื”ืคืขืœื” Elbrus, ืื• ืœื™ืชืจ ื“ื™ื•ืง, ืจืง ืืช ื”ื”ืคืฆื” ื”ื–ืžื™ื ื” ืœืืจื›ื™ื˜ืงื˜ื•ืจืช x86_64, ืœืจืื•ืช ืื™ืš ื–ื” ืขื•ื‘ื“ ื•ืœื ืกื•ืช ืœื”ืชืงื™ืŸ ืขืœื™ื” ืืช Veeam Agent ืขื‘ื•ืจ Linux. ืื ืืชื” ืจื•ืฆื” ืœื“ืขืช ืžื” ื™ืฆื ืžื–ื”, ื‘ื‘ืงืฉื” ืจืื” ื—ืชื•ืœ.

ืื–, ืกื˜ื™ื™ื” ืงื˜ื ื”, ืœืžืงืจื” ืฉืžื™ืฉื”ื• ืœื ื™ื•ื“ืข. "ืืœื‘ืจื•ืก" ื”ื•ื ื›ื–ื” ืžืขื‘ื“ ืขื ืžืขืจื›ืช ืคื™ืงื•ื“ ืกืคืฆื™ืคื™ืช ืœืžื“ื™. ื‘ื ื•ืกืฃ ืœื›ืš, ื™ืฉื ื” ืชื•ื›ื ืช Elbrus OS. ื•ื‘ื ื™ื’ื•ื“ ืœืืžื•ื ื” ื”ืจื•ื•ื—ืช - ื›ื“ื™ ืœื”ืคืขื™ืœ ืืช ืžืขืจื›ืช ื”ื”ืคืขืœื” Elbrus, ืื™ืŸ ืฆื•ืจืš ื‘ืžืขืจื›ืช ื—ื•ืžืจื” ื”ืžื‘ื•ืกืกืช ืขืœ ืžืขื‘ื“ Elbrus. ื™ืฉ "PDK "Elbrus" ืขื‘ื•ืจ x86" - ืœืžืขืฉื”, ื”ื•ื ื”ื•ืคื™ืข ื‘ืจืฉื•ืช ื”ืฆื™ื‘ื•ืจ ื‘ืฆื•ืจื” ืฉืœ ื“ื™ืกืง ื”ืชืงื ื”. ืื’ื‘, ื™ืฉ ื”ืขืจืช ืฉื•ืœื™ื™ื "PDK - ืขืจื›ืช ืคื™ืชื•ื— ืคืœื˜ืคื•ืจืžื”, ืขืจื›ืช ืžืคืชื—ื™ื" - ืžืขื•ืœื”, ื–ื” ืื•ืžืจ ืฉื™ืฉ ืฉื ืœืคื—ื•ืช ืžื”ื“ืจ.

ืขื•ื“ ื ืกื™ื’ื” ืงื˜ื ื” ื‘ื›ืคื™ื™ื”. ื”ืขื•ื‘ื“ื” ื”ื™ื ืฉืคืขื ืขืกืงืชื™ ื‘ืชื•ื›ื ื•ืช ืžืงื•ืžื™ื•ืช, ื›ืžื• MSVS ื•ื‘ื’ื˜ RTOS. ื”ื™ื” ืœื™ ื ื™ืกื™ื•ืŸ ื‘ืขื‘ื•ื“ื” ืขื ืจื›ื™ื‘ื™ื ื‘ื™ืชื™ื™ื, ื›ื•ืœืœ ืžืขื‘ื“ ืž-MCST. ืœื›ืŸ, ืื ื™ ื™ื›ื•ืœ ืœื•ืžืจ ื‘ืื—ืจื™ื•ืช ืžืœืื” ืฉื™ืฉ ืกืคืฆื™ืคื™ื•ืช ืžืกื•ื™ืžืช ื‘ืชื—ื•ื ื”ื–ื” ื•ืืฉืชื“ืœ ืœื ืœื’ืขืช ื‘ื” ื‘ืžืืžืจ. ื›ืฉืื ื™ ื‘ืืžืช ืืจืฆื”, ืืฉื™ื ืืช ื”ืชื’ [TBD]. ืื– ื ื ืกื” ืœื”ืกืชื“ืจ ื‘ืœื™ ื˜ืจื•ืœ ืžื•ื—ืœื˜ ื•ื’ื ื™ื—ื•ืช ื‘ื ืืœื™ื•ืช. ื‘ืกื•ืคื• ืฉืœ ื“ื‘ืจ, ืฆืจื™ืš ืœื”ื‘ื™ืŸ ืืช ื”ืชืขืฉื™ื™ื” ื”ื‘ื™ื˜ื—ื•ื ื™ืช ื”ืจื•ืกื™ืช ื•ืกื•ื›ื ื•ื™ื•ืช ืžืžืฉืœืชื™ื•ืช. ืžื“ื™ื ื” ื’ื“ื•ืœื” - ืชืงืฆื™ื‘ ืงื˜ืŸ.. [TBD].

ืฉืœื‘ ืืคืก - ื”ื•ืจื“. ืจืื•ื™ ืœืฆื™ื™ืŸ ืฉื”ื—ื“ืฉื•ืช ืฉืžืขืจื›ืช ื”ื”ืคืขืœื” Elbrus ื”ืคื›ื” ืœื–ืžื™ื ื” ื’ืจืžื” ืœืชื”ื•ื“ื”, ืขื“ ื›ื“ื™ ื›ืš ืฉืฉืจืช ื”ื”ืคืฆื” ื™ืจื“. [TBD] ืชื•ื“ื” ืœื™ืื ื“ืงืก ื•ื”ืžื”ื ื“ืก ืฉื—ืฉื‘ื• ืœื”ืขื‘ื™ืจ ืื•ืชื” ืœืฉื. ืื– ืžื”ื™ืจื•ืช ื”ื”ื•ืจื“ื” ื˜ื•ื‘ื”.

ื”ืฉืœื‘ ื”ืจืืฉื•ืŸ - ื”ืชืงื ื”. ื”ืชืงื ืชื™ ืื•ืชื• ื‘-hypervisor ื”ืจืืฉื•ืŸ ืฉื”ื™ื” ื–ืžื™ืŸ ืœืฉื™ืžื•ืฉ ื—ื•ืคืฉื™. ื”ืงืฆืชื™ ืฉืชื™ ืœื™ื‘ื•ืช, ื›ืžื” ื”ื•ืคืขื•ืช ืฉืœ ื–ื™ื›ืจื•ืŸ RAM, 32 ืžื’ื”-ื‘ื™ื™ื˜ ืœื•ื•ื™ื“ืื• (ื™ื”ื™ื” ืžืžืฉืง ื’ืจืคื™, ื—ืฉื‘ืชื™). ื”ื“ื™ืกืง ื›ืจื’ื™ืœ - 32 ื’'ื™ื’ื”-ื‘ื™ื™ื˜.
ื”ืชื—ืœืชื™ ื‘ื”ืชืงื ื”. ืœื ื”ืฉืชืžืฉืชื™ ื‘ื”ื•ืจืื•ืช ื”ื”ืชืงื ื”, ืื– ืื ื™ ืœื ื™ื›ื•ืœ ืœื”ื’ื™ื‘ ืขืœื™ื”ืŸ. ืžืžืฉืง ื”ื”ืชืงื ื” ืฉืœ TUI ื”ื•ื ืžื™ื ื™ืžืœื™ืกื˜ื™ ื‘ื™ื•ืชืจ.

ื’ื™ื‘ื•ื™ ืœื™ื ื•ืงืก ืž-Veeam ื‘-Elbrus OS. ืชื—ืœื™ืฃ ื™ื™ื‘ื•ื โ€‹โ€‹['?' | '.' | '!']
ื˜ื•ื‘, ื ื”ื“ืจ, ืื ื—ื ื• ื™ื›ื•ืœื™ื ืœื”ืกืชื“ืจ ื‘ืœื™ ืขื›ื‘ืจ.

ื”ืฆืœื—ืชื™ ืืช ื”ื—ืœื•ืŸ ื”ื‘ื ื‘ื ื™ืกื™ื•ืŸ ื”ืฉื ื™. ืžื“ื•ืข ืœื ืœื‘ื—ื•ืจ ื‘ื”ืชืงืŸ ื‘ืจื™ืจืช ื”ืžื—ื“ืœ sr0 [TBD] ื‘ืขืช ื”ืชืงื ื” ืžื”ื“ื™ืกืง?
ื‘ื—ืจ ืืช ืžืงื•ืจ ื”ืชืงืœื™ื˜ื•ืจ ื•ื”ืžืฉืš ื”ืœืื”.

ื’ื™ื‘ื•ื™ ืœื™ื ื•ืงืก ืž-Veeam ื‘-Elbrus OS. ืชื—ืœื™ืฃ ื™ื™ื‘ื•ื โ€‹โ€‹['?' | '.' | '!']

ื‘ื–ืžืŸ ื‘ื—ื™ืจืช ืื–ื•ืจ ื”ื–ืžืŸ, ืคืชืื•ื ื”ื‘ื ืชื™ ืฉื”ืžืขืจื›ืช ืžืฉืชืžืฉืช ื‘ืชื”ืœื™ืš ื”ืืชื—ื•ืœ init, ื•ืื ื™ ืขื•ื‘ื“ ืž-TTY0.

ื’ื™ื‘ื•ื™ ืœื™ื ื•ืงืก ืž-Veeam ื‘-Elbrus OS. ืชื—ืœื™ืฃ ื™ื™ื‘ื•ื โ€‹โ€‹['?' | '.' | '!']

ืื•ืงื™ื™, ืื– ื‘ื•ืื• ื ืกื•ื•ื’ ืืช "ืืœื‘ืจื•ืก" ื›ืงื”ื™ืœื” ืžืืžื™ื ื™ื ื•ืชื™ืงื™ื[TBD]. ื‘ืื•ืคืŸ ืขืงืจื•ื ื™, ื–ื” ื˜ื•ื‘: ืืชื” ืœื ืฆืจื™ืš ืœื‘ืงืฉ ืืช ืงื•ื“ ื”ืžืงื•ืจ ื›ื“ื™ ืœืจืื•ืช ืื™ืš ืชื”ืœื™ืš ื”ื”ื•ืจื“ื” ืขื•ื‘ื“, ืžื›ื™ื•ื•ืŸ ืฉื”ื›ืœ ื”ื•ื ื‘ืกืงืจื™ืคื˜.

ื”ืฉืืจ ื›ืžืขื˜ ืœื ื—ืฉื•ื‘: ืื ื—ื ื• ืฉืžื™ื ื”ื›ืœ ื•ืžืกื›ื™ื. ืขืœ ื”ื“ืจืš, ืื ื• ืžื’ืœื™ื ืฉื”ืงืจื ืœ ื ืžืฆื ื‘ืฉื™ืžื•ืฉ 3.14.79-13.84. ื”ืžืž, ืœื“ื‘ื™ืืŸ 7 ื”ื™ื” 3.2 [TBD].

ืœืื—ืจ ืžื›ืŸ, ื‘ื—ืจ ืืช ืžื—ื™ืฆืช ื”ื“ื™ืกืง ื”ืžื•ื’ื“ืจืช ื›ื‘ืจื™ืจืช ืžื—ื“ืœ ื•... ืื ื• ืจื•ืื™ื ืื–ื”ืจื”:

ื’ื™ื‘ื•ื™ ืœื™ื ื•ืงืก ืž-Veeam ื‘-Elbrus OS. ืชื—ืœื™ืฃ ื™ื™ื‘ื•ื โ€‹โ€‹['?' | '.' | '!']

ื”ืžืž, ืื™ื›ืฉื”ื• ื”ื—ืœื•ืงื” ื”ืื•ื˜ื•ืžื˜ื™ืช ืœื ื”ืชืžื•ื“ื“ื” ื˜ื•ื‘ ืขื ื“ื™ืกืง ืฉืœ 32 ื”ื•ืคืขื•ืช. ืœื ืฉื™ื ื™ืชื™ ืืช ื”ื“ื™ืกืง; ื”ืฉืœืžืชื™ ืืช ื”ืžืกืข ืขื ื—ืœื•ืงืช ื“ื™ืกืงื™ื ื™ื“ื ื™ืช ื‘ืกื’ื ื•ืŸ "ื”ื›ืœ-ื‘-ืื—ื“". ื”ื™ื™ืชื™ ืฆืจื™ืš ืœื”ืชืงื™ืŸ ืืช ext3, ืžื›ื™ื•ื•ืŸ ืฉ-/boot ืœื ื™ื›ื•ืœ ืœื”ื™ื•ืช ื‘-ext4.
ื”ืžืขืจื›ืช ืขืœืชื” ืœืœื ืชืงืœื•ืช.

ื”ืฉืœื‘ ื”ืฉื ื™ - ื—ืคืฉ ื—ืœื•ืคื•ืช.
ืœืื—ืจ ื—ื™ื˜ื•ื˜ ื‘ืชื•ื›ืŸ ื”ื“ื™ืกืง ื”ืฉื ื™, ื”ื‘ื ืชื™ ืฉืžื“ื•ื‘ืจ ื‘ืžืื’ืจ ืขื ืชื•ืกืคืช. ื‘ื—ื‘ื™ืœื•ืช. ื•ืžืกืชื›ืœ ื‘-/etc/apt/sources.list, ื”ื‘ื ืชื™ ืฉืฆืจื™ืš ืœื”ืจื›ื™ื‘ ืื•ืชื• ื‘-/mnt/cdrom. ืื‘ืœ ืœื ืžืฆืืชื™ ืืช /etc/os-release. ืื‘ืœ ื™ืฉ /etc/mcst-version ืขื ื”ืชื•ื›ืŸ 3.0-rc36. 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

ืื ื›ื™, ืื•ืœื™ ืœื ื”ื‘ื ืชื™ ืžืฉื”ื•? ืื•ืœื™ ืžื™ืฉื”ื• ื™ื›ื•ืœ ืœื”ืกื‘ื™ืจ ื‘ื”ืขืจื•ืช: ืื™ืš ื”ืกืงืจื™ืคื˜ ื”ื–ื” ืžื‘ื˜ื™ื— ื’ื™ื‘ื•ื™ ื‘ื˜ื•ื— ื•ืืžื™ืŸ ืฉืœ ื ืชื•ื ื™ื? [TBD]

rsync, ืื’ื‘, ื›ืœื•ืœ ื‘ืชื•ืกืฃ. ืžืื’ืจื™ื. ื’ืจืกื” 3.1.3. ืื ื™ ื—ื•ืฉื‘ ืฉืฉื™ืžื•ืฉ ื‘-rsync ื”ื•ื ืขื“ื™ื™ืŸ ื—ืœื•ืคื” ื˜ื•ื‘ื” ื™ื•ืชืจ ืœื™ื™ืฉื•ื /mcst/bin/backup.

ืœืื—ืจ ืžื›ืŸ, ื”ื—ืœื˜ืชื™ ืœืฉื™ื ืื—ื“ ื˜ืจื™ Veeam Agent ืขื‘ื•ืจ ืœื™ื ื•ืงืก. ืžื™ืฉื”ื• ื™ืฉืืœ: "ืžื” ื”ืงืฉืจ ืฉืœ Veeam ื•ืชื—ืœื™ืคื™ ื™ื‘ื•ื?" ื›ืŸ, ื–ื” ืœื ื ืžืฆื ื‘ืคื ืงืก, ืื‘ืœ ื”ื•ื ืžืื•ืฉืจ ืขืœ ื™ื“ื™ FSTEC, ืžื” ืฉืื•ืžืจ ืฉื‘ื”ื™ืขื“ืจ ื—ืœื•ืคื•ืช ื ื™ืชืŸ ืœื”ืฉืชืžืฉ ื‘ื•. ืžื‘ื–ื‘ื–ื™ื ื—ืžืฉ ืขืฉืจื” ื“ืงื•ืช ืขืœ ื—ืœื•ืคื•ืช ืž ื”ืจื™ืฉื•ื, ื”ืฆืœื—ืชื™ ืœืžืฆื•ื 3 ืงื™ืฉื•ืจื™ื ืœืžื™ืœื” "ื’ื™ื‘ื•ื™" (ืืฃ ืื—ื“ ืœื ืงืฉื•ืจ ืœืฉืืœืชื™ ืœืžื™ืœื” "ืžื™ืœื•ืื™ื"). ืœื ืขืฉื™ืชื™ ื ื™ืชื•ื— ืžืขืžื™ืง ืฉืœ ื”ืชื•ื›ื ื™ื•ืช ื”ืœืœื•, ืื– ืœื ืื ืกื” ืœืฉืคื•ื˜ ืขื“ ื›ืžื” ื”ืŸ ืžืชืื™ืžื•ืช ืœื’ื™ื‘ื•ื™ ืžื›ื•ื ื•ืช ื”ืžืจืฆื•ืช ืœื™ื ื•ืงืก. ืžื™ ืฉืฆืจื™ืš ืืช ื–ื” ื™ืกื™ืง ืืช ื”ืžืกืงื ื” ืฉืœื• ื•ื™ืฉืชืฃ ืื•ืชื” ื‘ืชื’ื•ื‘ื•ืช.

ืฉืœื‘ ืฉืœื•ืฉ - ื”ืชืงื ื” ืฉืœ Veeam Agent ืขื‘ื•ืจ Linux.
ืื–, Veeam Agent ืขื‘ื•ืจ ืœื™ื ื•ืงืก ืžื•ืจื›ื‘ ืžืฉืชื™ ื—ื‘ื™ืœื•ืช: ืžื•ื“ื•ืœ ืœื™ื‘ืช veeamsnap (ืื’ื‘, ืžืงื•ืจ ื›ืืŸ) ื•ืงื•ื“ ืžืจื—ื‘ ืžืฉืชืžืฉ ืงื ื™ื™ื ื™ ื‘ืฆื•ืจืช ื—ื‘ื™ืœืช veeam.

ื”ื™ื™ืชื” ื‘ืขื™ื” ืงื˜ื ื” ืื—ืช ื‘ื”ืชืงื ืช ืžื•ื“ื•ืœ ื”ืงืจื ืœ - ื—ื‘ื™ืœืช dkms ื”ื—ืกืจื”. ื–ื”ื• ืฉื™ืจื•ืช ื”ืžืืคืฉืจ ืœื‘ื ื•ืช ืžื•ื“ื•ืœื™ ืœื™ื‘ื” ืžืžืงื•ืจ. ื›ื›ืœืœ, ื”ื•ื ื–ืžื™ืŸ ื‘ื›ืœ ื”ืคืฆื•ืช ื”ื—ื•ื‘. ื”ื™ื™ืชื™ ืฆืจื™ืš ืœื”ื•ืจื™ื“ ืืช ื–ื” ืžืžืื’ืจ deb ืฉืœ ืฆื“ ืฉืœื™ืฉื™. ื“ื‘ืจ ืื—ื“ ืฉืฉื™ืžื— ืื•ืชื™ ื”ื•ื ืฉื”ื—ื‘ื™ืœื” ืœื ืชืœื•ื™ื” ื‘ืืจื›ื™ื˜ืงื˜ื•ืจื”, ืื– ื”ื™ื ืžืชืื™ืžื” ื›ืžื• ื—ื‘ื™ืœื” ืžืงื•ืžื™ืช. ืžื“ื•ืข ื–ื” ืœื ื ื›ืœืœ ื‘ืจืฉื™ืžืช ื”ื—ื‘ื™ืœื•ืช ื”ื–ืžื™ื ื•ืช, ืื• ืœื™ืชืจ ื“ื™ื•ืง, ืœื ืคื•ืชื— [TBD]? ืื•ืœื™ ื”ื”ื ื—ื” ื”ื™ื ืฉืืฃ ืื—ื“ ืœื ืฆืจื™ืš ืœื‘ื ื•ืช ื•ืœื”ืจื™ืฅ ืžื•ื“ื•ืœื™ ืœื™ื‘ื” ืฉืื™ื ื MCST. ื‘ืืžืช ื™ืฉ ื›ืืŸ ืื™ ื”ืชืืžื” - ืžื›ื™ื•ื•ืŸ ืฉื™ืฉ ื›ื•ืชืจื•ืช ืœื™ื ื•ืงืก. ื›ืœื•ืžืจ, ืืช ื”ืžื•ื“ื•ืœ, ืื ืชืจืฆื”, ื ื™ืชืŸ ืœื”ืจื›ื™ื‘ ืื•ืชื• ื‘ื™ื“ ื•ืœื”ืคืขื™ืœ ืื•ืชื• ืขืœ ื™ื“ื™ ืกืงืจื™ืคื˜ ื›ืฉื”ืžื›ื•ื ื” ืžืชื—ื™ืœื”. ืื ื™ ื—ื•ืฉื‘ ืฉืืชื” ืœื ืฆืจื™ืš ืœืฆืคื•ืช ืœืขื“ื›ื•ื ื™ื ืชื›ื•ืคื™ื ืž-MCST [TBD].

"ื‘ืกื“ืจ, ื”ืžื•ื“ื•ืœ ืžื•ืชืงืŸ - ื”ื—ืœืง ื”ืงืฉื” ื‘ื™ื•ืชืจ ื ื’ืžืจ," ื—ืฉื‘ืชื™... ื—ื‘ื™ืœืช veeam ืขื‘ื•ืจ ืžืื’ืจ ื”-deb ืžื™ื•ืขื“ืช ืœืคืœื˜ืคื•ืจืžืช amd64, ื•ืœืžืขืจื›ืช ื”ื”ืคืขืœื” Elbrus ื™ืฉ ืคืœื˜ืคื•ืจืžืช x86_64 [TBD]. ื”ื”ื‘ื“ืœ, ื›ืžื•ื‘ืŸ, ื”ื•ื ืจืง ื‘ืฉื, ืื‘ืœ ื”ื”ื‘ื“ืœ ื”ื–ื” ื”ื•ืคืš ื›ืžืขื˜ ืืช ื›ืœ ื”ื—ื‘ื™ืœื•ืช ืžืžืื’ืจื™ deb ืฉืœ ืฆื“ ืฉืœื™ืฉื™ ืœื‘ืœืชื™ ืชื•ืืžื•ืช ืœืžืขืจื›ืช ื”ื”ืคืขืœื” Elbrus. ื ื™ืชืŸ ืœื‘ื˜ืœ ืืช ืื™ ื”ื”ื‘ื ื” ื”ืžืขืฆื‘ื ืช ื”ื–ื• ื‘ืคืฉื˜ื•ืช: ืคืฉื•ื˜ ืคืจืงื• ืืช ื”ื—ื‘ื™ืœื”, ืชืงื ื• ืืช ื”ืžื™ื“ืข ืขืœ ื”ืืจื›ื™ื˜ืงื˜ื•ืจื” ื•ื”ืจื›ื™ื‘ื• ืื•ืชื” ื‘ื—ื–ืจื”. ืื™ืš ืœืขืฉื•ืช ืืช ื–ื” ื—ื™ืคืฉืชื™ ืืช ื–ื” ื‘ื’ื•ื’ืœ ื‘ืื•ืคืŸ ืžื™ื™ื“ื™.

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 ื”ืฉื•ืจื” "# Source SuSE`s rc functions" ื ืžืฆืืช ื‘ืชื—ื™ืœืช ื”ืงื•ื‘ืฅ [TBD].

ืœืื—ืจ ืขื™ื‘ื•ื“ ื›ื” ื’ืก ืฉืœ ื”ื—ื‘ื™ืœื” ืขื ืงื•ื‘ืฅ, ื”ื•ืฉืง ื‘ื”ืฆืœื—ื” ื”ื’ื™ื‘ื•ื™ ืฉืœ ื›ืœ ื”ืžื›ื•ื ื” ื‘ืฉื™ืชื•ืฃ NFS. ื’ื ื˜ืขื™ื ืช ื”ื’ื™ื‘ื•ื™ ื”ืฆืœื™ื—ื”. ืื–, ืื ื™ ืžืืžื™ืŸ ืฉืœื’ื™ื‘ื•ื™ ืžื›ื•ื ื” ืขื Elbrus PDK, ืฉื”ื•ืจื“ื• "ื‘ื“ื™ื•ืง ื›ื›ื”" ืœืœื ื›ืœ ื”ืชื—ื™ื™ื‘ื•ืช, Veeam Agent ืขื‘ื•ืจ Linux ื‘ื”ื—ืœื˜ ืžืชืื™ื. ื’ื ืื—ืจื™ ื›ืœ ื”ืฉื™ื ื•ื™ื™ื ืขื ืงื•ื‘ืฅ.

ื›ืžื•ื‘ืŸ, ืขืจื›ืช ื”ื”ืคืฆื” ืฉืœ Elbrus OS ืื™ื ื” ื ืชืžื›ืช ืจืฉืžื™ืช, ืžื›ื™ื•ื•ืŸ ืฉื”ื™ื ืื™ื ื” ื›ืœื•ืœื” ื‘ืจืฉื™ืžืช ื”ื ืชืžื›ื™ื. ื‘ื ื•ืกืฃ, Veeam Agent for Linux ืœื ื ื‘ื“ืง ื‘ื• ืขืœ ื™ื“ื™ ืžื—ืœืงืช QA, ืื– ืืœื”. ืื™ืŸ ืชืžื™ื›ื” (ืœืคื—ื•ืช ื‘ื–ืžืŸ ืคืจืกื•ื ื”ืžืืžืจ).

ืื ื™ ืžืงื•ื•ื” ืฉื”ืžืืžืจ ื™ื•ืขื™ืœ ืœืžื™ ืฉืžื ืกื” ืœื™ื™ืฉื ืฆื• ืžืก' 334 ืžื™ื•ื 29.06.2017 ื‘ื™ื•ื ื™ XNUMX. ืฉืœื™ ืืœื™ืš... [TBD].

ืžืงื•ืจ: www.habr.com

ื”ื•ืกืคืช ืชื’ื•ื‘ื”