linux tar高级用法,Linux中tar命令高级用法——备份…
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命令高级用法——备份…相关推荐
- linux下的zz命令,linux中cut命令的用法
本文主要记录一下Linux中cut命令的用法. 1. cut命令使用说明 Usage: cut OPTION... [FILE]... cut命令用于选出FILE文件中每一行的某些部分,然后打印到标准 ...
- Linux中read命令的用法
1. 简单读取 read命令接收标准输入(键盘)的输入或其他文件描述符的输入,得到输入后,read命令将数据放入一个标准变量中.下面是 read命令的最简单形式: bixiaopeng@bixiaop ...
- linux系统中scp命令的用法
scp是 secure copy的缩写, scp是linux系统下基于ssh登陆进行安全的远程文件拷贝命令.linux的scp命令可以在linux服务器之间复制文件和目录. scp命令的用处: scp ...
- linux系统中ssh命令,Linux系统中SSH 命令的用法有哪些?
今天小编要跟大家分享的文章是关于Linux系统中SSH命令的用法有哪些?一个系统管理员可能会同时管理着多台服务器,这些服务器也许会放在不同的地方.要亲自一台一台的去访问来管理它们显然不是最好的方法,通 ...
- linux scp涉及到权限,linux系统中scp命令的用法(Permission denied排错二例)
linux系统中scp命令的用法 注意: 在使用过程中如果出现 -bash: scp: command not found 请执行yum install openssh-clients scp是 ...
- linux只输入wc命令,Linux系统中wc命令的用法详解
在Linux系统中,wc命令不太经常用到,只是在统计字数的时候才会使用该命令,那么下面由学习啦小编为大家整理了linux系统中wc命令的详细解释的相关知识,希望对大家有帮助! Linux系统中wc命令 ...
- php执行md5sum,Linux_详解Linux系统中md5sum命令的用法,MD5算法常常被用来验证网络文 - phpStudy...
详解Linux系统中md5sum命令的用法 MD5算法常常被用来验证网络文件传输的完整性,防止文件被人篡改.MD5全称是报文摘要算法(Message-Digest Algorithm 5),此算法对任 ...
- linux的source命令,Linux中source命令的用法
Linux中source命令的用法 Linux系统中,source命令通常用"."来代替,是一个点命令,与一般的命令有所不同,下面小编就给大家介绍下Linux中source命令的用 ...
- linux命令seq,Linux 中seq 命令的用法
Linux 中seq 命令的用法 用于产生从某个数到另外一个数之间的所有整数 用法:seq [选项]... 尾数 或:seq [选项]... 首数 尾数 或:seq [选项]... 首数 增量 尾数 ...
- linux apt 命令,Ubuntu系统中apt命令的用法汇总
apt是Advanced Packaging Tool的简称,是一款安装包管理工具.那么要如何使用apt命令来管理安装包呢?apt命令有哪些参数呢?下面小编就给大家详细介绍下Ubuntu中apt命令的 ...
最新文章
- 屏幕输出语句_第三章 常用输入/输出函数
- JavaFX技巧1:可调整大小的Canvas
- 【渝粤教育】国家开放大学2018年春季 3780-22T燃气设备操作与维护 参考试题
- kotlin 类和对象_Kotlin程序| 类和对象的示例(带有学生数据)
- datagrip替换字_Datagrip 快捷键和常用插件持续更新一集一些使用技巧
- escilpse 连接mysql,浅谈docker-compose网络设置之networks
- 上位机与1200组态步骤_图解组态王一组态王软件
- 【Computer Organization笔记13】指令流水中的结构冲突和数据冲突
- python的类和对象例题_Python类、类对象和实例对象、组合、绑定详细讲解
- Linux系统中cgroup功能介绍
- win10下Clion的安装与配置
- 微信安装包 11 年膨胀 575 倍?QQ安装包800M?谁在抢你的手机内存?
- D3D11 法线贴图(凹凸贴图)
- DMA控制器原理详解
- 主控芯片测试软件,主控芯片检测工具MyDiskTest的使用教程的详解【图文】
- 如何将txt、excel文档里面的电话号码快速转换为vcf格式的电话簿导入手机
- iPhone自定义铃声(iOS12 + iTunes in macOS Mojave)
- 推荐几款优质 Mac 软件下载网站 - 从此告别软件荒
- 阿里云安全组是什么?如何配置安全组(图文教程)?
- hdwiki php5.5,HDWiki 5.1 正式版推出 编辑器全新改版