描述
我们有一台Ubuntu server(服务器),想要对整个服务器进行备份和恢复,应该怎么操作呢?
备份:意思就是,拷贝整个服务器的配置和文件
恢复:用之前的备份,将现在服务器洗掉,恢复成备份时的样子
下面的操作已经亲自验证过了
参考文献
https://www.cnblogs.com/zhumengke/articles/9529509.html
解决方案
1. 连接到服务器
一般来说,服务器都是没有UI界面的,也是不用配上显示器的。
如果你对服务器连接上显示器,显示的界面会是类似boot界面的命令行
因此对服务器进行备份,首先需要ssh进服务器
命令:
ssh 服务器的用户名@服务器的ip地址
举例子
ssh chen@192.168.1.10
随后系统会提示输入密码,请你输入服务器的登录密码即可
2. 备份操作
切换到root用户
sudo su
然后进入“/”目录
cd /
备份命令,会在/home
路径下生成一个名字为backup.tar.gz
的压缩包
sudo tar -zcpf /home/backup.tar.gz --exclude=/proc --exclude=/lost+found --exclude=/sys --exclude=/cdrom --exclude=/mnt --exclude=/media --exclude=/home/ide/ --exclude=/home/java/ --exclude=/home/WORKING_DIRECTORY/ --exclude=/home/workspace/ --exclude=/home/aosp-latest.tar --exclude=/home/backup.tar.gz /
备份命令的解释
tar : 这不用多说
-zcpf: tar命令打包的设置,可自行查询
/home/backup.tar.gz:压缩后的文件名
--exclude: 一些忽略文件
一定不要忘记最后的 / , 代表被压缩的目录
生成压缩包过程中可能出现的问题
tar: Exiting with failure status due to previous errors
提示意识:你打包失败了,真正的错误在上面写了
这个问题其实不是真正的错误信息, 真正的错误信息混杂在标准输出(stout)中, 重新执行命令并把tar
命令后面跟着的-v
参数去掉即可看到真正问题所在。
原压缩命令应该是(sudo tar -vzcpf),它会打印出每个文件夹压缩的过程,我上面写的压缩命令已经将v参数去掉了(sudo tar -zcpf),这样只会打印出哪个文件夹压缩存在问题,你就可以去查看问题了
tar: Removing leading ’/‘ from member names
或者
tar: Removing leading ’/‘ from hard link targets
这个问题其实不影响程序的执行,产生的原因是tar在压缩的过程中自动帮我们去掉了路径前的“/”,也就是tar压缩后的包是按照相对路径压缩的。 当我们恢复时, 就需要通过 -C 参数手动指定解压到 “/” 目录, 如:tar xvpfj ubuntu_20170120_11.tar.bz2 -C /
可以使用-P参数来指定按照绝对路径打包:
tar: ......(一个路径): file changed as we read it
或者
tar: .....(一个路径): socket ignored
这个socket ignored产生的原因是压缩的过程中文件正在使用,无需理会,不影响压缩。
tar: .....(一个路径): Cannot open: Permission denied
这个问题不用理会,与虚拟文件系统有关,不影响压缩。
3. 恢复操作
注意,你还是要切换到root用户并且切换到/
分支
解压缩命令
tar xvpfz /home/backup.tar.gz -C /
操作正确性的确认
你可以在系统上安装一个软件包,建议你安装cmake,比较简单。再在某个路径下建立一个文件,我在/home下新建了一个1.py文件
sudo apt-get install cmake
cd /home
touch 1.py
在终端输入命令cmake
,终端会提示如下,代表你已经成功安装了cmake。你还可以去/home下确认1.py的存在
Usage
cmake [options] <path-to-source>
cmake [options] <path-to-existing-build>
Specify a source directory to (re-)generate a build system for it in the
current working directory. Specify an existing build directory to
re-generate its build system.
Run 'cmake --help' for more information.
随后执行解决方案中所写的服务器备份操作,会在/home
路径下生成一个名字为backup.tar.gz
的压缩包
随后你可以删去刚才装的cmake功能包,并删除1.py
sudo apt-get remove cmake
cd /home
rm -rf 1.py
再在终端输入命令cmake
,会提示cmake并没有安装,去/home下也会发现1.py已经成功被删除了
bash: /usr/bin/cmake: No such file or directory
执行恢复操作后,你可以发现执行cmake又重新成功,1.py也回来了。