Linux Backup аз Veeam дар Elbrus OS. Ивазкунандаи воридот ['?' | '.' | '!']

Ҳама хонед
Мақолаҳои охирин дар бораи Habré Ивазкунии воридот дар амал. Қисми 1. Имконот и Мусиқӣ муддати тӯлонӣ бозӣ намекард ... ё чӣ гуна Elbrus OS ҳеҷ гоҳ озод набуд маро бепарво нагузошт. Ман тасмим гирифтам, ки ин масъаларо дар заминаи вазифаи эҳтиётӣ омӯзам. Илова бар ин, дар ин мақола Маҳсулоти нармафзори Veeam зикр шудаанд, ки ин маънои онро дорад, ки ин масъала метавонад махсусан дар заминаи воридотивазкунӣ алоқаманд бошад.

Linux Backup аз Veeam дар Elbrus OS. Ивазкунандаи воридот ['?' | '.' | '!']
манбаи аслии тасвир

Пеш аз ҳама, ман тасмим гирифтам, ки Elbrus OS-ро зеркашӣ кунам, ё дурусттараш, танҳо тақсимоти дастрас барои меъмории x86_64, бубинед, ки он чӣ гуна кор мекунад ва кӯшиш кунед, ки Veeam Agent for Linux-ро дар он насб кунам. Агар шумо хоҳед донед, ки аз ин чӣ баромад, лутфан ба гурба нигаред.

Ҳамин тавр, як дурнамои хурд, агар касе намедонад. «Эльбрус» чунин аст коркардкунанда бо системаи фармондиҳии мушаххас. Илова бар ин, нармафзори Elbrus OS мавҷуд аст. Ва - бар хилофи эътиқоди маъмул - барои идора кардани OS Elbrus, зарур нест, ки системаи сахтафзор дар асоси протсессори Elbrus бошад. "PDK "Elbrus" барои x86 вуҷуд дорад - дар асл, он дар домени ҷамъиятӣ дар шакли диски насбкунӣ пайдо шуд. Дар омади гап, тавзеҳи "PDK - маҷмӯаи таҳияи платформа, маҷмӯаи таҳиякунанда" мавҷуд аст - олӣ, ин маънои онро дорад, ки ҳадди аққал як компилятор вуҷуд дорад.

Боз як ақибнишинии хурди маҷбурӣ. Гап дар он аст, ки ман як вақтҳо бо нармафзори ватанӣ, ба монанди MSVS ва Baguette RTOS кор мекардам. Ман таҷрибаи кор бо ҷузъҳои ватанӣ доштам, аз ҷумла протсессори MCST. Бинобар ин, бо камоли масъулият гуфта метавонам, ки дар ин соха як хусусияти муайяне мавчуд аст ва кушиш мекунам, ки дар макола ба он дахл накунам. Вақте ки ман дар ҳақиқат мехоҳам, ман барчаспро [TBD] мегузорам. Аз ин рӯ, мо кӯшиш хоҳем кард, ки бидуни троллинг ва нолаи баналӣ кор кунем. Дар охир, саноати мудофиаи Русия ва сохторҳои давлатии Русия бояд фаҳманд. Кишвари калон - буҷаи хурд.. [TBD].

Марҳилаи сифр - зеркашӣ кунед. Ҷолиби диққат аст, ки хабари дастрас шудани OS Elbrus боиси резонанс гардид, ки сервери тақсимот аз кор рафт. [TBD] Ташаккур ба Яндекс ва муҳандис, ки фикр карданд, ки онро ба он ҷо кӯчонед. Ҳамин тавр, суръати зеркашӣ хуб аст.

Дар марњилаи аввал - насб. Ман онро дар аввалин гипервизор насб кардам, ки барои истифодаи ройгон дастрас буд. Ман ду ядро, якчанд gig RAM, 32 MB барои видео ҷудо кардам (интерфейси графикӣ вуҷуд дорад, ман фикр мекардам). Диски маъмулӣ аст - 32 ГБ.
Ман насбро оғоз кардам. Ман дастурҳои насбкуниро истифода накардаам, бинобар ин ман дар бораи он шарҳ дода наметавонам. Интерфейси насби TUI хеле минималистист.

Linux Backup аз Veeam дар Elbrus OS. Ивазкунандаи воридот ['?' | '.' | '!']
Хуб, олиҷаноб, мо метавонем бе муш кор кунем.

Ман тирезаи навбатиро дар кӯшиши дуюм идора кардам. Чаро ҳангоми насб аз диск дастгоҳи пешфарз sr0 [TBD] -ро интихоб накунед?
Манбаи CD-ROM-ро интихоб кунед ва идома диҳед.

