Linux thaub qab los ntawm Veeam ntawm Elbrus OS. Ntshuam hloov ['?' | '.' | '!']

Nyob zoo txhua tus.
Cov lus tsis ntev los no ntawm Habre Ntshuam hloov hauv kev xyaum. Ntu 1. Kev xaiv ΠΈ Lub suab paj nruag tsis tau ua si ntev ... lossis yuav ua li cas Elbrus OS yeej tsis pub dawb tsis tau tso kuv tseg. Kuv txiav txim siab los kawm txog qhov teeb meem no hauv cov ntsiab lus ntawm kev ua haujlwm thaub qab. Ntxiv mus, hauv qhov no tsab xov xwm Veeam Software cov khoom tau hais, uas txhais tau hais tias qhov teeb meem yuav cuam tshuam tshwj xeeb hauv cov ntsiab lus ntawm kev hloov pauv.

Linux thaub qab los ntawm Veeam ntawm Elbrus OS. Ntshuam hloov ['?' | '.' | '!']
daim duab qub

Ua ntej tshaj plaws, kuv tau txiav txim siab rub tawm Elbrus OS, lossis theej, tsuas yog muaj kev faib tawm rau x86_64 architecture, saib nws ua haujlwm li cas, thiab sim rau nruab Veeam Agent rau Linux ntawm nws. Yog koj xav paub dab tsi tawm ntawm no, thov saib miv.

Yog li ntawd, ib tug me me digression, yog hais tias ib tug neeg tsis paub. "Elbrus" zoo li ntawd processor nrog rau cov lus txib tshwj xeeb. Ntxiv rau nws, muaj Elbrus OS software. Thiab - tsis sib xws rau cov kev ntseeg nrov - ua haujlwm ntawm Elbrus OS, nws tsis tas yuav tsum muaj kev kho vajtse raws li Elbrus processor. Muaj "PDK "Elbrus" rau x86" - qhov tseeb, nws tshwm sim nyob rau hauv pej xeem sau nyob rau hauv daim ntawv ntawm ib tug installation disk. Los ntawm txoj kev, muaj cov lus taw qhia "PDK - cov khoom siv txhim kho platform, cov khoom siv tsim tawm" - zoo heev, uas txhais tau hais tias muaj tsawg kawg yog ib qho compiler nyob ntawd.

Lwm me me yuam kev tawm. Qhov tseeb yog tias kuv ib zaug tau hais txog software hauv tsev, xws li MSVS thiab Baguette RTOS. Kuv tau muaj kev paub ua haujlwm nrog cov khoom siv hauv tsev, suav nrog tus txheej txheem los ntawm MCST. Yog li ntawd, kuv tuaj yeem hais nrog lub luag haujlwm tag nrho tias muaj qee qhov tshwj xeeb hauv cheeb tsam no thiab kuv yuav sim tsis txhob kov nws hauv tsab xov xwm. Thaum kuv xav tau tiag tiag, kuv yuav muab lub cim [TBD]. Yog li peb yuav sim ua yam tsis muaj kev trolling outright thiab banal moaning. Thaum kawg, kev lag luam tiv thaiv Lavxias thiab tsoomfwv cov koomhaum yuav tsum nkag siab. Lub teb chaws loj - pob nyiaj siv me me .. [TBD].

Zero theem - download tau. Nws yog ib qho tseem ceeb uas cov xov xwm hais tias Elbrus OS tau dhau los ua rau muaj kev cuam tshuam, ntau heev kom cov neeg rau zaub mov xa mus poob. [TBD] Ua tsaug rau Yandex thiab tus kws tshaj lij uas xav txav nws mus rau ntawd. Yog li ntawd lub download ceev yog zoo.

Thawj theem - kev teeb tsa. Kuv ntsia nws ntawm thawj hypervisor uas muaj rau kev siv dawb. Kuv faib ob cores, ob peb gigs ntawm RAM, 32 MB rau video (yuav muaj ib tug graphical interface, kuv xav). Lub disk yog li qub - 32 GB.
Kuv pib lub installation. Kuv tsis tau siv cov lus qhia installation, yog li kuv tsis tuaj yeem tawm tswv yim rau nws. TUI installation interface yog qhov tsawg heev.

Linux thaub qab los ntawm Veeam ntawm Elbrus OS. Ntshuam hloov ['?' | '.' | '!']
Zoo, zoo, peb tuaj yeem ua yam tsis muaj nas.

Kuv tswj lub qhov rais tom ntej ntawm qhov thib ob sim. Vim li cas ho tsis xaiv lub cuab yeej sr0 [TBD] thaum txhim kho los ntawm disk?
Xaiv CD-ROM qhov chaw thiab txav mus rau.

Linux thaub qab los ntawm Veeam ntawm Elbrus OS. Ntshuam hloov ['?' | '.' | '!']

Thaum xaiv lub sijhawm, kuv mam li nco dheev pom tias lub kaw lus siv cov txheej txheem khau raj init, thiab kuv ua haujlwm los ntawm TTY0.

Linux thaub qab los ntawm Veeam ntawm Elbrus OS. Ntshuam hloov ['?' | '.' | '!']

