Linux Backup ka Veeam on Elbrus OS. Soo dejinta beddelka ['?' | ' | '!']

Qof walba raalli.
Maqaalladii u dambeeyay ee Habré Soo dejinta beddelka ficil ahaan. Qaybta 1. Ikhtiyaarada и Muusiggu ma ciyaarin muddo dheer...ama sida Elbrus OS waligiis xor uma noqon igama tegin danayste. Waxa aan go'aansaday in aan arrintan ku darso hawsha kaydinta. Intaa waxaa dheer, in maqaalkani Alaabooyinka Software-ka ee Veeam waa la sheegay, taas oo macnaheedu yahay in arrintu ay khusayso gaar ahaan marka la eego macnaha beddelka soo dejinta.

Linux Backup ka Veeam on Elbrus OS. Soo dejinta beddelka ['?' | ' | '!']
isha sawirka asalka ah

Ugu horreyntii, waxaan go'aansaday inaan soo dejiyo Elbrus OS, ama halkii, kaliya qaybinta la heli karo ee naqshadaha x86_64, arag sida ay u shaqeyso, oo isku day inaad ku rakibto Veeam Agent ee Linux. Haddii aad rabto inaad ogaato waxa arrintan ka soo baxay, fadlan eeg bisad.

Markaa, dib-u-dhac yar, haddii qof aanu garanayn. "Elbrus" waa sidaas oo kale processor oo leh nidaam amar gaar ah. Intaa waxaa dheer, waxaa jira Elbrus OS software. Iyo - liddi ku ah caqiidada caanka ah - in lagu shaqeeyo Elbrus OS, ma aha lagama maarmaan in la haysto nidaamka qalabka ku salaysan Elbrus processor. Waxaa jira "PDK "Elbrus" ee x86 - dhab ahaantii, waxay ka soo muuqatay qaybta dadweynaha ee qaabka rakibida. Jid ahaan, waxaa jira qoraal-hooseeya "PDK - xirmada horumarinta madal, xirmada horumariyaha" - weyn, taas oo macnaheedu yahay in uu jiro ugu yaraan iskudubarid.

Dib u gurasho yar oo kale oo qasab ah. Xaqiiqdu waxay tahay in aan mar la macaamilay software-ka gudaha, sida MSVS iyo Baguette RTOS. Waxaan khibrad u lahaa la shaqaynta qaybaha gudaha, oo ay ku jiraan processor ka MCST. Haddaba, aniga oo mas’uuliyad buuxda ah, waxaan odhan karaa arrin gaar ah ayaa meeshan ka jirta oo aan isku dayi doono inaan maqaalka ku taaban. Marka aan runtii rabo, waxaan dhejin doonaa sumadda [TBD]. Markaa waxaan isku dayi doonaa inaan samayno iyada oo aan si toos ah loo barooran iyo cabashada banal. Ugu dambeyntii, warshadaha difaaca Ruushka iyo hay'adaha dawladda waxay u baahan yihiin in la fahmo. Waddan weyn - miisaaniyad yar.. [TBD].

Marxaladda eber - soo dejiso. Waxaa xusid mudan in warka ku saabsan in Elbrus OS uu soo baxay uu sababay buuq, ilaa uu server-ka qaybintu hoos u dhacay. [TBD] Waad ku mahadsan tahay Yandex iyo injineerkii ka fikiray inuu halkaas u raro. Markaa xawaaraha soo dejintu waa wanaagsan yahay.

Heerka koobaad - rakibidda. Waxaan ku rakibay hypervisor-kii ugu horreeyay ee diyaar u ahaa isticmaalka bilaashka ah. Waxaan u qoondeeyay laba nooc, laba gig oo RAM ah, 32 MB oo fiidiyoow ah (waxaa jiri doona interface garaaf ah, waxaan u maleeyay). Disk-gu waa sida caadiga ah - 32 GB.
Waxaan bilaabay rakibidda. Ma aan isticmaalin tilmaamaha rakibaadda, markaa kama faalloon karo. Isku xirka rakibaadda TUI aad buu u yar yahay.

Linux Backup ka Veeam on Elbrus OS. Soo dejinta beddelka ['?' | ' | '!']
Waa hagaag, weyn, waxaan samayn karnaa la'aanteed.

Waxaan maamulay daaqada xigta ee isku daygii labaad. Waa maxay sababta aadan u dooran aaladda caadiga ah ee sr0 [TBD] marka aad ka soo rakibayso saxanka?
Dooro isha CD-ROM-ka oo dhaqaaq.

Linux Backup ka Veeam on Elbrus OS. Soo dejinta beddelka ['?' | ' | '!']

Markii aan dooranayay aagga waqtiga, waxaan si lama filaan ah u ogaaday in nidaamku isticmaalo habka boot boot, oo waxaan ka shaqeynayaa TTY0.

Linux Backup ka Veeam on Elbrus OS. Soo dejinta beddelka ['?' | ' | '!']

OK, ka dib aynu u kala saarno "Elbrus" bulsho ahaan Mu’miniintii hore[TBD]. Mabda 'ahaan, tani waa wanaagsan tahay: uma baahnid inaad weydiiso koodhka isha si aad u aragto sida habka soo dejinta u shaqeeyo, maadaama wax walba ay yihiin kuwo qoran.

Inta soo hartay waxay ku dhowdahay mid aan muhiim ahayn: wax walba waanu dhignay waana ku heshiinnay. Jidka dhexdiisa, waxaan ogaanay in kernel-ka loo isticmaalo 3.14.79-13.84. Hmm, Debian 7 wuxuu lahaa 3.2 [TBD].

Marka xigta, dooro qaybinta saxanka caadiga ah iyo... Waxaan aragnaa digniin:

Linux Backup ka Veeam on Elbrus OS. Soo dejinta beddelka ['?' | ' | '!']

Hmm, si uun qaybintu si toos ah ulamay qabsan 32 gig disk. Anigu ma beddelin saxanka; Waxaan ku dhammaystiray raadintii iyada oo qaybinta saxanka gacanta ku jirta qaabka "dhan-ku-jirka". Waa inaan rakibaa ext3, maadaama / boot uusan ku jiri karin ext4.
Nidaamku wuxuu ku yimid iyada oo aan dhicin.

Marxaladda labaad - raadi meelo kale.
Ka dib markii aan ku dhexjiray waxa ku jira diskka labaad, waxaan ogaaday in tani ay tahay meel kayd ah oo dheeraad ah. baakadaha. Oo markaan eegay /etc/apt/sources.list, waxaan ogaaday inay u baahan tahay in lagu dhejiyo /mnt/cdrom. Laakiin ma helin /etc/os-release. Laakiin waxaa jira /etc/mcst-version oo leh waxa ku jira 3.0-rc36. 3.0 malaha waa nooca - waxay u muuqataa inay ku habboon tahay, laakiin rc36? Guud ahaan, software-ka saddexaad waxay u badan tahay inaanu awoodin inuu u aqoonsado qaybintan habka caadiga ah.

Qaybta xididka, tusaha /mcst ayaa indhahayga qabanaya, oo halkaas, aniga oo wadne quusaya, waxaan helay /mcst/backup. Taasi waa, waxaa jira qalab gurmad ah, oo lagu dhisay nidaamka! "Weyn," waxaan u maleeyay, "Aan aragno sida tani u shaqeyso!"

Waxaa soo baxday in uu jiro 4Kb bash script /mcst/bin/backup oo bixiya nuqul ka mid ah faylka. Sida caadiga ah - ilaa /mcst/backup directory. Koodhka isha waxaan filayey inaan arko amarka rsync, laakiin kuma jiro qaabeynta caadiga ah. Qoraalku si fudud buu u koobiyayaa faylasha. Amarku wuxuu u eg yahay sidan:

cp -rpdx <file backup> <file>

Dhammaan faylka /mcst/bin/backup waa halkanWaxaan isla markiiba kaaga digayaa in qoraalkan oo keliya aanu ku filnayn in si buuxda loo fahmo. Waxay ka soo jiidataa hawlaha /mcst/bin/source, taas oo ah wax la mid ah maktabadda hawlaha. Kuma darin (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

In kastoo, laga yaabaa in aanan fahmin wax? Waxaa laga yaabaa in qof uu ku sharxi karo faallooyinka: sidee buu qoraalkani u xaqiijiyaa badbaadada xogta badbaadada iyo kalsoonida leh? [TBD]

rsync, habka, waxaa lagu daraa ku-darka. kayd. Nooca 3.1.3. Waxaan u maleynayaa in isticmaalka rsync ay wali tahay beddelka ka wanaagsan codsiga /mcst/bin/backup.

Marka xigta, waxaan go'aansaday inaan mid cusub dhigo Wakiilka Veeam ee Linux. Qof ayaa ku weydiin doona: "Maxay ka leeyihiin beddelka Veeam iyo soo dejinta?" Haa, kuma jiro diiwaanka, laakiin waxaa shahaado siisay FSTEC, taas oo macnaheedu yahay in maqnaanshaha beddelka la isticmaali karo. Ku qaadashada shan iyo toban daqiiqo oo beddelka ah diiwaanka, Waxaan awooday inaan helo 3 xiriiriye oo loogu talagalay ereyga "kaabta" (midna lama xiriirin su'aashayda ereyga "keyd"). Ma aanan samayn falanqayn qoto dheer oo ku saabsan barnaamijyadan, markaa isku dayi maayo inaan xukumo sida ay ugu habboon yihiin inay taageeraan mishiinnada ku shaqeeya Linux. Qof kasta oo u baahan wuxuu soo saari doonaa gunaanadkiisa oo wuxuu la wadaagi doonaa faallooyinka.

Marxaladda saddexaad - rakibida Wakiilka Veeam ee Linux.
Marka, Wakiilka Veeam ee Linux wuxuu ka kooban yahay laba xirmo: moduleka kernel veeamsnap (sida, jidka, isha halkan) iyo koodka goobta isticmaale ee lahaanshaha ee qaabka xirmada veeam.

Waxaa jiray hal dhibaato oo yar oo ku saabsan rakibidda moduleka kernel - xirmada dkms ee maqan. Kani waa adeeg kuu ogolaanaya inaad ka dhisto cutubyada kernel-ka isha. Sida caadiga ah, waxaa laga heli karaa dhammaan qaybinta deynta. Waxay ahayd inaan ka soo dejiyo kaydka deb qolo saddexaad. Hal shay oo iga farxiyay ayaa ah in xirmada aysan ku xirneyn qaab dhismeedka, sidaas darteed waxay ku habboon tahay mid asal ah. Maxay tahay sababta loogu darin liiska xirmooyinka la heli karo, ama taa beddelkeeda, aan loo horumarin [TBD]? Waxaa laga yaabaa in loo maleeyo in qofna uusan dhisin oo maamulin wax kasta oo aan ahayn cutubyada kernel-ka ee MCST. Runtii halkan farqi ayaa ka jira - maadaama ay jiraan madax-madaxeedyo linux ah. Taasi waa, moduleka, haddii la rabo, waxaa lagu soo ururin karaa gacanta oo lagu bilaabi karaa qoraal marka mashiinku bilowdo. Waxaan u maleynayaa inaadan ka filaneynin cusbooneysiin joogto ah MCST [TBD].

"OK, moduleka waa la rakibay - qaybta ugu adkeyd way dhammaatay," waxaan u maleeyay... Xidhmada veeam ee kaydka deb-ka waxaa loogu talagalay amd64 platform, iyo Elbrus OS wuxuu leeyahay x86_64 [TBD]. Farqiga, dabcan, waa magaca kaliya, laakiin farqigani wuxuu ka dhigayaa ku dhawaad ​​dhammaan baakadaha kaydka deb ee dhinac saddexaad oo aan ku habboonayn Elbrus OS. Isfaham la'aantan dhibka leh ayaa si fudud loo tirtiri karaa: kaliya kala furfur xirmada, sax macluumaadka ku saabsan qaab dhismeedka oo dib isugu soo celi. Sida loo sameeyo Google ka dhigay isla markiiba.

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

Dhibaato kale waa ku-tiirsanaanta. Faylasha lagama maarmaanka ah waxay u muuqdaan inay jiraan, laakiin xirmooyinku maaha. Aragtida ayaa ahayd in magacyada baakadaha ay ka duwan yihiin "analoogyada la soo dejiyey". Waxaa laga yaabaa in maktabaduhu si kala duwan loo baakadeeyay. Ma aanan gelin faahfaahin badan, ka saaray ku dhawaad ​​dhammaan ku tiirsanaanta, iyo rakibidda ayaa sii socotay.

Kadibna dhibaatooyin ayaa ka soo baxay furaha adeegga. Qoraalkii /lib/init/vars.sh wuu maqnaa. Sababaha qaar, Elbrus waxay maamushaa la'aanteed, sidaas darteed sidoo kale waanu ka saari doonaa. Marka xigta, waxay ahayd inaan bedelno shaqada soo saarista fariinta: log_daemon_msg iyo log_end_msg shaqooyinka ayaa maqan. Ka dib markii aan ku dhex wareegay faylka /lib/lsb/init-functions file, waxaan helay log_success_msg function - waxay noo fiicnaan doontaa tijaabooyinka. Jid ahaan, gudaha /lib/lsb/init-functions faylka xarriiqda "# Source SuSE`s rc function" waa bilowga faylka [TBD].

Ka dib habaynta adag ee xirmada oo fayl wadata, kaydinta mashiinka oo dhan ee saamiga NFS ayaa si guul leh loo bilaabay. Buurta kaydka ahi sidoo kale waa lagu guulaystay. Marka, waxaan aaminsanahay in lagu taageerayo mishiinka Elbrus PDK, oo la soo dejiyey "sidaas oo kale" iyada oo aan wax waajibaad ah lahayn, Wakiilka Veeam ee Linux waa hubaal ku habboon. Xitaa ka dib dhammaan wax ka beddelka faylka.

Dabcan, qalabka qaybinta Elbrus OS si rasmi ah looma taageero, maadaama aan lagu darin liiska kuwa la taageeray. Intaa waxaa dheer, Wakiilka Veeam ee Linux laguma tijaabin waaxda QA, sidaas darteed kuwa. ma jirto taageero (ugu yaraan wakhtiga daabacaadda maqaalka).

Waxaan rajeynayaa in maqaalku uu faa'iido u yeelan doono kuwa isku dayaya in ay fuliyaan amarka lambar 334 ee Juun 29.06.2017, XNUMX. Aniga adigaa leh... [TBD].

Source: www.habr.com

Add a comment