文件的压缩与备份

文章讲述了文件打包和压缩在Linux系统中的应用,提到了zip、gzip、bzip2和xz等压缩工具的使用,以及tar命令用于打包和压缩多个文件或目录的方法。还讨论了split命令用于大文件分割的情况。
摘要由CSDN通过智能技术生成

首先提出一个问题:我们为什么需要打包压缩文件?

答:为了备份还原 有利于网络传输

但打包与压缩是两个过程,打包是将许多文件放到一起形成一个文件,也就是归档文件,而压缩则是减少占用磁盘的空间。

Windows文件中的哪些压缩文件是Linux也是可以打开的?

zip是两者都支持的

.rar 文件在Linux里默认是不能打开的

常见的压缩指令
  • zip 压缩命令

    • zip passwd.zip passwd 压缩
    • unzip passwd.zip 解压缩
  • gzip

    • gzip passwd 压缩
    • gunzip passwd.gz 解压缩
  • xzip xzip passwd 与gzip类似 但是压缩效果比gzip好 (压缩后占比更少) 但是压缩时间长

  • bzip2 同gzip类似

linux 上常见的压缩指令是 gzip、bzip2 以及最新的 xz,还有支持 windows 的 zip,至于其他的压缩指令基本上都淘汰了。

gzip
gzip [-cdtv#] 文档名
zcat 文档名.gz
[root@localhost test]# gzip passwd
[root@localhost test]# ls
passwd.gz
[root@localhost test]# gunzip passwd.gz 
[root@localhost test]# ls
passwd

其余几条指令的使用方法与gzip大致相同,此处便不做赘述

tar

这种将多个文件或目录包成一个大文件的指令功能,就可以称呼为 打包指令,tar 就是这样一个功能的打包指令,同时还可以通过压缩指令将该文件进行压缩。

tar 的选项与参数非常多,这里只接受几个常用的选项

选项与参数

  • c:建立打包文件,可搭配 -v来观察过程中被打包的文件名
  • t:查看打包文件的内容含有哪些文件,重点在查看文件名
  • x:接打包或解压缩的功能,可搭配 -C 在特定目录解开,特别注意 c、t、x 不能同时出现在一起
  • z:通过 gzip 的支持进行压缩、解压缩;此时文件名最好为 *.tar.gz
  • j:通过 bzip2 的支持进行压缩、解压缩;此时文件名最好为 *.tar.bz2
  • J:通过 xz 的支持进行压缩、解压缩;此时文件名最好为 *.tar.xz
  • v:在压缩、解压缩的过程中,将正在处理的文件名显示出来
  • f:后面要立刻接要被处理的文件名,建议 -f 单独写一个选项(不容易忘记)
  • C:在指定目录解压缩
  • p:保留备份数据的原本权限与属性,常用语备份(-c)重要的配置文件
  • P:保留绝对路径,保留 root 跟路径
  • --exclude=FILE:在压缩过程中,排除指定的文件,不打包

最常用的是以下命令:

  • 压 缩:tar -cjf -v filename.tar.bz2 要被压缩的文件或目录,后打包的压缩文件会覆盖原来的文件
    • tar -czf -->.tar.gz
    • tar -cjf -->.tar.bz2
    • tar -cJf -->.tar.xz
  • 查 询:tar -tjf -v filename.tar.bz2
  • 解压缩:tar -xjf -v filename.tar.bz2 -C 指定目录解开
#压缩
[root@localhost demo]# tar -czf test.sh.gz test.sh
[root@localhost demo]# ls
demo1  test1.sh  test.sh  test.sh.bz2  test.sh.gz
#查看
[root@study ~]# tar -jtv -f /root/etc.tar.bz2
drwxr-xr-x root/root         0 2019-10-04 18:38 etc/
-rw-r--r-- root/root       808 2019-10-27 22:43 etc/fstab
-rw------- root/root         0 2019-10-04 18:20 etc/crypttab
lrwxrwxrwx root/root         0 2019-10-04 18:20 etc/mtab -> /proc/self/mounts
-rw-r--r-- root/root        51 2019-10-04 18:20 etc/resolv.conf
#解压
[root@localhost demo1]# tar -zx -f test.sh.gz -C /wh
[root@localhost demo1]# cd /wh
[root@localhost wh]# ls
test

格式化输出日期

  • +%Y year 年
  • %m 月
  • %d 天
  • %H 小时
  • %M 分
  • %S 秒
ctime=$(date+%Y%m%d)

tar czf  bool-$ctime.tar.gz /bool

tar czf  bool-$(date+%Y%m%d).tar.gz /bool
系统备份

在工作中经常需要备份的东西:日志文件

编写一个脚本 实现备份/var/log目录下的所有文件 要求文件名包含当天日期 精确到秒 同时删除七天前的备份文件 只保留最近七天的文件

#!/bin/bash
ctime=$(date +%Y%m%d%H%M%S)

mkdir -p /scbackup
tar czf /scbackup/${ctime}-log.tar.gz /var/log 2>/dev/null

find /scbackup -mtime +7 -name "*tar.gz" -exec rm -rf {} \;
大文件处理
split

可以分割文件,按文件大小或行数来分割

选项和参数:

  • b 指定每个分割文件的大小

  • d 指定分割文件的后缀为数字

  • a 指定分割文件数字后缀的长度 如果是1 后缀为 0,1,2 如果是2 ,则是00,01,02.。。

  • C 指定每行最大的字节数

  • l 指定每个文件的最大行数

[root@localhost changsha]# ll -h
总用量 512M
-rw-r--r--. 1 root root  104 2月  27 15:55 bigfile.sh
-rw-r--r--. 1 root root 411M 2月  27 15:56 test.txt
[root@localhost changsha]# split -b 200M test.txt
[root@localhost changsha]# ll -h
总用量 923M
-rw-r--r--. 1 root root  104 2月  27 15:55 bigfile.sh
-rw-r--r--. 1 root root 411M 2月  27 15:56 test.txt
-rw-r--r--. 1 root root 200M 2月  27 16:00 xaa
-rw-r--r--. 1 root root 200M 2月  27 16:00 xab
-rw-r--r--. 1 root root  11M 2月  27 16:00 xac

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值