整机备份、恢复以及部署镜像
写在最前的当然是正本清源的指令:
sudo tar -cvpzf sys_bak.tar.gz --exclude=/sys_bak.tar.gz --exclude=/proc/* --exclude=/lost+found --exclude=/mnt/* --exclude=/sys/* /
前面用tar.gz(实际是利用的tar)来备份系统,初次“成功”(其实就没有成功过,因为国内搜索出来的网文所用的指令,首先是 参数cvpzf前面少了“-”,其二是语法本身就“抄”错了,他们是不能成功排除任何文件的,我在下面的指令里面指出了他们的错误)…原先我还发现后续的备份过程中总是备份时间特别长,感觉上备份永无止境,我猜是某些服务在运行中一直更新某些文件造成的,结果在跟老婆聊天的时候灵机一动发现自己的错误也是第三个错误:在备份文件的后面加上了时间戳,但是没有排除对带有时间戳的备份文件进行备份,于是执行时进入一个”套娃循环“模式:增量备份前一秒产生一个备份套娃,后一秒就要把它备份进去,生成新一层大一点的备份套娃,然后在增量,再备份…子子孙孙无穷馈矣,鸡生蛋蛋生鸡,备份了12个小时。。。
## [全局备份系统]:/[利用cvpzf] 根目录备份 :~$ sudo tar cvpzf system_backup_20220320.tar.gz / --exclude=/proc --exclude=/lost+found --exclude=/system_backup.tar.gz --exclude=/mnt --exclude=/system_backup.tar.gz #这里自作聪明添加的时间戳,没有被后面的额--exclude照顾到,于是就循环递增起来 ## 踩坑感受!!错误一: tar后面接 -cvpzf,少了一个短横;还有一个错误二:从【tar后面,直到--exclude=】之前,是没有"/"的,这个多半是在看英文介绍的时候把转行的标记认为是tar执行的路径,其实路径是放在最后面的那个"/",他就是根目录的意思。正确的语法,看下面截图中第一个画圈的全句。
鉴于以上的错误会导致服务器根目录存储空间耗尽,最后必须扩容服务器,如果是弹性计算服务器,一个月下来可能我就要删库走人了。刚刚才看了tar的帮助文档,其中也是把这个原则专门提出来:
通过上面的截选,我也看出来国内两篇介绍tar备份系统的文章中,核心指令居然是错的。我试着执行了他们的指令, tar不会排除我所列出的文件位置,比如第一个坑/proc/kcore这个虚拟的文件有128T,备份在遇到此处就根本执行不下去了,四个小时都在备份。。。
用文章开头的指令,我成功的在5分钟之内备份成功。