OK, ces cia peb faib "Elbrus" ua ib lub zej zog Cov ntseeg qub[TBD]. Hauv paus ntsiab lus, qhov no yog qhov zoo: koj tsis tas yuav nug cov cai los saib seb cov txheej txheem rub tawm ua haujlwm li cas, txij li txhua yam tau sau tseg.

Qhov seem yog yuav luag tsis tseem ceeb: peb muab txhua yam thiab pom zoo. Raws li txoj kev, peb pom tias cov ntsiav siv 3.14.79-13.84. Hmm, Debian 7 muaj 3.2 [TBD].

Tom ntej no, xaiv lub default disk partitioning thiab ... Peb pom ib tug ceeb toom:

Linux thaub qab los ntawm Veeam ntawm Elbrus OS. Ntshuam hloov ['?' | '.' | '!']

Hmm, qee qhov kev faib tsis siv neeg tsis tuaj yeem tiv taus zoo nrog 32 gig disk. Kuv tsis tau hloov lub disk; Kuv ua tiav cov lus nug nrog phau ntawv faib disk hauv "tag nrho-hauv-ib" style. Kuv yuav tsum tau nruab ext3, vim / khau raj tsis tuaj yeem nyob hauv ext4.
Lub kaw lus tuaj txog yam tsis muaj xwm txheej.

Thib theem ob - nrhiav lwm txoj hauv kev.
Tom qab rummaging los ntawm cov ntsiab lus ntawm lub thib ob disk, kuv pom tau hais tias qhov no yog ib tug repository nrog ntxiv. hauv pob. Thiab saib ntawm /etc/apt/sources.list, Kuv pom tau hais tias nws yuav tsum tau muab tso rau hauv /mnt/cdrom. Tab sis kuv tsis pom /etc/os-release. Tab sis muaj /etc/mcst-version nrog cov ntsiab lus 3.0-rc36. 3.0 yog tej zaum qhov version - nws zoo li haum, tab sis rc36? Feem ntau, cov software thib peb feem ntau yuav tsis tuaj yeem paub txog qhov kev faib tawm no hauv txoj kev classical.

Hauv cov hauv paus kev faib tawm, / mcst directory catches kuv lub qhov muag, thiab muaj, nrog lub plawv nres, kuv pom / mcst / thaub qab. Ntawd yog, muaj cov cuab yeej thaub qab, thiab nws tau ua rau hauv qhov system! "Zoo heev,"Kuv xav tias, "Cia peb saib seb qhov no ua haujlwm li cas!"

Nws muab tawm tias muaj 4Kb bash tsab ntawv / mcst / bin / thaub qab uas muab cov ntaub ntawv luam tawm. Los ntawm lub neej ntawd - mus rau /mcst/backup directory. Hauv qhov chaws kuv xav kom pom rsync hais kom ua, tab sis nws tsis yog nyob rau hauv lub neej ntawd configuration. Tsab ntawv tsuas yog luam cov ntaub ntawv. Cov lus txib zoo li no:

cp -rpdx <file backup> <file>

