前几天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\*, 一定要先创建快照后更新. 最好能够定期设置快照备份系统.
当然设置自动备份的脚本也可以救急. 毕竟快照设置需要手动操作, 麻烦.



server shell GNU/Linux

本博客所有文章除特别声明外,均采用 CC BY-SA 3.0协议 。转载请注明出处!