资讯专栏INFORMATION COLUMN

tar命令高级用法——备份数据

JerryZou / 1533人阅读

摘要:上有功能强大的命令,最初是为了制作磁带备份而设计的,它的作用是把文件和目录备份到磁带中,然后从磁带中提取或恢复文件。现在我们可以使用来备份数据到任何存储介质上。

Linux上有功能强大的tar命令,tar最初是为了制作磁带备份(tape archive)而设计的,它的作用是把文件和目录备份到磁带中,然后从磁带中提取或恢复文件。现在我们可以使用tar来备份数据到任何存储介质上。它是文件级备份,不必考虑底层文件系统类别,并且支持增量备份。

部分常用选项

-z, --gzip:使用gzip工具(解)压缩,后缀一般为.gz

-c, --create:tar打包,后缀一般为.tar

-f, --file=:后面立刻接打包或压缩后得到的文件名

-x, --extract:解包命令,与-c对应

-p:保留备份数据的原本权限和属性

-g:后接增量备份的快照文件

-C:指定解压缩的目录

--exclude:排除不打包的目录或文件,支持正则匹配

其他

-X, --exclude-from:在一个文件中列出要排除的目录或文件(在--exclude=较多时使用)

-t, --list:列出备份档案中的文件列表,不与-c-x同时出现

-j, --bzip2:使用bzip2工具(解)压缩,后缀一般为.bz2

-P:保留绝对路径,解压时同样会自动解压到绝对路径下

-v:(解)压缩过程显示文件处理过程,常用但不建议对大型文件使用

增量备份(网站)数据

许多系统(应用或网站)每天都有静态文件产生,对于一些比较重要的静态文件如果有进行定期备份的需求,就可以通过tar打包压缩备份到指定的地方,特别是对一些总文件比较大比较多的情况,还可以利用-g选项来做增量备份。

备份的目录最好使用相对路径,也就是进入到需要备份的根目录下

具体示例方法如下。

备份当前目录下的所有文件
# tar -g /tmp/snapshot_data.snap -zcpf /tmp/data01.tar.gz .

在需要恢复的目录下解压恢复
# tar -zxpf /tmp/data01.tar.gz -C .

-g选项可以理解备份时给目录文件做一个快照,记录权限和属性等信息,第一次备份时/tmp/snapshot_data.snap不存在,会新建一个并做完全备份。当目录下的文件有修改后,再次执行第一条备份命令(记得修改后面的档案文件名),会自动根据-g指定的快照文件,增量备份修改过的文件,包括权限和属性,没有动过的文件不会重复备份。

另外需要注意上面的恢复,是“保留恢复”,即存在相同文件名的文件会被覆盖,而原目录下已存在(但备份档案里没有)的,会依然保留。所以如果你想完全恢复到与备份文件一模一样,需要清空原目录。如果有增量备份档案,则还需要使用同样的方式分别解压这些档案,而且要注意顺序。

下面演示一个比较综合的例子,要求:

备份/tmp/data目录,但cache目录以及临时文件排除在外

由于目录比较大(>4G),所以全备时分割备份的档案(如每个备份档案文件最大1G)

保留所有文件的权限和属性,如用户组和读写权限

# cd /tmp/data

做一次完全备份
# rm -f /tmp/snapshot_data.snap
# tar -g /tmp/snapshot_data.snap -zcpf - --exclude=./cache ./ | split -b 1024M - /tmp/bak_data$(date -I).tar.gz_
分割后文件名后会依次加上aa,ab,ac,...,上面最终的备份归档会保存成
bak_data2014-12-07.tar.gz_aa
bak_data2014-12-07.tar.gz_ab
bak_data2014-12-07.tar.gz_ac
...

增量备份
可以是与完全备份一模一样的命令,但需要注意的是假如你一天备份多次,可能导致档案文件名重复,那么就会导致
备份实现,因为split依然会从aa,ab开始命名,如果一天的文件产生(修改)量不是特别大,那么建议增量部分不
分割处理了:( 一定要分割的话,文件名加入更细致的时间如$(date +%Y-%m-%d_%H) )
# tar -g /tmp/snapshot_data.snap -zcpf /tmp/bak_data2014-12-07.tar.gz --exclude=./cache ./

第二天增备
# tar -g /tmp/snapshot_data.snap -zcpf /tmp/bak_data2014-12-08.tar.gz --exclude=./cache ./

恢复过程

恢复完全备份的档案文件
可以选择是否先清空/tmp/data/目录
# cat /tmp/bak_data2014-12-07.tar.gz_* | tar -zxpf - -C /tmp/data/

