上周公司一台服务器遭遇的黑客攻击,数据损失殆尽,唯独虚拟机镜像幸存下来。痛定思痛厚,决定利用虚拟机系统来做数据异地备份。一翻实践下来,任务顺利完成。记录一下相关的知识点,希望永远不会因为同样缘由而再次派上用场。
服务器环境
- 服务器的主操作系统是Windows Server 2022
- 虚拟机软件是Oracle公司出品的免费开源的VirtualBox 7.0.14
- 虚拟机镜像是我最喜欢的Debian 11
共享文件夹
以上环境都是现成的,接下来我们就开始设置共享文件夹了。
- 1、配置共享文件夹
首先打开VisualBox,再主界面点击“设置”图标。
进入设置项“共享文件夹”,然后点击右上角的加号图标。
先选择共享文件夹路径,然后设置一个名称。注意:这个名称是一个别名,可以随便起。等挂接到Linux镜像系统上,需要用到这个名称(尽量使用英文名)。
2、安装增强功能包(Guest Additions) 这个功能包相当予以个扩展插件,能让镜像系统更好地调用宿主机的资源。我们挂接上共享文件夹必须要先安装它。 还是再设置界面找到名叫“存储”的项目,然后添加碟片。虚拟光盘iso镜像文件实在:
C:\Program Files\Oracle\VirtualBox\VBoxGuestAdditions.iso
挂接好碟片后,就可以切换到Linux系统,进行下一步的操作了。 执行命令:
lsblk
,看看光盘碟片是否已经载入。可以看到sr0就是光驱的位置(/dev/sr0)。接下来还要把光驱挂接到本地目录才能访问里头的内容。操作命令如下:
mkdir /mnt/cdrom sudo mount /dev/sr0 /mnt/cdrom
然后进入目录看一下是否挂接成功:
cd /mnt/cdrom ls
确认无误后,开始运行增强包内的脚本安装。
./VBoxLinuxAdditons.run
但是,不幸报错了:
Verifying archive integrity... 100% MD5 checksums are OK. All good. Uncompressing VirtualBox 7.0.14 Guest Additions for Linux 100% bzip2 not found. Please install: bzip2 tar; and try again.
然而,这点小问题难不倒我们,明显失却少了一个解压缩的工具,安装上就可以了。
apt-get install bzip2
然后再来一次
./VBoxLinuxAdditons.run
挂接共享文件夹
安装成功之后,先创建一个目录,用来挂接VirtualBox的共享文件夹,如果这个目录需要双向读写的话需要增加权限,干脆来个777吧。
mkdir -p /data/jindie
chmod -c 777 /data/jindie
最后挂接共享文件夹
mount -t vboxsf jindie /data/jindie
注意在vboxsf
后面的参数便是我们刚才在VisualBox所设置的共享目录名称。最后看一下结果,确实把共享文件夹挂接上了。
定时备份
大概的思路就是,用crontab服务,定时执行SCP脚本,把备份文件全部上传到另外一台服务器上。
- 先创建一个脚本
/data/scripts/bak-jindie.sh
,脚本内容如下:
TODAY=`date +%Y%m%d`
sshpass -p "backupuser" scp /data/jindie/*_$TODAY.ADF backupuser@192.168.1.100:/backup/jindie
注意,为了能自动完成密码的输入用这里用了一个叫sshpass
的工具。如果您的服务器还没有安装,请执行:
apt-get install sshpass
- 最后配置cron脚本定时执行备份动作
echo "59 0 * * * /data/scripts/bak-jindie.sh" > /data/crons
crontab /data/crons
总结
- 1、VirsualBox界面添加共享文件夹
- 2、安装增强功能包(Guest Additions)
- 3、在Linux挂接共享文件夹
- 4、利用crontab服务定时执行scp脚本将每日的备份文件上传另外的服务器