Linux Backup evela Veeam kwi Elbrus OS. Thatha ngaphandle endaweni ['?' | '.' | '!']

Molweni nonke.
Amanqaku akutsha nje ngoHabré Ukuthatha indawo endaweni yokusebenza. Icandelo 1. Iinketho и Umculo awuzange udlale ixesha elide ... okanye indlela i-Elbrus OS engazange ikhululeke ngayo khange andishiye ndingakhathali. Ndagqiba ekubeni ndifunde lo mbandela kumxholo womsebenzi wokugcina. Ngaphezu koko, kwi eli nqaku Iimveliso zeVeeam zeSoftware zikhankanyiwe, nto leyo ethetha ukuba umba unokuba yimfuneko ngokukodwa kumxholo wokutshintshwa kwezinto ngaphandle.

Linux Backup evela Veeam kwi Elbrus OS. Thatha ngaphandle endaweni yoko ['?' | '.' | '!']
umthombo womfanekiso wokuqala

Okokuqala, ndagqiba ekubeni ndikhuphele i-Elbrus OS, okanye kunoko, kuphela ukuhanjiswa okukhoyo kwi-x86_64 ye-architecture, ubone indlela esebenza ngayo, kwaye uzame ukufaka i-Veeam Agent ye-Linux kuyo. Ukuba ufuna ukwazi ukuba yintoni na ephuma kule, nceda ubone ikati.

Ke, ukuphambuka okuncinci, ukuba umntu akazi. "Elbrus" injalo iprosesa ngenkqubo yomyalelo ethile. Ukongeza kuyo, kukho Elbrus OS software. Kwaye - ngokuchasene nenkolelo eyaziwayo - ukusebenzisa i-Elbrus OS, akuyimfuneko ukuba nenkqubo ye-hardware esekelwe kwiprosesa ye-Elbrus. Kukho "PDK "Elbrus" ye-x86" - enyanisweni, yavela kwindawo yoluntu ngendlela yediski yokufakela. Ngendlela, kukho umbhalo osemazantsi "PDK - ikiti yophuhliso lweqonga, ikiti yomphuhlisi" - kuhle, oko kuthetha ukuba kukho ubuncinane umqokeleli apho.

Enye into encinci yokurhoxa. Inyani kukuba ndakhe ndajongana nesoftware yasekhaya, efana ne-MSVS kunye neBaguette RTOS. Bendinamava okusebenza nezinto zasekhaya, kubandakanya iprosesa evela kwi-MCST. Ngoko ke, ndingatsho ngoxanduva olupheleleyo ukuba kukho inkcazo ethile kule ndawo kwaye ndiya kuzama ukungayichukumisi kwinqaku. Xa ndifuna ngokwenene, ndiza kubeka ithegi [TBD]. Ke siya kuzama ukwenza ngaphandle kokunyathela ngokuthe ngqo kunye nokuncwina kwe-banal. Ekugqibeleni, ishishini lokukhusela laseRashiya kunye nee-arhente zikarhulumente kufuneka ziqondwe. Ilizwe elikhulu - uhlahlo lwabiwo-mali oluncinci.. [TBD].

Zero isigaba - Khuphela. Kuyaphawuleka ukuba iindaba zokuba i-Elbrus OS ifumaneke ibangele i-resonance, kangangokuba umncedisi wokusabalalisa wehla. [TBD] Enkosi kuYandex kunye nenjineli ecinge ukuyihambisa apho. Ngoko isantya sokukhuphela silungile.

Inqanaba lokuqala - ukufakwa. Ndiyifake kwi-hypervisor yokuqala eyayifumaneka ukuba isetyenziswe simahla. Ndabele ii-cores ezimbini, iigigi ezimbalwa ze-RAM, i-32 MB yevidiyo (kuya kubakho ujongano lwegraphical, ndacinga). Idiski njengesiqhelo - 32 GB.
Ndaqalisa ukufaka. Khange ndisebenzise imiyalelo yokuhlohla, ngoko ke andinakho ukuphawula ngayo. Ujongano lofakelo lweTUI luncinci kakhulu.

Linux Backup evela Veeam kwi Elbrus OS. Thatha ngaphandle endaweni yoko ['?' | '.' | '!']
Ewe, kuhle, sinokwenza ngaphandle kwempuku.

Ndilawule ifestile elandelayo kwitry yesibini. Kutheni ungakhethi isixhobo esihlala sihleli sr0 [TBD] xa uhlohla kwidiski?
Khetha umthombo we-CD-ROM kwaye uqhubele phambili.

Linux Backup evela Veeam kwi Elbrus OS. Thatha ngaphandle endaweni yoko ['?' | '.' | '!']

Ngelixa bendikhetha indawo yexesha, ndiye ndaqonda ukuba inkqubo isebenzisa inkqubo yokuqalisa i-init, kwaye ndisebenza kwi-TTY0.