恢复增量备份的档案文件
$ tar –zxpf /tmp/bak_data2014-12-07.tar.gz -C /tmp/data/
$ tar –zxpf /tmp/bak_data2014-12-08.tar.gz -C /tmp/data/
...
一定要保证是按时间顺序恢复的,像下面文件名规则也可以使用上面通配符的形式

如果需要定期备份,如每周一次全备,每天一次增量备份,则可以结合crontab实现。

备份文件系统

备份文件系统方法有很多,例如cpio, rsync, dump, tar,这里演示一个通过tar备份整个Linux系统的例子,整个备份与恢复过程与上面类似。
首先Linux(这里是CentOS)有一部分目录是没必要备份的,如/proc/lost+found/sys/mnt/media/dev/proc/tmp,如果是备份到磁带/dev/st0则不必关心那么多,因为我这里是备份到本地/backup目录,所以也需要排除,还有其它一些NFS或者网络存储挂载的目录。

创建排除列表文件
# vi /backup/backup_tar_exclude.list
/backup
/proc
/lost+found
/sys
/mnt
/media
/dev
/tmp

$ tar -zcpf /backup/backup_full.tar.gz -g /backup/tar_snapshot.snap --exclude-from=/backup/tar_exclude.list /

注意

使用tar无论是备份数据还是文件系统,需要考虑是在原系统上恢复还是另一个新的系统上恢复。

tar备份极度依赖于文件的atime属性,

文件所属用户是根据用户ID来确定的,异机恢复需要考虑相同用户拥有相同USERID

备份和恢复的过程尽量不要运行其他进程,可能会导致数据不一致

软硬连接文件可以正常恢复

参考

tar高级教程:增量备份、定时备份、网络备份

Linux服务器数据备份恢复的详细讲解


原文链接地址:http://seanlook.com/2014/12/08/tar_backup_filesystem/


文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/7687.html

相关文章

  • Java开发人员必须掌握的Linux命令(一)

    摘要:是的缩写是系统下基于登陆进行安全的远程文件拷贝命令。通过排序的方式显示前十条压缩解压命令是用来建立,还原备份文件的工具程序,它可以加入,解开备份文件内的文件。压缩文件命令备份文件备份文件目录后缀也可以是。查找服务,并彻底杀死进程。 子曰:工欲善其事,必先利其器。 做一个积极的人编码、改bug、提升自己我有一个乐园,面向编程,春暖花开! 学习应该是快乐的,在这个乐园中我努力让自己能用简洁...

    李义 评论0 收藏0
  • docker 实践开发

    本文摘自: docker 高级进阶前面几篇详细的介绍了,docker的一些基本内容和知识. 这里, 我们来实践一下,在正式环境中,docker是怎么搭建的.在开始之前,说一些docker运行时的基本原理.docker最大的特点就是虚拟化, 通过VM来获得底层的操作权限,并且利用自身的进程构建了一个庞大的集群系统, 相当于,一个docker下面,我们可以连接上不同的电脑. 但实际上, 他们都可以虚拟...

    alanoddsoff 评论0 收藏0
  • Mysql 架构及优化之-mysql常用管理命令及工具安装和使用

    摘要:常用管理命令查看数据库信息查看引擎查看插件查看数据库执行进程工具命令位于备份所有数据库备份库导出库中表导出库中表的数据及表结构备份同时生成新的文件使用只导出表结构不导 mysql常用管理命令 查看数据库信息 mysql>s showImg(https://segmentfault.com/img/bVwFda?w=842&h=356); 查看引擎 mysql> show engi...

    ZweiZhao 评论0 收藏0
  • MySQL数据库运维之数据备份02

    摘要:上篇文章介绍了一下数据库逻辑备份第一部分的使用,本篇文章将继续介绍数据库逻辑备份第二部分工具的操作过程介绍是有公司发行的一款数据库物理备份工具,可以对存储引擎的表实现在线热备,同时可以对数据库进行全备和增量备份以及增量恢复。 上篇文章介绍了一下MySQL数据库逻辑备份第一部分mysqldump的使用,本篇文章将继续介绍MySQL数据库逻辑备份第二部分Xtrabackup工具的操作过程!...

    LeoHsiun 评论0 收藏0
  • Linux命令_文件相关

    摘要:和处于方括号内时不用使用转义字符就失去通配符的作用。查找文件名为的文件输出重定向命令允许将命令执行结果重定向到一个文件,本应显示在终端上的内容保存到指定文件中。文件压缩解压与命令结合使用实现文件打包压缩。 最好的命令: --help 1. 查看文件信息:ls ls是英文单词list的简写,其功能为列出目录的内容,是用户最常用的命令之一,它类似于DOS下的dir命令 Linux文件或者...

    eternalshallow 评论0 收藏0

发表评论

0条评论

JerryZou

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<