前几天ssh登录服务器时候发现系统提示有五十几个包可以升级, 其中四十几个安全升级. 我想想也半年多没有升级系统软件了, 这么多包要升级, 那就干脆来个sudo apt update && sudo apt dist-upgrade -y升级系统吧.
今天看到htop提示服务器已经连续运行153天了, 内存占用也升到了五百多兆, 想想我就重启吧, 然后就再也连不上服务器了, 网页也进不去.
最终用阿里云的救援连接(其实是VNC连接)进入了系统, sudo ifconfig发现连网卡都没有了.
惊慌了一个下午, 晚上我开始恢复服务器系统.
操作
我在阿里云上找到了三月份的系统快照, 直接回滚.
回滚后终于”久违”地连上了服务器, 检查包括网站以及RStudio web版本都能使用, 随后进行系统升级, 重启验证系统正常.
sudo update && sudo apt dist-upgrade -y && sudo apt autoremove -y && sudo reboot
随后我在自己在家用香橙派zero设置的服务器上找到了8月18号自动备份的服务器数据, 将其传回服务器中的临时目录, 解压并且更新服务器数据.
更新服务器数据用命令cp -ruv 解压出来的备份数据 数据原目录.
事先做过的备份
除去快照外, 我在香橙派zero上建立了一个cronie定时任务, 每周二晚上会备份一次服务器数据.
具体备份脚本:
#! /bin/zsh
alias sshs='ssh -i ~/****** ***@***.***.***.***'
alias scps='scp -i ~/******'
SIP='***@***.***.***.***'
p=$PWD
cd ~/fwq
if [ $? -ne 0 ]; then
mkdir -p ~/fwq
cd ~/fwq
fi
/bin/rm wkplace.tgz site.tgz 2> /dev/null
sshs '/bin/rm ~/wkplace.tgz 2> /dev/null'
sshs 'cd ~; tar -czf wkplace.tgz wkplace'
scps $SIP:~/wkplace.tgz ./
a=`sshs 'md5sum ~/wkplace.tgz'`
a=${a:0:12}
b=`md5sum ./wkplace.tgz`
b=${b:0:12}
while [ $((16#$a)) -ne $((16#$b)) ]
do
/bin/rm ./wkplace.tgz
scps $SIP:~/wkplace.tgz ./
b=`md5sum ./wkplace.tgz`
b=${b:0:12}
done
sshs '/bin/rm ~/wkplace.tgz'
其中利用MD5校验做了数据完整性审查, 避免因为网络状况导致数据备份不全.
教训
下次使用sudo apt dist-upgrade等命令更新系统软件包时候一定要先看一遍更新的软件包, 如果有一些比较关键的软件包像grub2\*, 一定要先创建快照后更新. 最好能够定期设置快照备份系统.
当然设置自动备份的脚本也可以救急. 毕竟快照设置需要手动操作, 麻烦.
本博客所有文章除特别声明外,均采用 CC BY-SA 3.0协议 。转载请注明出处!