Linux Backup аз Veeam дар Elbrus OS. Ивазкунандаи воридот ['?' | '.' | '!']

Ҳангоми интихоби минтақаи вақт, ман ногаҳон фаҳмидам, ки система раванди оғозёбиро истифода мебарад ва ман аз TTY0 кор мекунам.

Linux Backup аз Veeam дар Elbrus OS. Ивазкунандаи воридот ['?' | '.' | '!']

Хуб, биёед "Элбрус"-ро ҳамчун ҷомеа тасниф кунем Муъминони кӯҳна[TBD]. Аслан, ин хуб аст: ба шумо лозим нест, ки рамзи сарчашмаро пурсед, то бубинед, ки раванди зеркашӣ чӣ гуна кор мекунад, зеро ҳама чиз скрипт аст.

Боқимонда қариб муҳим нест: мо ҳама чизро мегузорем ва розӣ мешавем. Дар баробари ин, мо мефаҳмем, ки ядро ​​3.14.79-13.84 истифода мешавад. Ҳмм, Debian 7 3.2 [TBD] дошт.

Баъдан, тақсимоти пешфарзии дискро интихоб кунед ва... Мо огоҳиро мебинем:

Linux Backup аз 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 барои Linux. Касе мепурсад: "Veeam ва ивазкунандаи воридот ба он чӣ иртибот дорад?" Бале, он дар феҳрист нест, аммо он аз ҷониби FSTEC тасдиқ шудааст, яъне дар сурати мавҷуд набудани алтернативаҳо он метавонад истифода шавад. Харҷ понздаҳ дақиқа оид ба алтернативаҳои аз Феҳрист, Ман тавонистам 3 истинодро барои калимаи "захира" пайдо кунам (ягон ба саволи ман барои калимаи "захира" алоқаманд нест). Ман таҳлили амиқи ин барномаҳоро накардаам, бинобар ин ман кӯшиш намекунам доварӣ кунам, ки онҳо то чӣ андоза барои нусхабардории мошинҳои Linux кор мекунанд, мувофиқанд. Ба касе лозим меояд, худаш хулоса мебарорад ва дар коментария мубодила мекунад.

Давраи сеюм — насби Veeam Agent барои Linux.
Ҳамин тавр, Veeam Agent барои Linux аз ду баста иборат аст: модули ядрои veeamsnap (дар омади гап, сарчашма дар ин ҷо) ва рамзи хусусии корбар дар шакли бастаи veeam.

Ҳангоми насб кардани модули ядро ​​​​як мушкилоти хурд вуҷуд дошт - бастаи гумшудаи dkms. Ин хидматест, ки ба шумо имкон медиҳад модулҳои ядроиро аз манбаъ созед. Чун қоида, он дар ҳама тақсимоти deb дастрас аст. Ман бояд онро аз анбори деби тарафи сеюм зеркашӣ кунам. Як чизе, ки маро шод кард, ин аст, ки баста аз меъморӣ вобаста нест, бинобар ин он мисли як модарӣ мувофиқ аст. Чаро он ба рӯйхати бастаҳои дастрас дохил карда нашудааст, ё дурусттараш [TBD] таҳия нашудааст? Эҳтимол тахмин карда мешавад, ки ҳеҷ кас набояд ягон модули ядрои ғайри MCST сохта ва идора кунад. Дар ҳақиқат дар ин ҷо ихтилоф вуҷуд дорад - зеро сарлавҳаҳои Linux мавҷуданд. Яъне, агар хоҳед, модулро дастӣ ҷамъ кардан мумкин аст ва ҳангоми ба кор андохтани мошин тавассути скрипт ба кор андохта мешавад. Ман фикр мекунам, ки шумо набояд аз MCST [TBD] навсозиҳои зуд-зуд интизор шавед.

"Хуб, модул насб карда шуд - қисми душвортарин тамом шуд", ман фикр кардам... Бастаи veeam барои анбори deb барои платформаи amd64 аст ва Elbrus OS дорои платформаи x86_64 [TBD] мебошад. Фарқият, албатта, танҳо дар ном аст, аммо ин фарқият қариб ҳама бастаҳоро аз анбори деби тарафи сеюм бо OS 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 санҷида нашудааст, бинобар ин онҳо. дастгирӣ нест (ҳадди ақал дар вақти нашри мақола).

Умедворам, ки мақола барои онҳое, ки кӯшиши иҷрои фармони No334 аз 29.06.2017 июни соли XNUMX доранд, муфид хоҳад буд. Аз ман ба шумо... [TBD].

Манбаъ: will.com

Илова Эзоҳ