曝光:Linux企业运维实战
上QQ阅读APP看书,第一时间看更新

6.2 tar软件包管理

Linux操作系统除了使用RPM管理工具对二进制软件包管理之外,还可以通过tar、zip、jar等工具对源码包软件进行管理。

6.2.1 tar命令参数详解

tar命令参数详解如下:

□-A,--catenate,--concatenate:将存档与已有的存档合并。

□-c,--create:建立新的存档。

□-d,--diff,--compare:比较存档与当前文件的不同之处。

□--delete:从存档中删除。

□-r,--append:附加到存档结尾。

□-t,--list:列出存档中文件的目录。

□-u,--update:仅将较新的文件附加到存档中。

□-x,--extract,--get:解压文件。

□-j,--bzip2,--bunzip2:有bz2属性的软件包。

□-z,--gzip,--ungzip:有gz属性的软件包。

□-b,--block-size N:指定块大小为N∗512字节(默认时N=20)。

□-B,--read-full-blocks:读取时重组块。

□-C,--directory DIR:指定新的目录。

□--checkpoint:读取存档时显示目录名。

□-f,--file[HOSTNAME:]F:指定存档或设备,后接文件名称。

□--force-local:强制使用本地存档,即使存在克隆。

□-G,--incremental:建立老GNU格式的备份。

□-g,--listed-incremental:建立新GNU格式的备份。

□-h,--dereference:不转储动态链接,转储动态链接指向的文件。

□-i,--ignore-zeros:忽略存档中的0字节块(通常意味着文件结束)。

□--ignore-failed-read:在不可读文件中作0标记后再退出。

□-k,--keep-old-files:保存现有文件,从存档中展开时不进行覆盖。

□-K,--starting-file F:从存档文件F开始。

□-l,--one-file-system:在本地文件系统中创建存档。

□-L,--tape-length N:在写入N∗1024个字节后暂停,等待更换磁盘。

□-m,--modification-time:当从一个档案中恢复文件时,不使用新的时间标签。

□-M,--multi-volume:建立多卷存档,以便在几个磁盘中存放。

□-O,--to-stdout:将文件展开到标准输出。

□-P,--absolute-paths:不要从文件名中去除“/”。

□-v,--verbose:详细显示处理的文件。

□--version:显示tar程序的版本号。

□--exclude:file不把指定文件包含在内。

□-X,--exclude-from FILE:从指定文件中读入不想包含的文件列表。

6.2.2 tar企业案例演示

tar企业案例演示如下:

□tar-cvf jfedu.tar.gz jfedu:打包jfedu文件或者目录,打包后名称为jfedu.tar.gz。

□tar-tf jfedu.tar.gz:查看jfedu.tar.gz包中内容。

□tar-rf jfedu.tar.gz jfedu.txt:将jfedu.txt文件追加到jfedu.tar.gz中。

□tar-xvf jfedu.tar.gz:解压jfedu.tar.gz程序包。

□tar-czvf jfedu.tar.gz jfedu:使用gzip格式打包并压缩jfedu目录。

□tar-cjvf jfedu.tar.bz2 jfedu:使用bzip2格式打包并压缩jfedu目录。

□tar-czf jfedu.tar.gz ∗ -X list.txt:使用gzip格式打包并压当前目录所有文件,排除list.txt中记录的文件。

□tar-czf jfedu.tar.gz ∗ --exclude=zabbix-3.2.4.tar.gz--exclude=nginx-1.12.0.tar. gz:使用gzip格式打包并压缩所有文件和目录,排除zabbix-3.2.4.tar.gz和nginx-1. 12.0.tar.gz软件包。

6.2.3 tar实现Linux操作系统备份

tar命令工具除了用于日常打包、解压源码包之外,最大的亮点还可以用于Linux操作系统文件及目录的备份。使用tar-g可以基于GNU格式做增量备份,备份原理是检查目录和文件的atime、mtime、ctime属性是否被修改。文件及目录时间属性详解如下:

□文件被访问的时间(access time,atime);

□文件内容被改变的时间(modified time,mtime);

□文件写入、权限更改的时间(change time,ctime)。

总结:更改文件内容mtime和ctime都会改变,但ctime可以在mtime未发生变化时被更改。例如修改文件权限文件mtime时间不变而ctime时间改变。tar增量备份案例演示步骤如下:

(1)/root目录创建jingfeng文件夹,同时在jingfeng文件夹中新建jf1.txt、jf2.txt文件,如图6-1所示。

图6-1 创建jingfeng目录及文件

(2)使用tar命令第一次完整备份jingfeng文件夹,-g指定快照snapshot文件,第一次没有该文件则会自动创建,如图6-2所示。

图6-2 tar备份jingfeng目录中文件

(3)使用tar命令第一次完整备份jingfeng文件夹会生成快照文件/data/backup/ snapshot,后期增量备份会以snapshot文件为参考。在jingfeng文件夹中再创建jf3.txt、jf4. txt文件,然后再通过tar命令增量备份jingfeng文件夹所有内容,如图6-3所示。

图6-3 tar增量备份jingfeng目录中文件

如图6-3所示,增量备份时需-g指定第一次完整备份的快照snapshot文件,同时增量打包的文件名不能与第一次备份后的文件名重名,通过tar-tf可以查看打包后的文件内容。

6.2.4 shell+tar实现增量备份

企业中日常备份的数据包括/boot、/etc、/root、/data等目录。备份的策略为每周一至周六执行增量备份,每周日执行全备份。在企业中备份操作系统数据均使用shell脚本完成,此处auto_backup_system.sh备份脚本供参考。后面章节会系统讲解shell脚本,脚本内容如下: