αα½ααααΈα’αααααΆααααααΆα
α’αααααααααΈαα’αααΈ Habre
ααΆααααΌα αααα»αααΆααααααα
α
α·αααααΆααα Elbrus OS α¬αααα»ααα
αα·α ααΆαααααΆαα
ααα
αΆααααααΆααααααΆααααααΆαααααααα x86_64 ααΎαααΈαααααααααΆααααΎαααΆα α αΎαααααΆααΆαααα‘αΎα Veeam Agent αααααΆαα Linux αα
ααΎααΆα α
ααβααΉαβααΆβααΆαβα’αααΈβα
ααβααβααΎαβααααΆβααΆααβα’ααβααααΆα
ααΌα
ααααβααΆαβαααβααΎαβααΌα
βαα½αβαααα»αβααααΈβαααβα’αααβααΆβααααΆααβαα·αβααΉαα "Elbrus" ααΊααΌα
αααα
ααΆαααααααααααααααΌα αα½ααααα ααΆααα·αααΊααΆαααα»αααααΆααααΆααααααααΆαααΆαα½ααααααα·ααΈαααα»ααααα»αααΌα ααΆ MSVS αα·α Baguette RTOS α αααα»αααΆααααα·αααααααααΎααΆαααΆαα½ααααΆαααΆαα»αααα»ααααα»α αα½αααΆαααα½αααααΆαααΈ MCST α ααΌα ααααα αΎα αααα»αα’αΆα αα·ααΆααααααΆαααα½ααα»αααααΌαααΆαααααα»αααΆ ααΆαααΆαααΆααααΆααααΆααααΆαααα½ααα αααα»ααααααααα α αΎααααα»αααΉαααααΆααΆααα·ααααααΆααααΆαα αααα»αα’αααααα αα αααααααααα»αα ααααΆα αααα»αααΉαααΆααααααΆα [TBD]α ααΌα αααα ααΎαβααΉαβααααΆααΆαβααααΎβαααβαα·αβααΆαβααΆαβαααααβααααΌα αα·αβααΆαβαααααβααααΌα αα ααΈαααα αα α§ααααΆα ααααααΆαααΆαααΆαα·αα»αααααΈ αα·αααααΆααααΆααααααΆαα·ααΆαα αΆαααΆα αααααΌααααα αααααααα ααα·ααΆααΌα .. [TBD] α
ααααΆααααΆαααΌααα - ααΆαααα αα½αααααααααΆααααΆ ααααΉααααααΆ Elbrus OS ααααΌαααΆαααΆααα±ααααααΎααααΆααααΆα αααααΆαα±ααααΆαααααα·ααααααααΆαα αα αΌαααααΎα±αααααΆαααΈαααα ααα αΆαααααΆααα α»αα [TBD] ααΌαα’ααα»αααα Yandex αα·ααα·αααααααααα·αα ααααααΆααααΈααΆαα ααΈαααα ααΌα ααααααααΏαααΆαααααΊααα’α
ααααΆααααΆαααΈ 1 - ααΆαααα‘αΎαα αααα»αααΆαααα‘αΎαααΆαα
ααΎ hypervisor ααααΌααααα’αΆα
ααααΎααΆααααα₯ααα·αααααα αααα»αααΆααααα
ααααααΌαααΈα, RAM ααΈαααΈααΈααΆαα, 32 MB αααααΆααααΈααα’αΌ (αααα»ααα·αααΆααΉαααΆαα
ααα»α
αααααΆααααααΆα ααα·α) α ααΆαααΊααΌα
ααααααΆ - 32 ααΈααΆααα
αααα»αααΆαα
αΆααααααΎαααΆαααα‘αΎαα αααα»αβαα·αβααΆαβααααΎβααΆαααααΆαβα’αααΈβααΆαβααα‘αΎαβαα ααΌα
ααααβαααα»αβαα·αβα’αΆα
βααααΎβα’ααααΆαα·ααααΆαβααΎβααΆβααΆαβααα α
ααα»α
αααααΆααααα‘αΎα TUI ααΊααΆααααααααα·α
αα½α
αααα»αα
ααΆααΆααααααΎαααΆαα, ααΎαα’αΆα
ααααΎααΆααααααααΆαααααα»αα
αααα»αααΆαααααααααααααα’α½α
αααααΆαααα
ααΎααΆαααΆαααααααΎαααΈααΈαα α ααα»α’αααΈαα·αααααΎαααΎαα§αααααααααΆαααΎα sr0 [TBD] αα
αααααα‘αΎαααΈααΆα?
ααααΎαααΎαααααααααΈααΈαααΌα α αΎααααααα
αα»ααααα
αααααααΎαααΎαααααααααααααΆ αααα»αααααΆααααααΉαααΆααααααααααααΎααααΎαααΆαα
αΆααααααΎα init α αΎααααα»ααααα»αααααΎααΆαααΈ TTY0α
ααααααα αααααΆααααααΌαα
αΆααααααΆαα "Elbrus" ααΆαα αααααα½αα
α’αααΈααααα αααααΊααααΎααααα·αααααΆαα: ααΎαααΆααα’αααΈααααααααΆαα αΎααααααααα αα ααΆαααααΌαααΎαααααΎαααΆααΊαααααααΌαααΆαααααΎ 3.14.79-13.84 α α ααΊ ααααα 7 ααΆα 3.2 [TBD]α
αααααΆαααα ααΌαααααΎαααΎαααΆααααα ααααΆαααααΆαααΎα α αΎα... ααΎαααΎαααΆααααααΆααα½αα
α α ααΌα
ααααα
αααααΆααααα
αααααααααααααααααα·αα·αα’αΆα
αααααααΆαααΆαααα’ααΆαα½αααΆα 32 gig α αααα»αβαα·αβααΆαβααααΆααααααΌαβααΆαβαα αααα»αβααΆαβαααα
ααβααααΎαβαααααααβαααβααΆαβα
ααβααΆαααΆαβαααβααβαααα»αβαα
ααΆααααα "ααΆααα’ααβαααα»αβαα½α"α αααα»αααααΌαααα‘αΎα ext3 ααααα /boot αα·αα’αΆα
αα
αααα»α ext4 ααΆαααα
αααααααααααααΆαααΎαα‘αΎααααααααΆαα§ααααααα·α ααα»α
ααααΆααααΆαααΈααΈα - ααααααααααααΎααααα½αα
αααααΆααααΈ rummaging ααΆααααααΆαα·ααΆααααΈαααΈααΈα, αααα»αααΆαααΉαααΆαααααΊααΆααααΆαααααααΆαααααααα αα
αααα»ααααα
ααα α αΎααααααΉαααΎα /etc/apt/sources.list αααα»αααΆαααΉαααΆααΆααααΌαααααααΌαααΆααααααα
αααα»α /mnt/cdrom α ααα»αααααααα»ααα·αααΆαααααΎα /etc/os-release α ααα»ααααααΆα /etc/mcst-version ααΆαα½αααΆαα·ααΆ 3.0-rc36 α 3.0 αααα ααααΆαααα - ααΆα αΆααααΌα
ααΆααααα»αααα rc36? ααΆααΌαα
αααααα·ααΈααΆααΈααΈααΈααααααΆαα·αα’αΆα
ααα½αααααΆααααΆαα
ααα
αΆααααααΆααα·ααΈαα»ααΆαααΆαααα
αα αααα»αααΆαααΆαααΆ root αα /mcst α αΆααααααααααα»α α αΎααα ααΈααα ααααααααΌααα·α αααα»αααΆαααααΎα /mcst/backup α αααααΊααΆαα§αααααααααα»ααα»α α αΎαααΆααααΌαααΆααααααΎαα‘αΎααα αααα»ααααααααα! βααα’ααΆααβ αααα»αααΆααα·αααΆ βαααααΎαααΈαααααααααΆααααΎαααΆα!β
ααΆααΆαααααααααΆαααΆααΆα 4Kb bash script /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 α
αααααΆααβαα αααα»αβαααααα
βα
α·αααβααΆααβααααΈβαα½αβ ααααΆααααΆα Veeam αααααΆααααΈαα»α
. ααααΆααααΆααααΉααα½αααΆ "ααΎ Veeam αα·αααΆααααα½αααΆαααΆαα
αΌαααΆαα’αααΈαααααααΌαααααΎααΆαα½αααΆ?" ααΆα/α
αΆα ααΆαα·αααΆααα
αααα»αααΆαα
α»αααααααα ααα»ααααααΆααααΌαααΆααααααΆααααα FSTEC αααααΆααααααΆαααα»αααααΈαααααααΆααααααΎα ααΆα’αΆα
ααααΎααααΆααααΆαα α
αααΆαααααααααααΆαααΆααΈααΎαααααΎαααΈ
ααααΆααααΆαααΈααΈ - ααΆαααα‘αΎαααααΆααααΆα Veeam αααααΆααααΈαα»α
α
ααΌα
αααα ααααΆααααΆα Veeam αααααΆααααΈαα»α
ααΆααααα
ααααΈαα αααΌαα»αααΊααα veeamsnap (ααααα·ααΈααα
ααΆααααα αΆααΌα αα½αααΆαα½αααΆαααα‘αΎααααΌαα»αααΊααα - αααα αα dkms αααααΆααα αααααΊααΆααααΆαααααααα’αα»ααααΆαα±ααα’ααααααααΎααααΌαα»αααΊαααααΈαααααα ααΆααααα½αααΆααΆααα ααΎααΆαα ααα αΆα deb ααΆααα’ααα αααα»αααααΌαααΆαααααΆααΈααααΆαα deb ααΆααΈααΈααΈα ααΏααα½ααααααααΎα±αααααα»ααααααΆαα α·ααααααααΊααΆαααα αααα·αα’αΆαααααααΎααααΆααααααααααΌα ααααααΆααααΌα ααααΆαα·ααΎαα α ααα»α’αααΈααΆαααΆααΆαα·αααααΌαααΆαααΆαααααα αΌααααα»ααααααΈαααα αααααααΆα α¬αααα»ααα αα·ααα·αααααΌαααΆαα’αα·αααα [TBD]? αααα ααααΆααΆααααΌαααΆαααααααααΆααααΆαααααΆααααΆαααα½ααααααΎα αα·αααααΎαααΆααααΌαα»αααΊαααααααα·ααααααΆ MCST ααα αα·αααΆααΆαααΆααα·αααααααααΆαα ααΈααα - αααααΆαααΆαααΈαα»α - ααααααΆα αααααΊ αααΌαα»α ααααα·αααΎα ααααΆα α’αΆα ααααΌαααΆααααα»αααααα α αΎαα αΆααααααΎααααααααααΈα αα ααααααΆαααΈαα αΆααααααΎαα αααα»ααα·αααΆα’ααααα·ααα½αααααΉαααΆααΉαααΆαααΆαααααΎαα αα α»ααααααααΆαααΉαααΆααααΈ MCST [TBD] ααα
"ααααααα αααΌαα»αααααΌαααΆαααα‘αΎα - ααααααα·ααΆααααα»αααΊα
ααα αΎα" αααα»ααα·αααΆ... αααα
αα veeam αααααΆααααααΆαα deb ααΊαααααΆαααααα·ααΆ amd64 α αΎα Elbrus OS ααΆααααα·ααΆ x86_64 [TBD] α ααΆααΆααα·αααΆαα ααΆααα»αααααΆααΊααΆααααα
αααα»ααααααααα»ααααα ααα»ααααααΆααα»αααααΆαααααααΎα±αααααα
ααααααΎαααααΆααα’ααααΈααααΆαα de-party αα·αααααΌαααααΆααΆαα½α Elbrus OSα ααΆααααα
ααα‘ααααα½αα±ααααααΆααααα’αΆα
ααααΌαααΆααα»αα
αααααΆαααΆααααα ααααΆαααααα»αααΎαααα
αα αααααααΌαααααααΆαα’αααΈααααΆαααααααα α αΎαααΆααααΆαααα‘αααααα·αα ααααααααΎααΆ
mkdir tmp
dpkg-deb -R original.deb tmp
# edit DEBIAN/postinst
dpkg-deb -b tmp fixed.deb
αααα αΆαα½ααααααΊααΆαα’αΆαααααα α―αααΆαα αΆαααΆα αα αΆααααΌα ααΆαα ααΈααα ααα»αααααααα ααααΆααααααα·αααΆαααα α αααΆααα’αΆααααααααΊααΆααααααααααα αααα»αααααΆααΈ "α’αΆααΆα‘αΌααααααΆαααΆαα αΌα" αααααα½αααα αααα ααααΆαααααΆαααααααΌαααΆαααα ααα αααα»ααααααΆα αααα»αβαα·αβααΆαβα αΌαβαα βαααα»αβαααα’α·αβα αααΎαβαααβαα αα»αβααΆαβα’αΆαααααβααααΎαααβααΆααα’ααβα αα α αΎαβααΆαβααα‘αΎαβααΆαβααααΎαααΆαβαα βαα»αα
αααααΆαααααααα αΆααΎαα‘αΎαααΆαα½ααααααΌαα αΆααααααΎαααααΆααααα ααααααΈα /lib/init/vars.sh ααΆαααΆααα αααααΆααα ααα»αααα½αα ααα½α Elbrus ααααααααααααααααΆαααΆ ααΌα ααααααΎαααΉααα»αααΆα αααααααα αααααΆαααα ααΎαααααΌααααα½ααα»αααΆαααααααααΆαα αα»αααΆα log_daemon_msg αα·α log_end_msg ααΆαααΆααα αααααΆααβααΈβαα·ααΆαβαα»ααα·αβαααα»αβα―αααΆα /lib/lsb/init-functions αααα»αβααΆαβααβααΎαβα’αα»αααα log_success_msg - ααΆβααΉαβααα’βαααααΆααβααΎαβαααααΆααβααΆαβαα·αααααα ααααα·ααΈααα αα αααα»αα―αααΆα /lib/lsb/init-functions αααααΆαα β# Source SuSE`s rc functionsβ ααΊαα ααΎαα―αααΆα [TBD]α
αααααΆααααΈααααΎαααΆαααααααΆααααααα ααααΆαα½αααΉαα―αααΆααα½α ααΆαααααα»ααα»ααααΆαααΈαααΆααααΌααα ααΎααΆαα ααααααα NFS ααααΌαααΆαααααΎαααΆααααααααααα ααΆαααααΆααααΆαααααα»ααα»αααααα½αααΆααααααααααααα ααΌα αααααααα»αααΏααΆαααααΆααααΆαααααα»ααα»ααααΆαααΈαααΆαα½α Elbrus PDK αααααΆαααΆααα "ααΌα ααα" αααααααΆαααΆαααααα·α αα ααΆαα½α Veeam Agent αααααΆαα Linux ααΊαα·αααΆααααααα ααΌααααΈαααααααΆααααΈααΆαααααααααΆααα’ααααΆαα½αααΉαα―αααΆααα½αα
ααΆααΆααα·αααΆαα α§αααααα ααα αΆα Elbrus OS αα·αααααΌαααΆαααΆααααααΆααααΌαααΆααα αααααΆαααΆαα·αααααΌαααΆααααα αΌααααα»ααααααΈαααααααα·ααΈαααααΆααααα ααΎαααΈαααααα Veeam Agent αααααΆααααΈαα»α αα·αααααΌαααΆαααΆαααααααΎααΆαααααΆααααααΆα QA αα ααΌα ααααα’αααααΆαααααα αα·αααΆαααΆαααΆαααααα (αααΆαα αα ααΆαααα αααααααα»αααα’ααααα) α
αααα»ααααααΉαααΆα’αααααααΉαααΆααααααααααααααΆααα’αααααααααα»αααααΆααΆαα’αα»αααααααααααΆααα 334 ααααααααΈ 29.06.2017 αααα·αα»ααΆααααΆα XNUMX α αααααααα»ααααααΆααα’ααα ... [TBD] α
ααααα: www.habr.com