Salama daholo.
Lahatsoratra vao haingana momba ny Habré
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
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.
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.
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.
Eny ary, andeha hosokajintsika ho vondrom-piarahamonina ny "Elbrus".
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:
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
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,
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
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