本人辣鸡,主要方便自己查询和刚入坑经常玩挂的朋友,这里主要以自己使用的Arch为例,其他发行版应该大同小异。Btrfs用snapper的同学可以无视~~~
Linux上主要的备份方式 我知道的有 dd 和 tar
相比来说 tar打包显得比较灵活,可以用于本机备份恢复,也可以恢复到其他计算机,打包的目录可以完全按自己需要。这里主要介绍tar打包以及本机的恢复。
tar打包 可以只打包不压缩,速度会比较快,但是你可能会面对一个 好几十G的系统备份包,并不推荐。
压缩 可以用gzip或者Bzip2 (好像还有其他的,不熟悉,就不做介绍了) 二者相比,gzip速度相对较快,但压缩比率比Bzip2略低。
我这里并不用这两个软件打包,因为两个都是单线程,打包速度会非常慢。。。曾经用bzip2打包等到天荒地老都没好。。。
那么重头戏来了! 偶然的机会知道了一个叫pigz的多线程压缩软件,采用与gzip相同的压缩方式,默认以逻辑CPU的个数的线程进行压缩,具体线程还可以自定义,速度飞快,详细可以百度 pigz。
那么 tar能不能调用pigz进行压缩呢? 答案是肯定的!
看一下tar的man手册

-I, --use-compress-program=COMMAND
Filter data through COMMAND. It must accept the -d option,
for decompression. The argument can contain command line
Options.
发现tar是可以指定其他压缩程序进行压缩的。
于是直接 sudo pacman -S pigz 安装(arch官方源就有)下面就可以开始打包了!
进入根目录 然后执行:
sudo tar --use-compress-program=pigz -cvpf arch-backup.tgz --exclude=/proc --exclude=/lost+found --exclude=/arch-backup.tgz --exclude=/mnt --exclude=/sys --exclude=/run/media /

简单介绍一下命令,--use-compress-program=pigz 是用pigz压缩,arch-backup.tgz是打包之后的文件名,--exclude=/xxx是打包时排除的目录,这里简单的排除了一些不需要的目录,具体排除的内容可以根据自己的发行版和需要设定,--exclude=/arch-backup.tgz 是排除根目录下的自身,因为我是在根目录下进行的操作,如果不排除自身的话,打包可能会进入一个死循环。。。你可能会打出一个巨型包。

这样就开始进行压缩打包了
用htop 可以看到 CPU满载,大概3-5分钟左右完成,比起单线程10%多的占用 速度快了不知道多少倍!



完成候可以看到 28G左右的分区 打包完 是一个15G的压缩包,个头还是很大。。。也算可以接受。。不知道有没有其他办法能够再小点

打包完成后,你可能会看到一条错误信息,具体原因小白不懂,不过并没有什么影响。然后将备份的包放到一个你觉得安全的地方。
至此,所有备份工作都已经完成,系统挂了可以用下面的方法恢复
Linux上主要的备份方式 我知道的有 dd 和 tar
相比来说 tar打包显得比较灵活,可以用于本机备份恢复,也可以恢复到其他计算机,打包的目录可以完全按自己需要。这里主要介绍tar打包以及本机的恢复。
tar打包 可以只打包不压缩,速度会比较快,但是你可能会面对一个 好几十G的系统备份包,并不推荐。
压缩 可以用gzip或者Bzip2 (好像还有其他的,不熟悉,就不做介绍了) 二者相比,gzip速度相对较快,但压缩比率比Bzip2略低。
我这里并不用这两个软件打包,因为两个都是单线程,打包速度会非常慢。。。曾经用bzip2打包等到天荒地老都没好。。。
那么重头戏来了! 偶然的机会知道了一个叫pigz的多线程压缩软件,采用与gzip相同的压缩方式,默认以逻辑CPU的个数的线程进行压缩,具体线程还可以自定义,速度飞快,详细可以百度 pigz。
那么 tar能不能调用pigz进行压缩呢? 答案是肯定的!
看一下tar的man手册

-I, --use-compress-program=COMMAND
Filter data through COMMAND. It must accept the -d option,
for decompression. The argument can contain command line
Options.
发现tar是可以指定其他压缩程序进行压缩的。
于是直接 sudo pacman -S pigz 安装(arch官方源就有)下面就可以开始打包了!
进入根目录 然后执行:
sudo tar --use-compress-program=pigz -cvpf arch-backup.tgz --exclude=/proc --exclude=/lost+found --exclude=/arch-backup.tgz --exclude=/mnt --exclude=/sys --exclude=/run/media /

简单介绍一下命令,--use-compress-program=pigz 是用pigz压缩,arch-backup.tgz是打包之后的文件名,--exclude=/xxx是打包时排除的目录,这里简单的排除了一些不需要的目录,具体排除的内容可以根据自己的发行版和需要设定,--exclude=/arch-backup.tgz 是排除根目录下的自身,因为我是在根目录下进行的操作,如果不排除自身的话,打包可能会进入一个死循环。。。你可能会打出一个巨型包。

这样就开始进行压缩打包了
用htop 可以看到 CPU满载,大概3-5分钟左右完成,比起单线程10%多的占用 速度快了不知道多少倍!



完成候可以看到 28G左右的分区 打包完 是一个15G的压缩包,个头还是很大。。。也算可以接受。。不知道有没有其他办法能够再小点

打包完成后,你可能会看到一条错误信息,具体原因小白不懂,不过并没有什么影响。然后将备份的包放到一个你觉得安全的地方。
至此,所有备份工作都已经完成,系统挂了可以用下面的方法恢复