原创:linux ubuntu系统备份和完美还原的命令行方法

编程知识 更新时间:2023-05-02 14:44:14

原创:Linux (ubuntu) 系统备份和干净还原的纯命令行方法

我的系统是ubuntu18.04。20.04及以上的版本不能用,但可以通过18.04的备份来还原。

我是用arm64的小机子做linux服务器,非常省电(待机4w)。 因为系统没有自带桌面,所以一切操作都是在ssh里。系统硬盘是个12g的ssd,外挂一块4T的sata硬盘。
每次尝试新的软件之后,系统硬盘的文件都会变大一圈,我的机子很特殊,如果重装系统,必须用ttl刷机,虽然速度快,但很麻烦。我一直想找个能把系统彻底还原成以前备份时的样子的方法(系统硬盘占用空间和备份时一样大)。网上能找到的方法都试过了,不成功,只好自己研究了一个,很不错,方便快捷。
曾经试过systemback,timeshift,不支持arm64,没成功。backintime倒是成功了,可我原来的系统只有657兆,装完它这个软件,再装虚拟桌面,一下子变成1.4g了,备份完后变成5g多了,疯了。肯定不能用。
后来又尝试自带的tar,可是每次还原都是增量还原,比如备份时系统硬盘是657兆,之后装了很多东西,系统硬盘变成2g了,用tar还原,结果还是2g。网上不少tar备份和还原的文章,都是含糊其辞,误以为能完美还原系统硬盘备份时的状态,仔细研究后,发现tar并不会删除系统硬盘里新增的未备份的东西。
还尝试过dd啥的,那个是整个系统盘备份,没数据的地方也备份,备份出来12g多,速度超慢,放弃。
好了,说说我自己找到的方法吧,也是利用tar备份。

备份:

在外挂硬盘d的ubuntu目录下生成备份文件 system.img。注意排除的这些个目录。

sudo tar cvpzf /mnt/d/ubuntu/system.img --exclude=/proc --exclude=/lost+found --exclude=/mnt --exclude=/sys --exclude=/tmp /

哪个文件夹需要排除可以自己根据自己情况定。
/proc是内存文件,个头很大,别备份,也不用备份。
/sys 无法备份,总报错,也不用备份。
/lost+found, 不用备份,可以直接删除,
/mnt, /media:如果里面挂载硬盘了,别备份,个头太大了,备份不了的。

还原:

当你把系统弄乱了,想完全还原成以前备份时的样子?由于tar还原是增量还原,系统硬盘里备份后新增的内容并不会被删除,所以要先把系统根目录下的各文件夹删除或还原:

(以下都是在root 账户下运行)
在挂载的硬盘d的ubuntu目录下建一个backup文件夹

mkdir /mnt/d/ubuntu/backup  

把之前的备份文件都解压到backup文件夹。

sudo tar xvpfz /mnt/d/ubuntu/system.img -C /mnt/d/ubuntu/backup  

把系统根目录下的这些文件夹删除。(如果系统不同,你要自己添减(先看看后面哪些文件夹不能删除,不确定的不能乱删,不然真的会执行不了任何命令,需要重装系统了)。)

rm -rf /usr /var /opt /media /home /etc /srv /sbin /root /boot /tmp /lost+found    

查看目前系统硬盘占用大小。会小了很多很多。

df -lh

还原回来,前面不能有sudo命令了。出现tar: Exiting with failure status due to previous errors没关系。

tar xvpfz /mnt/d/ubuntu/system.img -C /   

注意:系统根目录下:run和dev 文件夹不让删。bin和lib文件夹千万不能删,会导致执行不了任何命令了。ssh,sftp也登录不了,那样只能重装系统了。
这几个文件夹需要用下面方法从备份文件夹里拷贝过来(同步,并去掉新增的内容,保留文件的属主,属组,文件权限等信息。):

rsync -avz --delete /mnt/d/ubuntu/backup/run/ /run/
rsync -avz --delete /mnt/d/ubuntu/backup/dev/ /dev/
rsync -avz --delete /mnt/d/ubuntu/backup/bin/ /bin/
rsync -avz --delete /mnt/d/ubuntu/backup/lib/ /lib/

(上面那些用rm -rf删除的文件夹其实也可以用这个rsync方法,而且更安全。当你不确定一个文件夹是否能直接删除时,用这个rsync方法,就是一行行改代码比较麻烦。不过可以写个脚本,速度超快,比systemback,timeshift等方便多了。)
再彻底还原一遍。

sudo tar xvpfz /mnt/d/ubuntu/system.img -C /   

强制重启。此时reboot不能用。

reboot -f  

df -lh看看系统硬盘的大小,你会发现干净的系统回来了!系统硬盘大小和以前备份时一样了,甚至会更少些,因为去掉了很多无用的临时文件。所以这个还能给系统瘦身,真不错。
这个方法简单实用,不用装任何软件,备份和恢复都很迅速,tar命令还能实现每次增量备份,很强大。比安装timeshift等需要图形界面的软件方便多了。

(有用就收藏、点赞啊!)

更多推荐

原创:linux ubuntu系统备份和完美还原的命令行方法

本文发布于:2023-04-26 17:56:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/d056d4efc3de0a8ecca6d62c728477d6.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:命令行   系统备份   完美   方法   linux

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!

  • 105882文章数
  • 26884阅读数
  • 0评论数