Linux 基础操作(十一) ————文件的归档、压缩与解压及rsync

上一节总结了网络方面相关知识,这一节总结文件的归档、压缩与解压,以及压缩方式的不同

一、文件的归档

文件的归档就是把许多不同的文件变成一个归档文件(.tar文件),它不会压缩文件大小,只是为了节省多文件传输所需要的时间,因为现在只需要传一个归档文件

tar 命令,以下是参数,可以组合使用
    c       ##创建
    f       ##指定归档文件名称
    t       ##显示归档文件中的内容
    r       ##向归档文件中添加文件
    --get       ##取出单个文件
    --delete    ##删除单个文件
    x       ##取出归档文件中的所有内容
    -C      ##指定解档目录
    -z      ##gz格式压缩
    -j      ##bz2格式压缩
    -J      ##xz格式压缩

下面我写了一个比较笨拙的脚本,因为第一是不知道用什么命令终止echo输入的代码,导致同样的代码写了三行,第二就是不知道用什么命令释放设备1,操作结束后它还是会占用设备1 的内存。脚本如下

#!/bin/bash
touch file{1..5}
echo Done_touch file ...
tar cf Allfile.tar file[1-5]
echo Done_Create a tar ...
tar tf Allfile.tar > /dev/pts/1
touch file6 /root/Desktop
echo Done_touch file6 ...
tar rf Allfile.tar file6
echo Done_Add file6 to Allfile.tar ...
rm -f /root/Desktop/file6
echo Done_rm ...
tar -f /root/Desktop/Allfile.tar --get file6 
echo Done_get file6 ...
echo @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ > /dev/pts/1 ##第一个问题就是这里的
echo This is New Allfile.tar > /dev/pts/1
echo @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ > /dev/pts/1
tar tf Allfile.tar > /dev/pts/1  ##第二个问题也应该是在这里解决
rm -rf file*
echo Done_rm file* ...
tar -xf Allfile.tar -C .         ##将Allfile的内容指定在当前目录释放
echo Done_xftar ...

这里写图片描述

二、压缩

1、gz压缩

gzip etc.tar        ##压缩成gz格式
gunzip  etc.tar.gz  ##解压gz格式压缩包
tar zcf etc.tar.gz /etc ##把文件归档为tar并压缩成gz
tar zxf etc.tar.gz  ##解压并解档gz格式压缩包
du -sh          ##查看当前文件大小

同样还是写成脚本

#!/bin/bash
echo Create boot.tar
tar cf boot.tar /boot/          ##归档/boot/中的文件到boot/tar
echo File size of  boot.tar 
du -sh boot.tar                 ##显示归档后的大小
echo Create boot.tar.gzip
gzip boot.tar                   ##以gz压缩的方式压缩boot.tar
echo File size of boot.tar.gz
du -sh boot.tar.gz              ##查看压缩后的boot.tar.gz的文件大小
echo Get boot.tar
gunzip boot.tar.gz              ##解压boot.tar.gz
echo Create boot2 
tar zcf boot2 /boot/            ##直接通过tar命令用gz的方式压缩/boot/下的文件到boo                                  t2中,z 参数代表gz的压缩方式
echo File size of boot2
du -sh boot2                    ##显示boot2的文件大小
echo Get boot2
tar zxf boot2                   ##直接通过tar命令用gz的方式解压boot2(gz的压缩包                                    )下的文件到当前目录中,z 参数代表gz的压缩方式
echo File size of boot2
du -sh boot2                    ##显示解压后boot2的文件大小

这里写图片描述

2、bzip2压缩

bz2
bzip2 etc.tar       ##压缩成bz2格式
bunzip2 etc.tar.bz2 ##解压bz2格式压缩包
tar jcf etc.tar.bz2 /etc    ##把文件归档为tar并压缩成bz2
tar jxf etc.tar.bz2 ##解压并解档bz2格式压缩包

这里和上面相似,就是 小 ‘ j ‘参数是代表bz2的压缩方式

3、xz压缩

xz
xz etc.tar      ##压缩成xz格式
unxz  etc.tar.xz    ##解压xz格式压缩包
tar Jcf etc.tar.xz /etc ##把文件归档为tar并压缩成zx
tar Jxf etc.tar.xz  ##解压并解档xz格式压缩包

而大‘ J ‘参数是代表xz的压缩方式

4、zip压缩

zip -r etc.tar.zip etc.tar  ##压缩成zip格式
unzip etc.tar.zip       ##解压zip格式压缩包

这里就举一个我刚从百度云下东西例子,下下来的格式都是.zip的,那我就可以通过上面的命令来解压和压缩
这里写图片描述
压缩就着这样,将当前位置的iPhone下的文件压缩到example.zip下
这里写图片描述

三、rsync

scp file    username@ip:/dir    ##上传
scp    username@ip:/dir/file  /dir  ##下载
之前学的scp传输会修改文件属性,而rsync通过参数可以选择性修改或不修改
rsync [参数]  file    username@ip:/dir
rsync   -r  ##同步目录
    -l  ##不忽略链接
    -p  ##不忽略文件权限
    -t  ##不忽文件时间戳
    -g  ##不忽文件所有组
    -o  ##不忽文件所有人
    -D  ##不忽略设备文件

这里写图片描述
可以看到我修改了原test目录的属性,包括权限,文件所有人所有组、时间戳,但是当我传输给另一台主机时,他们的属性发生了变化,权限变成了这个主机的权限,所有人和所有组都随传输时所选的用户,而时间戳也被重置了,下面我们加上参数
这里写图片描述
可以看到唯一改变的属性时所有人和所有组,因为在本机中我没有student这个用户,所有它自动将所有人和所有组转成了uid最小的普通用户

四、压缩方式的不同带来不同的效果

具体可查看 http://blog.csdn.net/vevoly/article/details/77725750

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值