Linux Backup avy amin'ny Veeam amin'ny Elbrus OS. Fanafarana fanoloana ['?' | '.' | '!']

Salama daholo.
Lahatsoratra vao haingana momba ny Habré Fanafarana fanoloana amin'ny fampiharana. Fizarana 1. Safidy и Tsy nilalao naharitra ny mozika... na ny fomba nahatongavan'i Elbrus OS ho afaka tsy namela ahy ho tsy miraharaha. Nanapa-kevitra ny handalina ity olana ity aho ao anatin'ny tontolon'ny asa backup. Ankoatra izany, in ity lahatsoratra ity Ny vokatra Veeam Software dia voatonona, izay midika fa ny olana dia mety mifandraika manokana amin'ny tontolon'ny fanoloana fanafarana.

Linux Backup avy amin'ny Veeam amin'ny Elbrus OS. Fanafarana fanoloana ['?' | '.' | '!']
loharanon-tsary tany am-boalohany

Voalohany indrindra, nanapa-kevitra ny hisintona ny Elbrus OS aho, na ny marimarina kokoa, ny fizarana azo ampiasaina ho an'ny maritrano x86_64, jereo ny fomba fiasa, ary andramo ny hametraka Veeam Agent ho an'ny Linux eo aminy. Raha te-hahafantatra izay nivoaka tamin'ity ianao dia jereo ny saka.

Noho izany, digression kely, sao misy tsy mahafantatra. "Elbrus" dia toy izany Unité centrale miaraka amin'ny rafitra baiko manokana. Ho fanampin'izany dia misy rindrambaiko Elbrus OS. Ary - mifanohitra amin'ny hevi-diso mahazatra - ho an'ny Elbrus OS dia tsy ilaina ny manana rafitra hardware mifototra amin'ny processeur Elbrus. Misy ny "PDK "Elbrus" ho an'ny x86 - raha ny marina dia niseho tao amin'ny sehatra ho an'ny daholobe amin'ny endrika kapila fametrahana. Raha ny marina, misy fanamarihana ambany pejy "PDK - kitapom-pampandrosoana sehatra, kitapom-pampandrosoana" - tsara, midika izany fa misy compiler farafaharatsiny ao.

Fihemorana kely an-tery. Ny zava-misy dia efa niresaka momba ny rindrambaiko ao an-toerana aho, toy ny MSVS sy Baguette RTOS. Nanana traikefa niasa tamin'ny singa an-trano aho, anisan'izany ny processeur avy amin'ny MCST. Noho izany dia afaka milaza amin'ny andraikitra feno aho fa misy ny manokana amin'ity sehatra ity ary izany indrindra no hiezahako tsy hikasika ny lahatsoratra. Rehefa tena te hanao izany aho dia hametraka ny marika [TBD]. Noho izany dia hiezaka ny hanao tsy misy trolling mivantana sy ny fitarainana banal. Amin'ny farany, mila takatra ny indostrian'ny fiarovana Rosiana sy ny sampan-draharaham-panjakana. Firenena lehibe - tetibola kely.. [TBD].

Dingana aotra - download. Marihina fa niteraka resonance ny vaovao fa lasa misy ny Elbrus OS, hany ka nidina ny serveur distribution. [TBD] Misaotra an'i Yandex sy ilay injeniera nieritreritra ny hamindra izany any. Noho izany dia tsara ny hafainganam-pandehan'ny fampidinana.

Ny dingana voalohany - fametrahana. Napetrako tao amin'ny hypervisor voalohany azo ampiasaina maimaim-poana. Nanokana cores roa aho, gigs roa an'ny RAM, 32 MB ho an'ny horonan-tsary (hisy interface grafika, hoy aho). Ny kapila dia toy ny mahazatra - 32 GB.
Nanomboka ny fametrahana aho. Tsy nampiasa ny toromarika fametrahana aho, ka tsy afaka maneho hevitra momba izany. Ny interface tsara fametrahana TUI dia tena minimalistic.

Linux Backup avy amin'ny Veeam amin'ny Elbrus OS. Fanafarana fanoloana ['?' | '.' | '!']
Tsara, afaka manao tsy misy totozy isika.

Nitantana ny varavarankely manaraka aho tamin'ny fanandramana faharoa. Maninona raha misafidy ny fitaovana default sr0 [TBD] rehefa mametraka amin'ny kapila?
Safidio ny loharano CD-ROM ary mandroso.

Linux Backup avy amin'ny Veeam amin'ny Elbrus OS. Fanafarana fanoloana ['?' | '.' | '!']

Rehefa nisafidy ny faritry ny ora aho dia tonga saina tampoka fa ny rafitra dia mampiasa ny fizotry ny boot init, ary miasa amin'ny TTY0 aho.

