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

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

2015-12-31 Linux学习

Linux上有功能强大的tar命令,tar最初是为了制作磁带备份(tape archive)而设计的,它的作用是把文件和目录备份到磁带中,然后从磁带中提取或恢复文件。现在我们可以使用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/

时间: 2024-12-28 21:28:40

Linux tar命令高级用法——备份数据的相关文章

Linux tar 命令参数及用法详解--Linux打包备份命令

linux tar命令参数及用法详解--linux打包备份命令 tar命令 tar - tar 档案文件管理程序的 GNU 版本.下面将逐个介绍其含义tar [-cxtzjvfpPN] 文件与目录 ....常用参数:-c :建立一个压缩文件的参数指令(create 的意思):-x :解开一个压缩文件的参数指令!-t :查看 tarfile 里面的文件!特别注意,在参数的下达中, c/x/t 仅能存在一个!不可同时存在!因为不可能同时压缩与解压缩.-z :是否同时具有 gzip 的属性?亦即是否需

[转帖]15+ 个 tar 命令的用法,附示例

15+ 个 tar 命令的用法,附示例 http://www.oschina.net/question/12_146379 4月23日 武汉 OSC 源创会 —— ES6开发体系实践>>> »   tar 命令用来将很多文件打包成一个单一的磁带或者磁盘归档,并可从归档文件恢复出文件列表.当你需要通过 email 发送大量文件时或者传输文件时非常有用.这里我们介绍一些基本的使用场景. tar 的语法: ? 1 # tar [options] file.tar file1 file2 ..

Linux挂载命令mount用法及参数详解

Linux挂载命令mount用法及参数详解 导读 mount是Linux下的一个命令,它可以将分区挂接到Linux的一个文件夹下,从而将分区和该目录联系起来,因此我们只要访问这个文件夹,就相当于访问该分区了. 挂接命令(mount) 首先,介绍一下挂接(mount)命令的使用方法,mount命令参数非常多,这里主要讲一下今天我们要用到的. 命令格式:mount [-t vfstype] [-o options] device dir 1.-t vfstype 指定文件系统的类型,通常不必指定,m

[转帖]Linux date命令的用法(转)

Linux date命令的用法(转) https://www.cnblogs.com/asxe/p/9317811.html 1.命令:date 2.命令功能:date 可以用来显示或设定系统的日期与时间. 3.命令参数 -d<字符串>:显示字符串所指的日期与时间.字符串前后必须加上双引号: -s<字符串>:根据字符串来设置日期与时间.字符串前后必须加上双引号: -u:显示GMT: --help:在线帮助: --version:显示版本信息. 4.日期格式字符串列表 %H 小时(以

Linux tar 命令用法

tar 命令可以为linux的文件和目录创建档案.利用 tar,可以为某一特定文件创建档案(备份文件),也可以在档案中改变文件,或者向档案中加入新的文件.tar 最初被用来在磁带上创建档案,现在,用户可以在任何设备上创建档案.利用 tar 命令,可以把一大堆的文件和目录全部打包成一个文件,这对于备份文件或将几个文件组合成为一个文件以便于网络传输是非常有用的. 首先要弄清两个概念:打包和压缩.打包是指将一大堆文件或目录变成一个总的文件:压缩则是将一个大的文件通过一些压缩算法变成一个小文件. 为什么

Linux文件命令和用法

file命令极其用法 Windows: PE Linux: ELF 文件系统: rootfs:根文件系统 FHS: Linux /boot:系统启动相关的文件,如内核. initrd,以及grub(bootloader) /dev:设备文件 设备文件: 块设备:随机访问,数据块 字符设备:线性访问,按字符为单位 设备号:主设备号(major)和此设备号(minor) /etc:配置文件 /home:用户的家目录,每一个用户的家目录通常默认为/home/USERNAME/ /root:管理员的家目

Linux find命令的用法实践

一.find命令简介 Linux下find命令在目录结构中搜索文件,并执行指定的操作.Linux下find命令提供了相当多的查找条件,功能很强大.由于find具有强大的功能,所以它的选项也很多,其中大部分选项都值得我们花时间来了解一下.即使系统中含有网络文件系统( NFS),find命令在该文件系统中同样有效,只你具有相应的权限. 在运行一个非常消耗资源的find命令时,很多人都倾向于把它放在后台执行,因为遍历一个大的文件系统可能会花费很长的时间(这里是指30G字节以上的文件系统). 1.命令格

linux tar命令简介

一.使用介绍 1.名词区分 打包:将一大堆文件或目录变成一个总的文件[tar命令] 压缩:将一个大的文件通过一些压缩算法变成一个小文件[gzip,bzip2等] Linux中很多压缩程序只能针对一个文件进行压缩,这样当你想要压缩一大堆文件时,你得将这一大堆文件先打成一个包(tar命令),然后再用压缩程序进行压缩(gzip bzip2命令). 2.tar语法 语法:tar [主选项+辅选项] 文件或目录 使用该命令时,主选项必须有,它告诉tar要做什么事情,辅选项是辅助使用的,可以选用. 主选项:

linux脚本命令的用法

grep命令的用法 grep (global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来. 参数: 1. -A NUM,--after-context=NUM   除了列出符合行之外,并且列出后NUM行. 如:   $ grep –A 1 panda file  (从file中搜寻有panda样式的行,并显示该行的后1行) 2