Elbrus OS上的Veeam Linux备份。 导入替换['?' | '。' | '!']

大家好

最近有关“哈布雷进口替代品”的文章 第1部分。选项音乐播放的时间不是很长,或者OS Elbrus从来没有免费 ,这都让我无动于衷。 我决定在备份任务的关键中研究这个问题。 此外,在本文中提到了Veeam Software产品,这意味着该问题可能与进口替代的情况相关。

图片
源图像

首先,我决定下载Elbrus OS,或者仅下载适用于x86_64体系结构的可用分发套件,了解其工作原理,然后尝试在其上安装Veeam Agent for Linux。 那些希望找出结果的人,请注意。

所以,题外话很小,否则突然有人不知道。 Elbrus是具有相当特定的指令系统的处理器 。 除此以外,还有Elbrus OS软件。 并且-与常见的误解相反-Elbrus OS不必具有基于Elbrus处理器的硬件组合。 有“用于x86的Elbrus PDK”-实际上,它作为安装盘出现在公共领域中。 顺便说一句,有一个很好的脚注“ PDK-平台开发套件,开发套件”,这意味着至少有一个编译器。

另一个小撤退。 事实是,我曾经处理过MSVS和RTO Baget等家用软件。 我有使用家用元素库的经验,包括MCST的处理器。 因此,我可以尽一切责任说这方面有一定的特殊性,在本文中我将尽量不作赘述。 当我真正想要的时候,我将放置[TBD]标签。 因此,我们将尽力避免完全的拖钓和吟。 最后,需要了解俄罗斯国防工业和政府机构。 这个国家很大-预算很小.. [TBD]。

零级 -下载。 值得注意的是,Elbrus OS可用的消息引起了共鸣,从而导致分发服务器关闭。 [TBD]感谢Yandex和想将其移至此处的工程师。 因此下载速度很好。

第一步是安装。 我安装了第一个可用的免费虚拟机管理程序。 我分配了两个内核,几个千兆内存,每个视频32 MB(我想那里会有一个图形界面)。 磁盘照常-32 GB。
启动安装。 我没有使用安装说明,因此无法对此发表评论。 TUI安装界面极其简单。


好吧,非常好,没有鼠标,那么我们会努力的。

我从第二次尝试开始处理下一个窗口。 从磁盘安装时,为什么不默认安装sr0 [TBD]?
选择CD-ROM的来源,然后继续。



选择时区后,我突然意识到系统使用了init引导过程,而我正在TTY0上工作。



好的,让我们带Elbrus到Old Believer社区[TBD]。 从原则上讲,这是件好事:由于一切都在脚本中,因此无需索取源即可查看下载过程的工作原理。

其余的几乎不重要:我们放下一切并达成共识。 一路走来,我们发现内核使用的是3.14.79-13.84。 嗯,Debian 7的数据为[TBD] 3.2。

接下来,默认情况下选择磁盘分区,然后...我们看到警告:



嗯,某种程度上,自动分区严重地应对了32 gig磁盘。 我没有更换磁盘,而是通过“一体机”样式进行了手动磁盘布局任务。 我必须安装ext3,因为/ boot不能在ext4中。
系统启动时没有发生任何事件。

第二阶段是寻找替代方案。
在翻阅第二张磁盘的内容之后,我了解到它是一个包含其他内容的存储库。 包。 看着/etc/apt/sources.list,我意识到我需要将其挂载在/ mnt / cdrom中。 但是我没有找到/ etc / os-release。 但是存在/ etc / mcst-version,其内容为3.0-rc36。 3.0-这可能是版本-似乎收敛了,但是rc36吗? 通常,第三方软件很可能无法以经典方式识别这种分布。

在根部分,/ mcst目录引起您的注意,在那里,我发现/ mcst / backup有一颗沉痛的心。 也就是说,有一个备份工具,它已经内置在系统中! 太好了,我想,让我们看看它是如何工作的!

原来,有一个大小为4Kb的bash脚本/ mcst / bin / backup,它可以复制文件。 默认情况下,到/ mcst / backup目录。 在源代码中,我希望看到rsync命令,但是它不是默认配置。 该脚本仅复制文件。 该命令如下所示:

cp -rpdx <file backup> <file> 

整个文件/ mcst / bin / backup在这里
我立即警告您,仅完全了解此脚本是不够的。 它从/ mcst / bin /源中提取函数,这类似于函数库。 我没有引用他(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 


虽然,也许我不明白什么? 也许评论中的某人可以解释:该脚本如何提供安全可靠的数据备份? [待定]

顺便说一句,rsync在添加中。 仓库。 版本3.1.3。 我认为使用rsync仍然是/ mcst / bin / backup的最佳选择。

接下来,我决定安装新的Linux版Veeam代理 。 有人会问:“ Veeam与进口替代有什么关系?” 是的,它不在注册表中,但已通过FSTEC认证,这意味着在没有替代方法的情况下,可以使用它。 在注册表中花了大约十五分钟的时间,我设法在“ backup”一词上找到了3个链接(没有一个链接与我对“ reserve”一词的问题有关)。 我没有对这些程序进行深入分析-因此,我不会尝试判断它们是否适合在Linux下备份计算机。 谁需要它-他将得出结论并在评论中分享。

第三阶段 -安装Veeam Agent for Linux。
因此,适用于Linux的Veeam代理包含两个软件包:veeamsnap内核模块(顺便说一下, 源在这里 )和veeam软件包形式的专有用户空间代码。

安装内核模块存在一个小问题-缺少dkms软件包。 该服务允许您从源代码构建内核模块。 通常,它适用于所有deb发行版。 我必须从第三方deb存储库下载它。 一个人很高兴-该软件包不依赖于体系结构,因此它作为本机而站起来。 为什么它不包含在可用软件包列表中,或者没有开发[TBD]? 也许假设没有人可以收集和运行各种非MCST内核模块。 这里确实存在问题-因为有linux-headers。 也就是说,如果需要,可以手动组装模块并在机器以脚本启动时运行。 我认为您不应该等待ICST [TBD]的频繁更新。

我想:“好的,模块已经准备就绪,最困难的事情就在后面。” deb存储库的veeam软件包用于amd64平台,而Elbrus OS具有x86_64 [TBD]平台。 当然,区别仅在于名称,但这种区别使来自第三方deb存储库的几乎所有软件包都与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中,在文件[TBD]开头的行“#Source SuSE的rc函数”行。

对带有文件的软件包进行如此粗略的处理后,NFS球上的整个机器备份成功启动。 备份安装也成功。 因此,我想,对于使用Elbrus PDK备份计算机而无需任何义务以“那样”下载的情况,Veeam Agent for Linux绝对适合。 即使用文件进行了所有修改。

当然,正式不支持Elbrus OS的分发工具包,因为它不包括在受支持的工具列表中。 此外,其上的Linux版Veeam代理未经质量检查部门测试。 不支持(至少在本文发表时)。

我希望本文对那些试图执行2017年6月29日第334号命令的人有用。 我的吧……[待定]。

Source: https://habr.com/ru/post/zh-CN447960/


All Articles