Linux Backup avy amin'ny Veeam amin'ny Elbrus OS. Fanafarana fanoloana ['?' | '.' | '!']

Eny ary, andeha hosokajintsika ho vondrom-piarahamonina ny "Elbrus". Mpino taloha[TBD]. Amin'ny ankapobeny, tsara izany: tsy mila manontany ny kaody loharano ianao hahitana ny fomba fiasan'ny fizotry ny fampidinana, satria ny zava-drehetra dia nosoratana.

Ny ambiny dia saika tsy misy dikany: mametraka ny zava-drehetra izahay ary manaiky. Teny an-dalana dia hitantsika fa ny kernel dia ampiasaina 3.14.79-13.84. Hmm, Debian 7 dia nanana 3.2 [TBD].

Avy eo, safidio ny fizarana kapila default ary... Mahita fampitandremana izahay:

Linux Backup avy amin'ny Veeam amin'ny Elbrus OS. Fanafarana fanoloana ['?' | '.' | '!']

Hmm, na ahoana na ahoana ny fisarahana mandeha ho azy dia tsy nahazaka tsara ny kapila 32 gig. Tsy nanova ny kapila aho; nahavita ny fikatsahana tamin'ny fizarana kapila amin'ny fomba "all-in-one". Tsy maintsy nametraka ext3 aho, satria tsy afaka ao amin'ny ext4 ny /boot.
Nipoitra tsy nisy zava-nitranga ny rafitra.

Ny dingana faharoa - mitady fomba hafa.
Rehefa avy nikaroka ny votoatin'ny kapila faharoa aho dia tsapako fa fitahirizana fanampiny ity. anaty fonosana. Ary raha mijery ny /etc/apt/sources.list aho dia tsapako fa mila apetraka ao amin'ny /mnt/cdrom. Saingy tsy hitako ny /etc/os-release. Saingy misy /etc/mcst-version miaraka amin'ny atiny 3.0-rc36. 3.0 angamba ilay version - toa mety, fa rc36? Amin'ny ankapobeny, ny rindrambaiko avy amin'ny antoko fahatelo dia mety tsy ho afaka hamantatra ity fizarana ity amin'ny fomba mahazatra.

Ao amin'ny fizarazarana fototra, ny lahatahiry / mcst dia mahasarika ny masoko, ary tao, niaraka tamin'ny fo milentika, no nahitako /mcst/backup. Izany hoe, misy fitaovana backup, ary naorina ao amin'ny rafitra izany! “Tena tsara,” hoy aho nieritreritra, “Andao hojerentsika ny fomba fiasan’izany!”

Hita fa misy script bash 4Kb /mcst/bin/backup izay manome kopia rakitra. Amin'ny alàlan'ny default - mankany amin'ny lahatahiry /mcst/backup. Ao amin'ny kaody loharano nanantena ny hahita ny baiko rsync aho, saingy tsy ao amin'ny konfigurasi default. Mandika rakitra fotsiny ilay script. Toy izao ny baiko:

cp -rpdx <file backup> <file>

Ny rakitra manontolo /mcst/bin/backup dia etoMampitandrina anao avy hatrany aho fa ity script ity fotsiny dia tsy ampy hahatakarana tsara. Izy io dia misintona asa avy amin'ny /mcst/bin/source, izay toy ny tranomboky misy fiasa. Tsy nampidiriko (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

Na izany aza, angamba tsy azoko zavatra? Angamba misy afaka manazava ao amin'ny fanehoan-kevitra: ahoana no iantohan'ity script ity ny backup data azo antoka sy azo antoka? [TBD]

rsync, raha ny marina, dia tafiditra ao amin'ny add-on. repository. Version 3.1.3. Heveriko fa ny fampiasana rsync dia mbola safidy tsara kokoa amin'ny fampiharana /mcst/bin/backup.

Manaraka izany dia nanapa-kevitra ny hametraka vaovao aho Veeam Agent ho an'ny Linux. Hisy hanontany hoe: “Inona no idiran'ny Veeam sy ny fanoloana fanafarana amin'izany?” Eny, tsy ao anaty rejisitra izy io, fa voamarina avy amin'ny FSTEC, izay midika fa raha tsy misy safidy hafa dia azo ampiasaina. Mandany dimy ambin'ny folo minitra amin'ny safidy hafa avy amin'ny lisitra, afaka nahita rohy 3 momba ny teny hoe “backup” aho (tsy misy mifandray amin'ny fanontaniako momba ny teny hoe “réserve”). Tsy nanao famakafakana lalina momba ireo programa ireo aho, noho izany dia tsy hiezaka ny hitsara ny maha-mety azy ireo aho amin'ny fanohanana ireo milina mampiasa Linux. Izay mila izany dia hanatsoaka hevitra ary hizara izany amin'ny fanehoan-kevitra.

