Linux归档与备份——gzip、gunzip、bzip2、bunzip2、tar、zip、unzip、rsync

2023-05-16

维护系统数据安全是计算机系统管理者的基本任务之一,及时创建系统文件的备份文件是维度系统数据安全的一种常用方法。
本节主要介绍以下命令
文件压缩程序

  • gzip:压缩和解压缩文件工具
  • bzip2:块排序文件压缩工具

文件归档程序

  • tar:磁带归档工具
  • zip:打包和压缩文件

文件同步工具

  • rsync:远程文件和目录的同步

0.参考文献

《Linux命令行大全》 [美] William E. Shotts. Jr 著 郭光伟 郝记生 译, 人民邮电出版社

如有侵权,可联系博主删除

更多有用的Linux知识详解,可参加博主的Linux学习导航页

1.文件压缩

压缩是为了实现以最小的可利用空间存储最多的数据,其中可利用空间包括内存、存储设备或者网络带宽。数据压缩是一个移除冗余信息的过程。
压缩算法一般分为两大类:无损压缩有损压缩。无损压缩保留原文件的所有数据,也就是压缩文件还原时,还原后的文件与原文件完全一致。有损压缩在压缩时,为了实现更大程度的压缩而删除了某些数据信息,在还原时,与原文件不是完全吻合,但是差距不大。JPEG(图像压缩技术)和MP3(音频压缩技术)就是典型的有损压缩。以下仅讨论无损压缩。

1.1 gzip—文件压缩与解压缩

gzip命令用于压缩一个或更多文件。执行命令后,原文件会被其压缩文件取代,gunzip命令则将压缩文件还原为原文件。例如

$ gzip foo.txt
$ ls -l
总用量 4
-rw-rw-r-- 1 lixj lixj 44 6月  10 19:02 foo.txt.gz
$ gunzip foo.txt.gz
$ ls -l
总用量 21
-rw-rw-r-- 1 lixj lixj 18 6月  10 19:02 foo.txt

可以看出,压缩后的文件大小差不多才是原文件的1/5。我们还可以看出,压缩厚的文件与原文件有着相同的权限和时间戳。
表1 gzip的选项

选项功能描述
-c将输出内容写到标准输出端口并保持原文件。也可以用–stdout或者–to–stdout
-d解压缩,加上该选项后,gzip命令便类似于gunzip。也可以用–decompress或–uncompress
-f强制压缩,及时原文件的压缩版本已经存在了。也可以用–force替代
-h显示有用信息,也可用–help代替
-l列出所有压缩文件的压缩统计,可以用–list代替
-r如果该命令的操作参数中有一个或是多个目录,那么递归压缩包含在目录中的文件,也可用–recursive代替
-t检验压缩文件的完整性,可以用–test代替
-v在压缩时显示详细信息,可以用–verbose代替
-number设置压缩级别,number是1(速度最快,压缩比最小)~9(速度最慢,压缩比最大)范围内的一个整数。gzip默认的压缩级别是6
$ gzip foo.txt
$ gzip -tv foo.txt.gz
foo.txt.gz:      OK

以上代码使用参数-t、-v检查了压缩文件的完整性。

1.2 bzip2—牺牲速度以换取高质量的数据压缩

bzip2程序与gzip命令功能相仿,但使用不同的压缩算法。该算法具有高质量的数据压缩能力,但却降低了压缩速度。多数情况下与gzip类似,只是以.bz2为后缀。

$ bzip2 foo.txt
$  ls -l
总用量 4
-rw-rw-r-- 1 lixj lixj 3500 6月  15 10:24 foo.txt.bz2
$ bunzip2 foo.txt.bz2
$ ls -l
总用量 21
-rw-rw-r-- 1 lixj lixj 20725 6月  15 10:24 foo.txt

可以看出,bzip2与gzip的用法相似,且前面讨论的几乎所有选项(除了-r选项),bzip2都支持。
bzip2还配有专门的bzip2recover命令,用户恢复损坏的.bz2文件。

2.文件归档

归档是与压缩操作配合使用的一个常用文件管理任务。归档是一个聚集众多文件并将它们组合为一个大文件的过程。它通常作为系统备份的一部分,而且通常也用于将旧数据从某个系统移到某些长期存储设备的情况下。

