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

1.部分常用选项

●-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:(解)压缩过程显示文件处理过程,常用但不建议对大型文件使用

2.增量备份(网站)数据

许多系统(应用或网站)每天都有静态文件产生,对于一些比较重要的静态文件如果有进行定期备份的需求,就可以通过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实现。

3.备份文件系统

备份文件系统方法有很多,例如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 /

4.注意

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

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

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

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

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

来自:Sean's Notes 小样儿の部落阁

链接:http://seanlook.com/2014/12/08/tar_backup_filesystem

linux tar高级用法,Linux中tar命令高级用法——备份…相关推荐

  1. linux下的zz命令,linux中cut命令的用法

    本文主要记录一下Linux中cut命令的用法. 1. cut命令使用说明 Usage: cut OPTION... [FILE]... cut命令用于选出FILE文件中每一行的某些部分,然后打印到标准 ...

  2. Linux中read命令的用法

    1. 简单读取 read命令接收标准输入(键盘)的输入或其他文件描述符的输入,得到输入后,read命令将数据放入一个标准变量中.下面是 read命令的最简单形式: bixiaopeng@bixiaop ...

  3. linux系统中scp命令的用法

    scp是 secure copy的缩写, scp是linux系统下基于ssh登陆进行安全的远程文件拷贝命令.linux的scp命令可以在linux服务器之间复制文件和目录. scp命令的用处: scp ...

  4. linux系统中ssh命令,Linux系统中SSH 命令的用法有哪些?

    今天小编要跟大家分享的文章是关于Linux系统中SSH命令的用法有哪些?一个系统管理员可能会同时管理着多台服务器,这些服务器也许会放在不同的地方.要亲自一台一台的去访问来管理它们显然不是最好的方法,通 ...

  5. linux scp涉及到权限,linux系统中scp命令的用法(Permission denied排错二例)

    linux系统中scp命令的用法 注意: 在使用过程中如果出现   -bash: scp: command not found 请执行yum install openssh-clients scp是 ...

  6. linux只输入wc命令,Linux系统中wc命令的用法详解

    在Linux系统中,wc命令不太经常用到,只是在统计字数的时候才会使用该命令,那么下面由学习啦小编为大家整理了linux系统中wc命令的详细解释的相关知识,希望对大家有帮助! Linux系统中wc命令 ...

  7. php执行md5sum,Linux_详解Linux系统中md5sum命令的用法,MD5算法常常被用来验证网络文 - phpStudy...

    详解Linux系统中md5sum命令的用法 MD5算法常常被用来验证网络文件传输的完整性,防止文件被人篡改.MD5全称是报文摘要算法(Message-Digest Algorithm 5),此算法对任 ...

  8. linux的source命令,Linux中source命令的用法

    Linux中source命令的用法 Linux系统中,source命令通常用"."来代替,是一个点命令,与一般的命令有所不同,下面小编就给大家介绍下Linux中source命令的用 ...

  9. linux命令seq,Linux 中seq 命令的用法

    Linux 中seq 命令的用法 用于产生从某个数到另外一个数之间的所有整数 用法:seq [选项]... 尾数 或:seq [选项]... 首数 尾数 或:seq [选项]... 首数 增量 尾数 ...

  10. linux apt 命令,Ubuntu系统中apt命令的用法汇总

    apt是Advanced Packaging Tool的简称,是一款安装包管理工具.那么要如何使用apt命令来管理安装包呢?apt命令有哪些参数呢?下面小编就给大家详细介绍下Ubuntu中apt命令的 ...

最新文章

  1. 屏幕输出语句_第三章 常用输入/输出函数
  2. JavaFX技巧1:可调整大小的Canvas
  3. 【渝粤教育】国家开放大学2018年春季 3780-22T燃气设备操作与维护 参考试题
  4. kotlin 类和对象_Kotlin程序| 类和对象的示例(带有学生数据)
  5. datagrip替换字_Datagrip 快捷键和常用插件持续更新一集一些使用技巧
  6. escilpse 连接mysql,浅谈docker-compose网络设置之networks
  7. 上位机与1200组态步骤_图解组态王一组态王软件
  8. 【Computer Organization笔记13】指令流水中的结构冲突和数据冲突
  9. python的类和对象例题_Python类、类对象和实例对象、组合、绑定详细讲解
  10. Linux系统中cgroup功能介绍
  11. win10下Clion的安装与配置
  12. 微信安装包 11 年膨胀 575 倍?QQ安装包800M?谁在抢你的手机内存?
  13. D3D11 法线贴图(凹凸贴图)
  14. DMA控制器原理详解
  15. 主控芯片测试软件,主控芯片检测工具MyDiskTest的使用教程的详解【图文】
  16. 如何将txt、excel文档里面的电话号码快速转换为vcf格式的电话簿导入手机
  17. iPhone自定义铃声(iOS12 + iTunes in macOS Mojave)
  18. 推荐几款优质 Mac 软件下载网站 - 从此告别软件荒
  19. 阿里云安全组是什么?如何配置安全组(图文教程)?
  20. hdwiki php5.5,HDWiki 5.1 正式版推出 编辑器全新改版

热门文章

  1. k60的FTM模块:配置电机、编码器、舵机
  2. 畅通工程2(prim模拟链表结构体建图+kru)
  3. 计算机网络家庭网络设计,为家庭设计一个局域网
  4. 前端 DOM、BOM(二)
  5. python提取首字符 判断火车票座位_python实战之通过爬虫实现火车票查询
  6. 批量导入AD账户批量启用Exchange 账户步骤
  7. OpenLayers动画效果显示路线
  8. Python3爬虫(4)--抓取考生的四六级成绩
  9. 曲线运动与万有引力公式_万有引力的本质【2019版】
  10. 在wine里面播放视频和音乐之WMP