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

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

部分经常使用选项

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

-c, --create:tar打包,后缀通常为.tar

-f, --file=:后面马上接打包或压缩后获得的文件名

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

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

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

-C:指定解压缩的目录

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

其余linux

-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指定的快照文件,增量备份修改过的文件,包括权限和属性,没有动过的文件不会重复备份。网站

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

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

备份/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 ./

恢复过程htm

恢复彻底备份的档案文件

能够选择是否先清空/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

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

软硬链接文件能够正常恢复

参考

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值