过去用Ubuntu系统没有备份的习惯, 也没出什么问题。但是前几日不知怎么搞的, 开不了机了, 由于没有备份,无奈只能重装系统。遂今日把备份过程记录一下, 以便日后查阅。
1.清理缓存
# 清理旧版本的软件缓存
sudo apt-get autoclean
# 清理所有软件缓存
sudo apt-get clean
# 删除系统不再使用的孤立软件
sudo apt-get autoremove
2.使用tar备份
命令及参数解释
v: 显示详细的压缩信息
c:创建tar包
j:使用bzip2压缩格式 (压缩率略高,但是速度慢,后缀为:tar.bz2)
z:使用gzip压缩格式(压缩率略低,但是速度快,后缀为:tar.gz)
p:保留文件原始权限
f:生成的压缩文件的路径要排除的文件
/proc
/lost+found
/sys
/cdrom
/mnt
/media
我把/home下cavalry(用户目录)之外的目录都排除了(根据自己情况选择 ,需要备份就不要排除)
排除打包文件自身命令执行
#切换到root用户
sudo su
#进入到 / 目录
cd /
##打包
tar -cvpj -f /home/ubuntu_`date +%Y%m%d_%H`.tar.bz2 --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/ubuntu_`date +%Y%m%d_%H`.tar.bz2 /
解释一下这个命令:
tar
: 这不用多说
-cvpj -f
: 一些参数
/home/ubuntu_\
date +%Y%m%d_%H`.tar.bz2:压缩后的文件名
–exclude: 一些忽略文件
/` : 一定不要忘记最后的 / , 代表被压缩的目录
3.打包过程中会遇到如下错误或警告信息
tar: Exiting with failure status due to previous errors
这个问题其实不是真正的错误信息, 真正的错误信息混杂在标准输出(stout)中, 重新执行命令并把v参数去掉即可看到真正问题所在。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 -cpj -f /home/ubuntu_`date +%Y%m%d_%H`.tar.bz2 --exclude=/proc [...省略...] --exclude=/home/ubuntu_`date +%Y%m%d_%H`.tar.bz2 -P /
这样解压的时候就不需要使用 -C 来指定解压到哪个目录:tar xvpfj ubuntu_20170120_11.tar.bz2
tar: /dev/shm: file changed as we read it
或tar: /run/udev/control: socket ignored
这个socket ignored产生的原因是压缩的过程中文件正在使用,无需理会,不影响压缩。tar: /run/user/1000/gvfs: Cannot stat: Permission denied
这个问题不用理会,与虚拟文件系统有关,不影响压缩。 具体原因参见:
http://unix.stackexchange.com/questions/77453/why-cannot-find-read-run-user-1000-gvfs-even-though-it-is-running-as-root小结
最后总结一下就是:压缩过程中碰到的这几个问题都不是问题。
我刚装的Ubuntu 16.04 64bit, 经bzip2压缩后约为2.4G
4.恢复
tar xvpfj ubuntu_20170120_11.tar.bz2 -C /
5.tar的增量备份
参考这个博客, 楼主暂时还没用到增量备份, 此处留备后用.
http://lesca.me/archives/how-to-incrementally-backup-linux-with-gnu-tar.html