2.1 tar—磁带归档工具

tar是tape archive的缩写,该命令最初的作用就是磁带备份,但同样用于其它存储设备。tar归档文件可以由许多独立的文件、一个或多个目录层次或者两者的混合而成。语法为

tar mode[options] pathname ...

其中mode是指表2列出的操作模式中一种
表2 tar命令的操作模式

模式描述
c创建文件和/或目录列表的归档文件
x从归档文件中提取文件
t在归档文件末尾追加指定路径
r列出归档文件的内容

2.2 zip—打包压缩文件

zip程序既是文件压缩工具又是文件归档工具。Linux用户主要使用zip程序与Windows系统交换文件,而不是将其压缩或者是归档文件。
最基本的调用方式为:

zip options zipfile file

例如创建一个playground的zip归档文件,可以输入以下命令行:

$ zip -r playground.zip playground

显示信息

  adding: playground/ (stored 0%)
  adding: playground/dir-{009,010..99/ (stored 0%)
  adding: playground/dir-{009,0100/ (stored 0%)
  adding: playground/dir-{003,0100/ (stored 0%)
  adding: playground/dir-{007,010..99/ (stored 0%)

这些信息显示的是每个新添归档文件的状态。zip使用两种存储方式向归档文件中添加文件,一种是不对文件进行压缩直接存储,如本例。第二种,对文件进行压缩后存储,紧随存储方法之后显示的数值是压缩比。当前文件夹是空的,所以没有对其内容进行压缩。
利用unzip,可以直接提取zip文件中的内容

$  cd foo
$ unzip ../playground.zip

zip与tar不同的一点是,如果指定的归档文件已经存在,那么zip仅仅只会更新而不是代替。这意味着原来的归档文件会保留下来,只是增加一些新文件,原有匹配文件则会被替换。
通过给unzip指定提取的文件名,我们也可以选择性地从zip归档文件中提取文件。

$  unzip -l ../playground.zip playground/dir-{009,010..99/
Archive:  ../playground.zip
  Length      Date    Time    Name
---------  ---------- -----   ----
        0  06-15-2020 10:56   playground/dir-{009,010..99/
---------                     -------
        0                     1 file

使用选项-l,unzip仅仅会列出归档文件的内容而不会从中提取文件。

$  unzip ../playground.zip playground/dir-{009,010..99/

Archive:  ../playground.zip
   creating: playground/dir-{009,010..99/

3.同步文件和目录

将一个或多个目录与本地系统(通常是某种可移动存储设备)或是远程系统上其它目录保持同步,是维护系统备份文件的常用方法。

3.1 rsync—远程文件、目录的同步

针对类Unix系统,完成这一同步任务最合适的工具当属rsync。该命令通过运行rsync远程更新协议,同步本地与远程系统上的目录。该协议允许rsync命令快速检测到本地和远程系统上两个目录之间的不同,从而以最少数量的复制动作以完成两个目录之间的同步。
rsync调用方式为

rsync options source destination

这里的source和destination是下列选项之一

  • 一个本地文件或目录
  • 一个远程文件或目录,形式为[user@]host:path;
  • 一个远程rsync服务器,由rsync://[user@]host[:port]/path指定

我们在本地实践rsync命令,首先清空foo目录

$ rm -rf foo/*

接着,同步playground目录和它在foo目录中相应的副本:

$ rsync -av playground foo

此命令中,我们运用了-a(用于归档—进行递归归档并保留文件属性)选项和-v(详细输出)选项,在foo目录中生成了playground目录的镜像备份。该命令行除了一系列文件输出之外,最后汇总输出为

sent 555 bytes  received 92 byte`在这里插入代码片`s  1,294.00 bytes/sec
total size is 0  speedup is 0.00

再次运行该命令,输出结果不同

$ sending incremental file list

sent 498 bytes  received 35 bytes  1,066.00 bytes/sec
total size is 0  speedup is 0.00

注意,此时不会列出文件列表,因为rsync目录检测出~/playground和~/foo/playground两个文件夹之间并无不同,因此不需要进行任何复制操作。
如果在playground/目录下更新一个目录,rsync会检测到该变化并且只复制这个刚刚更新的文件。

$ touch playground/dir-\{003\,0100/
$ rsync -av playground foo
sending incremental file list
playground/dir-{003,0100/

sent 511 bytes  received 38 bytes  1,098.00 bytes/sec
total size is 0  speedup is 0.00

3.2 在网络上使用rsync命令

通过网络复制文件是rsync另一个美妙之处。有两种方法:
一种是针对已经安装rsync命令以及诸如ssh等远程shell程序的系统。假定本地网络有另外一个具有足够可利用硬盘的系统,同时希望利用远程系统而非外部设备进行备份操作。假设远程系统已经有一个用于存放备份文件的/backup目录,我们便可以直接运行下面命令

$ sudo rsync -av --delet --rsh=ssh /etc /home /usr/local remote-sys:/backup

此处,一是增加了–rsh=ssh选项,该选项告诉rsync使用ssh命令作为其远程shell命令。第二,在destination路径名前指定了远程主机名,这里是remote-sys
另外一种方法是使用resync服务器同步网络文件,通过配置rsync运行一个守护进程监听进来的同步请求。这种方法通常用于远程系统的镜像系统。

$ mkdir fefora-devel
$ rsync -av -delete rsync://rsync.gtlib.gatech.edu/fedora-linux-core/developmengt/i386/os fedora-devel

以上例子使用rsync远程服务的URI是由协议(rsync://)、远程主机名和库的路径组成的

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Linux归档与备份——gzip、gunzip、bzip2、bunzip2、tar、zip、unzip、rsync 的相关文章

随机推荐

  • Windows命令行route命令使用图解

    一 操作实例 查看当前本机的路由表 xff1b 有三部分 xff0c 接口列表 xff0c IPv4路由表 xff0c IPv6路由表 xff1b 查看0 打头的路由表信息 xff1b 添加一条 添加默认网关地址为192 168 12 1的
  • Linux键盘使用技巧---光标移动、修改文本、复制粘贴、history查看历史命令

    首先是两个有意思的命令 clear 清屏 history 显示历史列表的记录 1 编辑命令行 bash使用一个名为Readline的库来实现命令行的编辑 1 1 光标移动 表1 光标移动命令 组合键作用Ctrl 43 A移动光标到行首Ctr
  • 制作Ubuntu启动盘——详细记录,亲测有效

    使用Win10操作系统 43 U盘 8GB以上 制作Ubuntu18 04的启动盘 Step1 下载 ubuntu 18 04 4 desktop amd64 isoRufus 3 10 Step2 插入U盘 xff0c 打开Rufus 3
  • Linux权限详情---id、chmod、umask、su、chown、chgrp、passwd

    Linux不仅是多重任务处理 multitasking 系统 xff0c 还是多用户 multiuser 系统 这是说 xff0c 虽然一台标准计算机可能只包含一个键盘和一台显示器 xff0c 但是它仍然可以同时被一个以上的用户使用 远程用
  • Linux进程详解(非常详细且入门)---ps、top、kill、fg

    常见的操作系统都支持多重任务处理 multitasking 系统通过快速切换运行中的程序来实现多任务的同时执行 Linux内核通过使用进程来管理多重任务 进程是Linux用来安排不同程序等待CPU调度的一种组织方式 1 进程如何工作 系统启
  • Linux环境详情与配置——export,alias,set,printenv

    在shell会话调用环境 environment 期间 shell会存储大量的信息 程序使用存储在环境中的数据来确定我们的配置 1 环境中存储的是什么 shell在环境中存储了两种基本类型的数据 环境变量 environment varia
  • Linux之vi介绍----完整入门及快捷键

    0 前言 自从我的学习linux笔记开始更新后 xff0c 阅读量挺高 xff0c 说明大家使用linux热情很高 在前边几篇博客中我未指明参考书籍 xff0c 这里做下说明 xff0c 将慢慢补充之前几篇的参考说明 我的博客源于对以下书本
  • Linux系统软件包管理——dpkg、apt-get、rpm、yum

    软件包管理是一种在系统上安装 维护软件的方法 主要有两种方式 xff0c 一种是通过安装Linux经销商发布的软件包来满足软件需求 xff1b 一种是先下载源代码 xff0c 然后对其进行编译 xff08 博主在使用jetson tx2时
  • Linux之网络相关命令——ping、tranceroute、netstat、ftp、lftp、wget、ssh、scp、sftp

    网络连接方面 xff0c Linux可以说是万能的 Linux工具可以建立各种网络系统及应用 xff0c 包括防火墙 路由器 域名服务器 NAS xff08 网络附加存储 xff09 盒等 这里主要讲一些经常用到的命令 xff0c 涉及网络
  • Linux文件搜索命令介绍——locate、find、xargs、touch、stat

    本文主要介绍两个用在Linux系统中搜索文件的工具 locate 通过文件名查找文件find 在文件系统目录框架中查找文件 同时 xff0c 我们也会介绍一个通常与文件搜索命令一起使用 处理搜索结果文件列表的命令 xargs 从标准输入中建
  • ubuntu使用bash脚本+gnome实现开机自启python程序和崩溃重启

    这里以tx2的ubuntu18 04为例 xff0c 对ubuntu系统是有效的 例如我们要实现开机自动启动 home me test main py程序 xff0c 并且当main py出现任何意料之外的错误报错时 xff0c 系统可以重
  • http请求转串口通信系统开发者文档

    http请求转串口通信系统介绍 系统价值和功能与口号 让所有单片机联网通信 1 系统使用c语言mqtt协议开发esp8266为硬件载体 xff0c 调用者只需要任意编程语言的串口通信即可 xff01 2 是一个好用的免费的稳定的单片机网络通
  • ubuntu实现屏幕的旋转和开启自动旋转屏幕

    1 旋转屏幕 有两种方法 xff0c 一种是命令行 xff0c 一种是图形界面 这里只介绍命令行 xff0c 因为其简单 xrandr o left 向左旋转90度 xff0c 用于横屏转竖屏 xrandr o right 向右旋转90度
  • MaskRCNN在Jetson tx2上的测速结果

    博主测试了在不同模式 精度下降MaskRCNN部署到Jetson TX2上的测速结果 xff0c 与大家分享讨论 对FasterRCNN的测速可见FasterRcnn在Jetson TX2上测速 使用的MaskRCNN框架 matterpo
  • FasterRcnn在Jetson TX2上测速

    博主测试了在不同模式 精度下将FasterRCNN部署到Jetson TX2上的测速结果 xff0c 与大家分享讨论 对于MaskRCNN的部署结果可参见 MaskRCNN在Jetson tx2上的测速结果 使用的Caffe版本Faster
  • Linux学习笔记导航页

    本博客中与博主Linux学习相关的博文导航 xff0c 方便查看 Linux系统ls命令详解Linux系统中目录的内容详解 bin dev etc home lib opt usr varLinux操作文件与目录 cp mv mkdir r
  • Jetson TX2使用经验导航页

    本博客中与Jetson TX2使用相关的博文导航 xff0c 方便查看 JetsonTX2 之刷机 Jetpack 4 3TX2 ubuntu 18 04 更换清华镜像源Jetson TX2刷机后查看CUDA和CUDNN版本 以JetPac
  • Pytorch学习导航页

    本博客中与pytorch学习相关的博文 xff0c 方便查看 Pytorch源码学习之一 xff1a torchvision models alexnetPytorch源码学习之二 xff1a torchvision models vggP
  • Python小技巧导航页

    本博客中与Python使用技巧相关的博文 xff0c 方便查看 使用matplotlib绘图库的pyplot快速绘图Python调用face 43 43 API完成本地图片的人脸检测Python爬虫 按照关键词爬取视觉中国高清图像pytho
  • Linux归档与备份——gzip、gunzip、bzip2、bunzip2、tar、zip、unzip、rsync

    维护系统数据安全是计算机系统管理者的基本任务之一 xff0c 及时创建系统文件的备份文件是维度系统数据安全的一种常用方法 本节主要介绍以下命令 文件压缩程序 gzip 压缩和解压缩文件工具bzip2 块排序文件压缩工具 文件归档程序 tar