Tag nrho cov ntaub ntawv /mcst/bin/backup nyob ntawm noKuv ceeb toom rau koj tam sim ntawd tias tsab ntawv no ib leeg tsis txaus kom nkag siab. Nws rub cov haujlwm los ntawm /mcst/bin/source, uas yog qee yam zoo li lub tsev qiv ntawv ntawm cov haujlwm. Kuv tsis suav nrog nws (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

Txawm li cas los xij, tej zaum kuv tsis nkag siab qee yam? Tej zaum ib tug neeg tuaj yeem piav qhia hauv cov lus: tsab ntawv no ua li cas kom muaj kev nyab xeeb thiab txhim khu kev qha cov ntaub ntawv thaub qab? [TBD]

rsync, los ntawm txoj kev, muaj nyob rau hauv lub add-on. chaw khaws cia. Version 3.1.3. Kuv xav tias siv rsync tseem yog lwm txoj hauv kev zoo dua rau /mcst/bin/backup application.

Tom ntej no, kuv txiav txim siab muab ib qho tshiab Veeam Agent rau Linux. Ib tug yuav nug: "Veeam thiab ntshuam hloov pauv tau ua li cas rau nws?" Yog lawm, nws tsis yog nyob rau hauv daim ntawv teev npe, tab sis nws tau lees paub los ntawm FSTEC, uas txhais tau hais tias thaum tsis muaj lwm txoj hauv kev nws tuaj yeem siv tau. Siv kaum tsib feeb ntawm lwm txoj kev los ntawm sau npe, Kuv muaj peev xwm nrhiav tau 3 qhov txuas rau lo lus " thaub qab" (tsis muaj qhov cuam tshuam rau kuv cov lus nug rau lo lus "reserve"). Kuv tsis tau ua qhov kev soj ntsuam tob ntawm cov kev pab cuam no, yog li kuv yuav tsis sim txiav txim seb lawv tsim nyog li cas rau thaub qab cov tshuab khiav Linux. Leej twg xav tau nws yuav kos nws tus kheej cov lus xaus thiab qhia nws hauv cov lus.

Qib Peb - kev teeb tsa ntawm Veeam Agent rau Linux.
Yog li, Veeam Agent rau Linux muaj ob pob: veeamsnap kernel module (los ntawm txoj kev, qhov chaw ntawm no) thiab proprietary user-space code nyob rau hauv daim ntawv ntawm veeam pob.

Muaj ib qho teeb meem me me nrog kev txhim kho cov ntsiav module - lub pob dkms ploj lawm. Qhov no yog ib qho kev pabcuam uas tso cai rau koj los tsim cov kernel modules los ntawm qhov chaw. Raws li txoj cai, nws muaj nyob rau txhua qhov kev faib tawm deb. Kuv yuav tsum download tau nws los ntawm tus thib peb-tog deb repository. Ib yam uas ua rau kuv zoo siab yog tias lub pob tsis nyob ntawm lub architecture, yog li nws haum zoo li ib haiv neeg. Vim li cas ho tsis suav nrog hauv cov npe ntawm cov pob khoom muaj, lossis tsis tau tsim [TBD]? Tej zaum nws xav tias tsis muaj leej twg yuav tsum tsim thiab khiav ib qho tsis yog MCST kernel modules. Muaj tiag tiag qhov sib txawv ntawm no - vim tias muaj linux-headers. Ntawd yog, lub module, yog tias xav tau, tuaj yeem sib sau ua ke ntawm tes thiab tso tawm los ntawm tsab ntawv thaum lub tshuab pib. Kuv xav tias koj yuav tsum tsis txhob xav tias yuav hloov tshiab los ntawm MCST [TBD].

"OK, lub module tau teeb tsa - qhov nyuaj tshaj plaws tau dhau lawm," Kuv xav tias ... Lub pob veeam rau deb repository yog rau amd64 platform, thiab Elbrus OS muaj x86_64 [TBD] platform. Qhov txawv, ntawm chav kawm, tsuas yog nyob rau hauv lub npe, tab sis qhov sib txawv no ua rau yuav luag tag nrho cov pob khoom los ntawm cov neeg thib peb deb repositories incompatible nrog Elbrus OS. Qhov kev nkag siab tsis meej no tuaj yeem raug tshem tawm yooj yim: tsuas yog disassemble lub pob, kho cov ntaub ntawv hais txog architecture thiab muab nws rov qab ua ke. Yuav ua li cas Googled nws tam sim ntawd.

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

Lwm qhov teeb meem yog dependencies. Cov ntaub ntawv tsim nyog zoo li muaj nyob ntawd, tab sis cov pob khoom tsis yog. Lub tswv yim yog tias cov npe ntawm cov pob khoom sib txawv ntawm lawv "cov khoom lag luam xa tawm". Tej zaum cov tsev qiv ntawv tau ntim txawv. Kuv tsis tau mus rau hauv ntau yam nthuav dav, tshem tawm yuav luag txhua qhov kev cia siab, thiab kev teeb tsa mus tom ntej.

Tom qab ntawd cov teeb meem tshwm sim nrog cov kev pabcuam pib code. Tsab ntawv /lib/init/vars.sh ploj lawm. Rau qee qhov laj thawj, Elbrus tswj tsis tau nws, yog li peb yuav tshem nws thiab. Tom ntej no, peb yuav tsum hloov cov lus tso tawm muaj nuj nqi: lub log_daemon_msg thiab log_end_msg ua haujlwm ploj lawm. Tom qab rummaging ib ncig ntawm cov ntaub ntawv /lib/lsb/init-functions, kuv pom lub log_success_msg muaj nuj nqi - nws yuav zoo rau peb rau kev sim. Los ntawm txoj kev, hauv /lib/lsb/init-functions ua cov kab "# Source SuSE's rc functions" yog thaum pib ntawm [TBD] cov ntaub ntawv.

Tom qab xws li kev ua haujlwm ntxhib ntawm pob nrog cov ntaub ntawv, tag nrho-tshuab thaub qab ntawm NFS qhia tau ua tiav tiav. Lub thaub qab mount kuj ua tiav. Yog li, kuv ntseeg tias rau thaub qab lub tshuab nrog Elbrus PDK, rub tawm "zoo li ntawd" yam tsis muaj lub luag haujlwm, Veeam Agent rau Linux yog qhov tsim nyog. Txawm tias tom qab tag nrho cov kev hloov kho nrog ib cov ntaub ntawv.

Tau kawg, Elbrus OS cov khoom siv faib khoom tsis raug txhawb nqa, vim nws tsis suav nrog hauv cov npe ntawm cov neeg txhawb nqa. Tsis tas li ntawd, Veeam Agent rau Linux tsis tau sim ntawm nws los ntawm QA department, yog li ntawd. tsis muaj kev txhawb nqa (tsawg kawg thaum lub sijhawm tshaj tawm ntawm tsab xov xwm).

Kuv vam tias tsab xov xwm yuav muaj txiaj ntsig zoo rau cov neeg uas tab tom sim ua raws li tsab ntawv 334 ntawm Lub Rau Hli 29.06.2017, XNUMX. Kuv rau koj... [TBD].

Tau qhov twg los: www.hab.com

Ntxiv ib saib