Linux Backup evela Veeam kwi Elbrus OS. Thatha ngaphandle endaweni yoko ['?' | '.' | '!']

Kulungile, ngoko ke makhe sihlele "u-Elbrus" njengoluntu Amakholwa Amadala[TBD]. Ngokomgaqo, oku kulungile: awudingi ukubuza ikhowudi yomthombo ukuze ubone indlela inkqubo yokukhuphela isebenza ngayo, kuba yonke into ibhaliwe.

Eminye iphantse ingabalulekanga: sibeka yonke into kwaye siyavuma. Endleleni, sifumanisa ukuba i-kernel isetyenziselwa i-3.14.79-13.84. Hmm, i-Debian 7 ine-3.2 [TBD].

Okulandelayo, khetha ulwahlulo lwediski olungagqibekanga kwaye... Sibona isilumkiso:

Linux Backup evela Veeam kwi Elbrus OS. Thatha ngaphandle endaweni yoko ['?' | '.' | '!']

Hmm, ngandlela ithile ukwahlula okuzenzekelayo akuzange kumelane kakuhle nediski yegig engama-32. Andizange ndiyitshintshe idiski; ndigqibe imfuno nge-disk partitioning kwi-style "all-in-one". Kwafuneka ndifake i-ext3, kuba / i-boot ayinakuba kwi-ext4.
Inkqubo yeza ngaphandle kwesiganeko.

Inqanaba lesibini - khangela ezinye iindlela.
Emva kokukhangela imixholo yediski yesibini, ndaqonda ukuba le yindawo yokugcina eyongezelelweyo. kwiipakethe. Kwaye ndijonge kwi /etc/apt/sources.list, ndaqonda ukuba kufuneka ifakwe kwi /mnt/cdrom. Kodwa andizange ndifumane /etc/os-release. Kodwa kukho /etc/mcst-version enomxholo 3.0-rc36. 3.0 mhlawumbi luguqulelo - kubonakala kufanelekile, kodwa rc36? Ngokubanzi, isoftware yomntu wesithathu ayinakukwazi ukuqaphela oku kusasazwa ngendlela yakudala.

Kulwahlulo lweengcambu, i/mcst directory ibamba iliso lam, kwaye apho, ngentliziyo etshonayo, ndifumene /mcst/backup. Oko kukuthi, kukho isixhobo sokugcina, kwaye sakhelwe kwinkqubo! “Kulungile,” ndacinga, “Makhe sibone ukuba isebenza njani le nto!”

Kwavela ukuba kukho iscript ye-bash ye-4Kb /mcst/bin/backup ebonelela ngokukopa ifayile. Ngokungagqibekanga - kwi/mcst/backup directory. Kwikhowudi yomthombo bendilindele ukubona umyalelo we-rsync, kodwa awukho kuqwalaselo olungagqibekanga. Iscript sikhuphela iifayile ngokulula. Umyalelo ujongeka ngolu hlobo:

cp -rpdx <file backup> <file>

Yonke ifayile /mcst/bin/backup ilaphaNdiyakulumkisa kwangoko ukuba le script yodwa ayanelanga ukuqonda ngokupheleleyo. Itsala imisebenzi kwi/mcst/bin/source, into efana nelayibrari yemisebenzi. Khange ndiyifake (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

Nangona, mhlawumbi andizange ndiyiqonde into? Mhlawumbi umntu unokuchaza kumazwana: le script iqinisekisa njani ukuba i-backup yedatha ekhuselekileyo neyithembekileyo? [TBD]

rsync, ngendlela, ibandakanyiwe kwi-add-on. iindawo zokugcina. Inguqulelo 3.1.3. Ndicinga ukuba ukusebenzisa i-rsync kuseyeyona ndlela ibhetele kwi/mcst/bin/backup application.

Emva koko, ndagqiba ekubeni ndibeke entsha Iarhente yeVeeam yeLinux. Omnye umntu uya kubuza: "I-Veeam kunye nokutshintshwa kwangaphandle kunento yokwenza nayo?" Ewe, ayikho kwirejista, kodwa iqinisekiswa yi-FSTEC, oku kuthetha ukuba xa kungekho ezinye iindlela ezinokusetyenziswa. Ukuchitha imizuzu elishumi elinesihlanu kwezinye iindlela ukusuka ubhaliso, Ndikwazile ukufumana izixhumanisi ze-3 zegama elithi "backup" (akukho nanye ehambelana nombuzo wam wegama elithi "gcina"). Andenzanga uhlalutyo olunzulu lwezi nkqubo, ngoko ke andizukuzama ukugweba ukuba zikulungele kangakanani na ukuxhasa oomatshini abasebenzisa iLinux. Nabani na oyidingayo uya kuzenzela esakhe isigqibo aze abelane ngaso kumagqabaza.

Inqanaba lesithathu -Ufakelo lwe-Agent yeVeeam yeLinux.
Ke, iVeeam Agent yeLinux iqulathe iipakethe ezimbini: imodyuli yeveamsnap kernel (ngendlela, umthombo apha) kunye nekhowudi yendawo yomsebenzisi yobunini ngendlela yephakheji ye-veeam.

Bekukho ingxaki enye encinci ngokufaka imodyuli yekernel - iphakheji yedkms engekhoyo. Le yinkonzo ekuvumela ukuba wakhe iimodyuli ze kernel ukusuka kumthombo. Njengomthetho, iyafumaneka kuzo zonke ii-deb distributions. Kwafuneka ndiyikhuphele kwindawo yesithathu yokugcina imali. Inye into eyandivuyisayo kukuba ipakethe ayixhomekekanga kulwakhiwo, ngoko ke ilingana njengeyemveli. Kutheni ingazange ibandakanywe kuluhlu lweepakethe ezikhoyo, okanye kunoko, ayizange iphuhliswe [TBD]? Mhlawumbi kucingelwa ukuba akukho mntu kufuneka akhe kwaye aqhube naziphi iimodyuli ezingezizo ze-MCST kernel. Kukho ngokwenene ukungafani apha - kuba kukho i-linux-headers. Oko kukuthi, imodyuli, ukuba iyafunwa, inokuhlanganiswa ngesandla kwaye iqaliswe ngeskripthi xa umatshini uqala. Ndicinga ukuba akufanele ulindele uhlaziyo rhoqo oluvela kwi-MCST [TBD].

"Kulungile, imodyuli ifakiwe - eyona nto inzima iphelile," ndacinga ... Iphakheji ye-veeam ye-deb repository ye-amd64 yesikhulumi, kwaye i-Elbrus OS ine-x86_64 [TBD] iqonga. Umahluko, kunjalo, usegameni kuphela, kodwa lo mahluko wenza ukuba phantse zonke iipakethe ezivela kwindawo yesithathu zedeb zingahambelani ne-Elbrus OS. Oku kungaqondani okucaphukisayo kunokupheliswa ngokulula: qhafaza iphakheji, lungisa ulwazi malunga noyilo kwaye ulubuyisele kunye. Ukwenza njani IGoogle ngoko nangoko.

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

Enye ingxaki kukuxhomekeka. Iifayile eziyimfuneko zibonakala zikhona, kodwa iipakethe azikho. Ingcamango yayiyeyokuba amagama eepakethe ahluke "kwi-analogues engenisiweyo". Mhlawumbi amathala eencwadi apakishwe ngokwahlukileyo. Andizange ndingene kwiinkcukacha ezininzi, ndisuse phantse zonke izinto ezixhomekeke kuyo, kwaye ukufakela kwaqhubeka.

Emva koko kwavela iingxaki ngekhowudi yokuqalisa inkonzo. Isikripthi /lib/init/vars.sh besingekho. Ngesizathu esithile, i-Elbrus ilawula ngaphandle kwayo, ngoko ke siya kuyisusa nayo. Okulandelayo, bekufuneka sitshintshe umsebenzi wemveliso yomyalezo: log_daemon_msg kunye nelog_end_msg imisebenzi ibingekho. Emva kokukhangela kwifayile /lib/lsb/init-functions, ndifumene umsebenzi welog_success_msg - kuya kuba kuhle kuthi kwiimvavanyo. Ngendlela, kwifayile ye/lib/lsb/init-functions umgca “# Umthombo wemisebenzi ye-SuSE`s rc” isekuqalekeni kwefayile ye [TBD].

Emva kokwenziwa kwepakethe erhabaxa ngefayile, ugcino lomatshini wonke kwisabelo se-NFS lwaphehlelelwa ngempumelelo. Ukunyuswa kogcino nako kuphumelele. Ke, ndiyakholelwa ukuba ukuxhasa umatshini kunye ne-Elbrus PDK, ekhutshelwe "nje njalo" ngaphandle kwezibophelelo, i-Veeam Agent yeLinux ifanelekile. Nasemva kwazo zonke izilungiso ngefayile.

Ngokuqinisekileyo, ikiti yokuhambisa i-Elbrus OS ayixhaswanga ngokusesikweni, kuba ayiqukwanga kuluhlu lwabaxhasiweyo. Ukongeza, iVeeam Agent yeLinux ayizange ivavanywe kuyo lisebe le-QA, ke ezo. akukho nkxaso (ubuncinci ngexesha lokupapashwa kwenqaku).

Ndiyathemba ukuba inqaku liya kuba luncedo kwabo bazama ukuphumeza umyalelo we-334 kaJuni 29.06.2017, i-XNUMX. Eyam kuwe... [TBD].

umthombo: www.habr.com

Yongeza izimvo