这个方法不用装软件,完全用ubuntu自带命令,方便快速,完全把系统硬盘恢复到备份时的大小和样子。
我的系统是ubuntu18.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是内存文件,个头很大,别备份,也不用备份。
/dev, /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命令了,要加参数-f。
reboot -f
再df -lh看看系统硬盘的大小,你会发现干净的系统回来了!系统硬盘大小和以前备份时一样了,甚至会更少些,因为去掉了很多无用的临时文件。所以这个还能给系统瘦身,真不错。
这个方法简单实用,不用装任何软件,备份和恢复都很迅速,tar命令还能实现每次增量备份,很强大。比安装timeshift等需要图形界面的软件方便多了。
————————————————
我的系统是ubuntu18.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是内存文件,个头很大,别备份,也不用备份。
/dev, /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命令了,要加参数-f。
reboot -f
再df -lh看看系统硬盘的大小,你会发现干净的系统回来了!系统硬盘大小和以前备份时一样了,甚至会更少些,因为去掉了很多无用的临时文件。所以这个还能给系统瘦身,真不错。
这个方法简单实用,不用装任何软件,备份和恢复都很迅速,tar命令还能实现每次增量备份,很强大。比安装timeshift等需要图形界面的软件方便多了。
————————————————