Stage Three - fametrahana ny Veeam Agent ho an'ny Linux.
Noho izany, ny Veeam Agent ho an'ny Linux dia misy fonosana roa: ny module kernel veeamsnap (amin'ny fomba, loharano eto) ary ny kaody mpampiasa-espace manokana amin'ny endrika fonosana veeam.

Nisy olana kely iray tamin'ny fametrahana ny module kernel - ny fonosana dkms tsy hita. Ity dia serivisy ahafahanao manangana modules kernel avy amin'ny loharano. Amin'ny ankapobeny dia misy amin'ny fizarana deb rehetra izany. Tsy maintsy nisintona azy avy amin'ny tahiry deb an'ny antoko fahatelo aho. Ny zavatra iray nahafaly ahy dia tsy miankina amin'ny maritrano ilay fonosana, ka mifanaraka amin'ny teratany. Nahoana no tsy nampidirina tao amin'ny lisitry ny fonosana misy, na ny marimarina kokoa, tsy novolavolaina [TBD]? Angamba heverina fa tsy misy olona tokony hanorina sy hampandeha ny maody kernel tsy misy MCST. Tena misy tsy fitoviana eto - satria misy linux-headers. Izany hoe, ny module, raha tianao, dia azo amboarina amin'ny tanana ary atomboka amin'ny script rehefa manomboka ny milina. Heveriko fa tsy tokony hanantena fanavaozana matetika avy amin'ny MCST [TBD] ianao.

"OK, napetraka ny module - tapitra ny ampahany sarotra indrindra," hoy aho nieritreritra ... Ny fonosana veeam ho an'ny tahiry deb dia ho an'ny sehatra amd64, ary ny Elbrus OS dia manana sehatra x86_64 [TBD]. Ny fahasamihafana, mazava ho azy, dia amin'ny anarana ihany, fa io fahasamihafana io dia mahatonga ny fonosana rehetra avy amin'ny tahiry deb an'ny antoko fahatelo tsy mifanaraka amin'ny Elbrus OS. Ity tsy fifankahazoana manelingelina ity dia azo esorina tsotra izao: esory fotsiny ny fonosana, ahitsio ny fampahalalana momba ny maritrano ary avereno miaraka. Ahoana no hanaovana izany Googled azy avy hatrany.

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

Ny olana iray hafa dia ny fiankinan-doha. Toa misy ny rakitra ilaina, fa tsy misy ny fonosana. Ny fahatsapana dia ny anaran'ireo fonosana dia tsy mitovy amin'ny "analogues nafarana". Angamba samy hafa ny fonosan'ireo tranomboky. Tsy nanao tsipiriany be loatra aho, nesoriko saika ny fiankinan-doha rehetra, ary nandeha ny fametrahana.

Avy eo dia nisy olana nipoitra tamin'ny kaody fanombohana serivisy. Tsy hita ny script /lib/init/vars.sh. Noho ny antony sasany dia mitantana tsy misy azy i Elbrus, ka esorinay koa izany. Avy eo dia tsy maintsy nosoloina ny asa famoahana hafatra: ny log_daemon_msg sy log_end_msg dia tsy hita. Rehefa avy nivezivezy tao amin'ny rakitra /lib/lsb/init-functions aho dia nahita ny asa log_success_msg - tsara ho antsika ny andrana. Raha ny marina, ao amin'ny rakitra /lib/lsb/init-functions ny andalana "# Source SuSE's rc functions" dia eo am-piandohan'ny rakitra [TBD].

Taorian'ny fanodinana henjana toy izany ny fonosana miaraka amin'ny rakitra iray, dia natomboka soa aman-tsara ny backup-machine manontolo amin'ny anjaran'ny NFS. Nahomby ihany koa ny fametrahana backup. Noho izany, mino aho, mba hanohanana milina miaraka amin'ny Elbrus PDK, alaina "toy izany" tsy misy adidy, Veeam Agent for Linux dia tena mety. Na dia aorian'ny fanovana rehetra miaraka amin'ny rakitra iray aza.

Mazava ho azy fa tsy tohanana amin'ny fomba ofisialy ny kitapo fizarana Elbrus OS, satria tsy tafiditra ao anatin'ny lisitry ny tohana. Ankoatr'izay, ny Veeam Agent ho an'ny Linux dia tsy nosedraina tamin'ny departemanta QA, ka ireo. tsy misy fanohanana (farafaharatsiny amin'ny fotoana namoahana ny lahatsoratra).

Manantena aho fa hahasoa an’ireo miezaka mampihatra ny didim-panjakana laharana faha-334 tamin’ny 29.06.2017 jona XNUMX ity lahatsoratra ity. Ny ahy ho anao... [TBD].

Source: www.habr.com

Add a comment