本文主要参考这个博客。https://blog.csdn.net/sinat_27554409/article/details/78227496
全文一半内容是复制粘贴的这个博客内容,提前声明一下,以防侵权。
还参考了下这个
https://www.cnblogs.com/smartmsl/p/8352054.html
ubuntu有时候用着用着崩了,或者想回退到历史某个版本。这就需要系统备份了:把当前某个能用的状态备份了,以后用到。
关于备份的方法有很多,这里采用最简单的方法:把所有文件打包成 tar xxx.tgz 文件,存到一个硬盘里,然后下次系统崩了想还原到这个系统的时候就把之前的文件全都删了,把这个tar xxx.tgz从硬盘复制到电脑上,然后解压缩。
为了保险起见,你需要两个东西:一个U盘(安装了ubuntu启动盘的U盘)和什么也没有的硬盘。硬盘是为了放那个压缩文件的,U盘是为了在一个试用版的ubuntu上擦除ubuntu系统并放置新的版本。
总体思路是这样:你把ubuntu整个给打包成一个压缩包,放到硬盘里。然后用那个U盘启动,点try ubuntu(不要安装ubuntu,用试用版ubuntu)。然后找到我们ubuntu系统所在的分区,把这个分区的东西全都删了,把硬盘里的那个压缩包解压。就是这样:
详细步骤:
一、备份系统
使用TAR。和Windows不同,Linux不会限制root访问任何东西,你可以把分区上的所有东西都扔到一个TAR文件里去。在ubuntu系统上插入硬盘,我们把tar文件直接压缩到硬盘上。先看看硬盘路径:
先进入硬盘所在的目录
插入硬盘以后它会有个新的东西,你点进去以后,右键选择“open in terminal”,然后输入pwd看它的路径。就知道硬盘所在的当前路径是什么。
打开一个终端,并运行 sudo su(回车后要求输入密码);
继续在终端中输入以下指令,进入系统根目录:
cd /
开始备份系统,在终端中输入:
$ tar cvpzf /media/xxx/backup.tgz --exclude=/proc --exclude=/lost+found --exclude=/backup.tgz --exclude=/mnt --exclude=/sys --exclude=/media /
这个/media/xxx/就是你的硬盘的路径。这样,这个backup.tgz就直接在硬盘里了。
让我们来简单看一下这个命令:
‘tar’ 是用来备份的程序
c - 新建一个备份文档
v - 详细模式, tar程序将在屏幕上实时输出所有信息。
p - 保存许可,并应用到所有文件。
z - 采用‘gzip’压缩备份文件,以减小备份文件体积。
f - 说明备份文件存放的路径, Ubuntu.tgz 是本例子中备份文件名。
“/”是我们要备份的目录,在这里是整个文件系统。
在档案文件名“backup.tgz”和要备份的目录名“/”之间给出了备份时必须排除在外的目录。有些目录是无用的,例如“/proc”、“/lost+ found”、“/sys”。当然,“backup.tgz”这个档案文件本身必须排除在外,否则你可能会得到一些超出常理的结果。如果不把“/mnt”排除在外,那么挂载在“/mnt”上的其它分区也会被备份。另外需要确认一下“/media”上没有挂载任何东西(例如光盘、移动硬盘),如果有挂载东西, 必须把“/media”也排除在外.
备份完成后,在文件系统的根目录将生成一个名为“backup.tgz”的文件,它的尺寸有可能非常大。现在你可以把它烧录到DVD上或者放到你认为安全的地方去。
在备份命令结束时你可能会看到这样一个提示:’tar: Error exit delayed from previous errors’,多数情况下你可以忽略它。
二、恢复系统
如果原来的Ubuntu系统已经崩溃,无法进入。则可以使用Ubuntu安装U盘(live USB)进入试用Ubuntu界面。
这个live USB就是把ubuntu的镜像(.ios文件)烧录到一个U盘里。具体按照下面这个来就行了。
https://zhuanlan.zhihu.com/p/565454757
在U盘启动ubuntu的时候,它会让你选install ubuntu还是try ubuntu,你选try。
选try ubuntu以后,你要做的就是把之前ubuntu的东西都擦除了。怎么擦除呢?要先看之前ubuntu那堆文件是在哪个磁盘分区上。
有两种方法查看:
一种是输入
gnome-disks
图中,分区名字叫/dev/nvme0n1p7
一种是输入
sudo fdisks -l
主要看画住那部分:
问题来了:这么多分区,我怎么知道原来那堆东西在哪个分区呢?主要看两个,一个是看文件类型,比如上面那个,只有一个是linux filesystem,那就是它了;另一个是size,上面那个分区249.5G,估计就是了。
有个终极的办法,就是试:你试试把一个分区挂载到一个文件夹下,然后打开那个文件夹下看看里面的文件是不是原来Ubuntu的文件。
挂载方法:(这里有个坑,我后面写)
mount /dev/nvme0n1p7 /tmp
你打开看看那个tmp文件夹里面的文件,确认一下这个磁盘分区(我这里是 /dev/nvme0n1p7,你要换成你的名字)是不是ubuntu那堆文件所在的分区。
然后擦除原来ubuntu的文件:(这里有个坑,我后面写)
sudo rm -rf /tmp
这个是什么意思呢?就是/dev/nvme0n1p7这个磁盘分区,和/tmp文件夹,是“一体”的,你删了那个文件夹,就是相当于删了那个磁盘分区。
进入硬盘对应路径,将备份文件”backup.tgz”拷入该分区;
cd media/xxx/ (你的硬盘所在路径)
sudo cp -i backup.tgz /tmp
进入分区并将压缩文件解压缩,参数x是告诉tar程序解压缩备份文件。
cd /tmp
sudo tar xvpfz backup.tgz
重新创建那些在备份时被排除在外的目录;
sudo mkdir proc lost+found mnt sys media
或者这样:
mkdir proc
mkdir lost+found
mkdir mnt
mkdir sys
当你重启电脑(正常进入ubuntu,不是用U盘启动。进入系统前把U盘拔了),你会发现一切东西恢复到你创建备份时的样子了!
一些坑
1,你挂载的时候可能报错找不到文件
mount /dev/nvme0n1p7 /tmp
就是这个会报错,说不存在那个文件。这个的解决方案是,你别进入U盘启动的试用版的ubuntu,你进入原来的那个ubuntu,如果原来的那个ubuntu实在进不去,你就干脆U盘安装ubuntu,进入。进入原来的ubuntu就能正常挂载了。
这个问题我查了一些资料,但没搞清楚为什么试用版的ubuntu就找不见那个分区,我猜可能是因为试用版的ubuntu会屏蔽一些磁盘信息吧,导致虽然那个磁盘在,但系统找不见那个磁盘。
2,但是这里面有个问题,就是你执行下面的语句:
sudo rm -rf /tmp
以后,它整个系统都没你删了,啥都没了,你没法操作了。你连硬盘里的文件都读不了。这时候就用U盘启动Ubuntu,用试用版(这时候可以用试用版了),然后再
mount /dev/nvme0n1p7 /tmp
这时候是能挂载成功的。(我也不知道为什么,这次就能挂载上了。知道原理的读者可以写在评论区,不胜感激)
然后就能执行刚才那堆操作了,就是下面这个命令开始,顺着往下执行就行了。
cd /media/xxx (你的磁盘路径)
sudo cp -i backup.tgz /tmp
xxx(其他指令翻回上面去看)
2,进入系统以后firefox用不了。
你先测测网能不能用:
ping www.baidu.com
然后看命令行能不能进入firefox
sudo firefox 或者 firefox
我是网能用,但火狐进不去。解决方法如下:
1)参考https://blog.csdn.net/m0_55887872/article/details/124259924
进入控制台在根目录(cd ~)下输入命令ls -la查看当下所有文件的权限(主要看.cache和.mozilla的用户名和用户组)。
使用Firefox浏览器时必须确保.cache和.mozilla的用户名和用户组是当前用户。
使用如下命令:
sudo chown -hR ubuntu:ubuntu .cache
sudo chown -hR ubuntu:ubuntu .mozilla
那个ubuntu是我的用户名,你换成你的用户名。ubuntu:ubuntu,前面是用户名,后面是用户组名,一般是一样的。
2)参考https://blog.csdn.net/qq_46717339/article/details/113808598
┌──(root💀kali)-[~/桌面]
└─# firefox-esr
Running Firefox as root in a regular user's session is not supported. ($HOME is /home/zhiji which is owned by uid 1000.)
┌──(root💀kali)-[~/桌面]
└─# cd /home/zhiji
┌──(root💀kali)-[~]
└─# chown -R root ./
你试试能不能打开firefox。如果你在命令行在root权限下输入firefox,你还是启动不了(但这时候网页已经能用firefox了),这是因为firefox是ubuntu用户用的,root用户用不了(我看报错大概是那个意思)。
有哪些不周到的地方请读者指正。