上一节总结了网络方面相关知识,这一节总结文件的归档、压缩与解压,以及压缩方式的不同
一、文件的归档
文件的归档就是把许多不同的文件变成一个归档文件(.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最小的普通用户