په ایلبرس OS کې د Veeam څخه د لینکس بیک اپ. د وارداتو بدیل ['؟' | '. | '!']

ټولو ته سلام.
د هابري په اړه وروستي مقالې په عمل کې د وارداتو بدیل. 1 برخه. اختیارونه и میوزیک د اوږدې مودې لپاره ندی غږیدلی ... یا څنګه ایلبرس OS هیڅکله وړیا نه شو ما بې پروا نه پریښوده. ما پریکړه وکړه چې دا مسله د بیک اپ دندې په شرایطو کې مطالعه کړم. سربیره پردې، په دا مقاله د ویم سافټویر محصولات ذکر شوي ، پدې معنی چې مسله ممکن په ځانګړي ډول د وارداتو بدیل شرایطو کې اړونده وي.

په ایلبرس OS کې د Veeam څخه د لینکس بیک اپ. د وارداتو بدیل ['؟' | '.' | '!']
د اصلي انځور سرچینه

له هرڅه دمخه ، ما پریکړه وکړه چې د ایلبرس OS ډاونلوډ کړم ، یا بلکه یوازې د x86_64 جوړښت لپاره موجود توزیع ، وګورئ چې دا څنګه کار کوي ، او په دې کې د لینکس لپاره د Veeam اجنټ نصبولو هڅه وکړئ. که تاسو غواړئ پوه شئ چې له دې څخه څه راغلي، مهرباني وکړئ پیشو وګورئ.

نو، یو کوچنی انحراف، په هغه صورت کې چې څوک نه پوهیږي. "البروس" داسې دی سی پی یو د یو ځانګړي قوماندې سیسټم سره. برسېره پر دې، د Elbrus OS سافټویر شتون لري. او - د مشهور باور برخلاف - د ایلبرس OS چلولو لپاره ، دا اړینه نده چې د ایلبرس پروسیسر پراساس د هارډویر سیسټم ولرئ. د x86 لپاره "PDK "Elbrus" شتون لري - په حقیقت کې، دا په عامه ډومین کې د نصب کولو ډیسک په بڼه راڅرګند شو. په هرصورت ، دلته یو فوټ نوټ شتون لري "PDK - د پلیټ فارم پراختیا کټ ، پراختیا کونکي کټ" - عالي ، پدې معنی چې دلته لږترلږه یو کمپیلر شتون لري.

یو بل کوچنی جبری اعتکاف. حقیقت دا دی چې ما یو ځل د کورني سافټویر سره معامله وکړه، لکه MSVS او Baguette RTOS. ما د کورنیو برخو سره د کار کولو تجربه درلوده، په شمول د MCST څخه پروسیسر. له همدې امله زه کولی شم په بشپړ مسؤلیت سره ووایم چې پدې برخه کې یو ځانګړی ځانګړتیا شتون لري او دا دقیقا دا ده چې زه به هڅه وکړم چې په مقاله کې یې تماس ونکړم. کله چې زه واقعیا غواړم ، زه به [TBD] ټاګ کېږدم. نو موږ به هڅه وکړو چې پرته له ښکاره ټرولینګ او بې شرمه چیغې وکړو. په پاى کې، د روسيې دفاعي صنعت او دولتي ادارې بايد پوه شي. لوی هیواد، کوچنی بودیجه... [TBD].

صفر مرحله - کښته کول. دا د یادونې وړ ده چې هغه خبرونه چې د ایلبرس OS شتون لري د گونج لامل شو ، تر دې چې د توزیع سرور ښکته شو. [TBD] له Yandex او انجنیر څخه مننه چې هلته یې د لیږدولو فکر کاوه. نو د ډاونلوډ سرعت ښه دی.

لومړی پړاو - لګول. ما دا په لومړي هایپروایزر کې نصب کړ چې د وړیا کارونې لپاره شتون درلود. ما دوه کورونه تخصیص کړل، یو څو ګیګ رام، د ویډیو لپاره 32 MB (دلته به یو ګرافیکي انٹرفیس وي، ما فکر کاوه). ډیسک د معمول په څیر دی - 32 GB.
ما نصب کول پیل کړل. ما د نصبولو لارښوونې نه دي کارولي، نو زه نشم کولی پدې اړه تبصره وکړم. د TUI نصب کولو انٹرفیس خورا لږ دی.

په ایلبرس OS کې د Veeam څخه د لینکس بیک اپ. د وارداتو بدیل ['؟' | '.' | '!']
ښه، ښه، موږ کولی شو پرته له موږک څخه وکړو.

ما په دوهمه هڅه کې بله کړکۍ اداره کړه. ولې له ډیسک څخه د نصبولو پرمهال د ډیفالټ وسیله sr0 [TBD] غوره نه کړئ؟
د CD-ROM سرچینه وټاکئ او پرمخ لاړشئ.

په ایلبرس OS کې د Veeam څخه د لینکس بیک اپ. د وارداتو بدیل ['؟' | '.' | '!']

پداسې حال کې چې د وخت زون غوره کول، ما ناڅاپه پوه شو چې سیسټم د init بوټ پروسې کاروي، او زه د TTY0 څخه کار کوم.

په ایلبرس OS کې د Veeam څخه د لینکس بیک اپ. د وارداتو بدیل ['؟' | '.' | '!']

سمه ده، نو راځئ چې "ایلبروس" د ټولنې په توګه طبقه بندي کړو زاړه مومنان[TBD] په اصولو کې ، دا ښه دی: تاسو اړتیا نلرئ د سرچینې کوډ غوښتنه وکړئ ترڅو وګورئ چې د ډاونلوډ پروسه څنګه کار کوي ، ځکه چې هرڅه سکریپټ شوي دي.

پاتې نور تقریبا غیر مهم دي: موږ هرڅه پریږدو او موافق یو. د لارې په اوږدو کې، موږ معلومه کړه چې دانه 3.14.79-13.84 کارول کیږي. هو، دبیان 7 3.2 [TBD] درلود.

بیا، د ډیفالټ ډیسک ویش غوره کړئ او ... موږ یو خبرداری ګورو:

په ایلبرس OS کې د Veeam څخه د لینکس بیک اپ. د وارداتو بدیل ['؟' | '.' | '!']

هوم، په یو ډول اتوماتیک ویش د 32 ګیګ ډیسک سره ښه مقابله نه کوي. ما ډیسک نه دی بدل کړی؛ ما د "ټول په یو" سټایل کې د لاسي ډیسک ویشلو سره لټون بشپړ کړ. زه باید ext3 نصب کړم، ځکه چې /boot نشي کولی په ext4 کې وي.
سیسټم پرته له کومې پیښې رامینځته شو.

دوهم پړاو - د بدیلونو لټون.
د دوهم ډیسک مینځپانګې له مینځه وړلو وروسته ، ما پوهیده چې دا د اضافي سره ذخیره ده. په کڅوړو کې. او د /etc/apt/sources.list په لټه کې، ما پوهیده چې دا باید په /mnt/cdrom کې نصب شي. مګر ما ونه موندل /etc/os-release. مګر د منځپانګې 3.0-rc36 سره /etc/mcst-version شتون لري. 3.0 شاید نسخه وي - داسې ښکاري چې مناسب وي، مګر rc36؟ په عموم کې ، د دریمې ډلې سافټویر به ډیری احتمال ونشي کولی دا توزیع په کلاسیک ډول پیژني.

د روټ په برخه کې، د /mcst لارښود زما سترګې نیسي، او هلته، د ډوب شوي زړه سره، ما /mcst/backup وموندل. دا دی، د بیک اپ وسیله شتون لري، او دا په سیسټم کې جوړ شوی! "ښه،" ما فکر وکړ، "راځئ وګورو چې دا څنګه کار کوي!"

دا معلومه شوه چې د 4Kb باش سکریپټ /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 غوښتنلیک لپاره غوره بدیل دی.

بیا، ما پریکړه وکړه چې یو تازه واچوم د لینکس لپاره ویم ایجنټ. یو څوک به پوښتنه وکړي: "ویم او د وارداتو بدیل له دې سره څه تړاو لري؟" هو، دا په راجستر کې ندی، مګر دا د FSTEC لخوا تصدیق شوی، پدې معنی چې د بدیلونو په نشتوالي کې کارول کیدی شي. په بدیلونو باندې پنځلس دقیقې مصرف کول ثبت، زه توانیدلی وم چې د "بیک اپ" کلمې لپاره 3 لینکونه ومومئ (هیڅ د "ریزرو" کلمې لپاره زما د پوښتنې سره تړاو نلري). ما د دې برنامو ژور تحلیل نه دی کړی ، نو زه به هڅه ونه کړم قضاوت وکړم چې دوی د لینکس چلولو ماشینونو بیک اپ کولو لپاره څومره مناسب دي. څوک چې ورته اړتیا لري خپله پایله به یې راوباسي او په نظرونو کې به یې شریک کړي.

دریم پړاو - د لینکس لپاره د ویم ایجنټ نصب کول.
نو، د لینکس لپاره Veeam اجنټ دوه کڅوړې لري: د veeamsnap کرنل ماډل (په لاره کې، سرچینه دلته) او د ملکیت کارونکي ځای کوډ د ویم کڅوړې په بڼه.

د کرنل ماډل په نصبولو کې یوه کوچنۍ ستونزه وه - ورک شوی dkms بسته. دا یو خدمت دی چې تاسو ته اجازه درکوي د سرچینې څخه د کرنل ماډلونه جوړ کړئ. د یوې قاعدې په توګه، دا په ټولو deb توزیعونو کې شتون لري. زه باید دا د دریمې ډلې ډیب ذخیره څخه ډاونلوډ کړم. یو شی چې ما خوښ کړ دا دی چې کڅوړه په معمارۍ پورې اړه نلري ، نو دا د اصلي په څیر فټ کیږي. ولې دا د شته کڅوړو په لیست کې شامل نه و، یا بلکه، پراختیا نه وه [TBD]؟ شاید داسې انګیرل کیږي چې هیڅوک باید د غیر MCST کرنل ماډلونه جوړ او پرمخ نه وړي. دلته واقعیا یو توپیر شتون لري - ځکه چې د لینکس سرلیکونه شتون لري. دا دی، ماډل، که وغواړي، د لاس په واسطه راټول کیدی شي او د سکریپټ لخوا پیل شي کله چې ماشین پیل شي. زه فکر کوم چې تاسو باید د MCST [TBD] څخه د پرله پسې تازه معلوماتو تمه ونه کړئ.

"ښه، ماډل نصب شوی - تر ټولو سخته برخه پای ته رسیدلې،" ما فکر وکړ ... د ډیب ذخیره کولو لپاره د ویم کڅوړه د amd64 پلیټ فارم لپاره ده، او ایلبرس OS د x86_64 [TBD] پلیټ فارم لري. توپیر ، البته ، یوازې په نوم کې دی ، مګر دا توپیر د دریمې ډلې ډیب ذخیره کولو نږدې ټولې کڅوړې د ایلبرس OS سره مطابقت نلري. دا ځورونکی غلط فهم په ساده ډول له مینځه وړل کیدی شي: یوازې کڅوړه جلا کړئ، د جوړښت په اړه معلومات سم کړئ او بیرته یوځای یې کړئ. دا څنګه وکړو ګوګل یې وکړ سمدستي

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 فایل کې د [TBD] دوتنې په پیل کې "# Source SuSE's rc افعال" کرښه ده.

د فایل سره د بسته بندۍ دومره سخت پروسس کولو وروسته، د NFS په برخه کې د بشپړ ماشین بیک اپ په بریالیتوب سره پیل شو. د بیک اپ ماونټ هم بریالی و. نو ، زه باور لرم ، د ایلبروس PDK سره د ماشین بیک اپ کولو لپاره ، پرته له کوم مکلفیت څخه "د ورته ورته" ډاونلوډ شوی ، د لینکس لپاره ویم اجنټ یقینا مناسب دی. حتی د فایل سره د ټولو بدلونونو وروسته.

البته، د ایلبرس OS توزیع کټ په رسمي ډول نه ملاتړ کیږي، ځکه چې دا د ملاتړ شویو کسانو په لیست کې شامل نه دی. سربیره پردې ، د لینکس لپاره ویم اجنټ د QA ډیپارټمنټ لخوا پدې کې ندي ازمول شوي ، نو هغه. هیڅ ملاتړ شتون نلري (لږترلږه د مقالې خپرولو په وخت کې).

زه امید لرم چې مقاله به د هغو کسانو لپاره ګټوره وي څوک چې د 334 جون 29.06.2017 د حکم نمبر XNUMX پلي کولو هڅه کوي. زما تاسو ته... [TBD].

سرچینه: www.habr.com

Add a comment