shell脚本(6)B计划
2019-05-30 本文已影响0人
盖小聂
1、用tar归档
tar可以将多个文件和文件夹保存为单个文件,同时还能保留所有的文件属性,如所有者、权限等。所有的Unix操作系统都默认会包含tar命令
tar -cf output.tar [SOURCES] //-c(create)代表创建文件
eg: tar -cf output.tar file1 file2 file3 folder1 ……
参数 | 描述 |
---|---|
-t | 列出归档文件中所包含的文件 |
-v/-vv | 冗长模式(verbose),对大多数命令而言,该模式会在终端输出更多的细节 |
-f | 文件名必须紧跟在-f之后,而且-f应该是选项中的最后一个。-f(specify filename)指定文件 |
-r | 向归档文件中添加文件 |
-x | 从归档文件中提取文件或者文件夹 |
-C | 指定提取到的目录 |
-A | 拼接两个归档文件 |
-u | 通过时间戳来更新文档中的内容 |
-delete | 从归档文件中删除文件 |
-a/--auto-compress | tar会根据扩展名自动进行压缩处理(mac终端没有-a参数) |
--exclude/-X | 从归档中排除部分文件 |
-totals | 打印归档的总字节数 |
//-t列出归档文件中所包含的文件
tar -tf archive.tar
file1
file2
//-v/-vv冗长模式(verbose),对大多数命令而言,该模式会在终端输出更多的细节
//文件名必须紧跟在-f之后,而且-f应该是选项中的最后一个。-f(specify filename)指定文件
tar -tvf archive.tar
//向归档文件中添加文件
tar -rf original.tar new_file
//从归档文件中提取文件或者文件夹
//x(exact)提取,-C指定提取到的目录
tar -xf archive.tar -C my_directory
//拼接两个归档文件
//mac终端没有A这个参数
tar -Af file1.tar file2.tar
//通过时间戳来更新文档中的内容
//在归档中如果同名文件已经存在,那么会添加两个同名文件,
//我们可以使用-u参数指明:只有比归档文件中的文件更新时才被添加
tar -uf archive.tar filea
//从归档文件中删除文件
tar -f archive.tar --delete file1 file2 ……
tar --delete --file archive.tar [FILE LIST]
//压缩tar归档文件
//tar命令只能用来对文件进行归档,不具备压缩功能。
//出于这个原因,多数用户在归档文件的时候会对归档文件采用某种形式的压缩,
//这样就能够显著减少文件的体积。
//使用-a或者--auto-compress参数tar会根据扩展名自动进行压缩处理(mac终端没有-a参数)。
tar -acvf archive.tar.gz filea fileb filec
//从归档中排除部分文件
//排除所有的txt文件,样式应该使用双引号括起来,避免使用shell对其进行扩展
tar -cf archive.tar * --exclude “*txt”
//可以将需要排除的文件列表放入list文件中结合-X参数实现归档排除文件
tar -cf archive.tar * -X list
//打印归档的总字节数
tar -cf archive.tar * --exclude “\*txt” --totoals
2、使用gzip压缩数据
gzip只能压缩单个文件或数据流,而无法对目录和多个文件进行归档。因此我们需要先创建tar归档文件,然后再用gzip进行压缩。
//压缩文件
gzip filename
//解压缩文件
gunzip filename.gz
参数 | 描述 |
---|---|
-l | 列出压缩文件的属性信息 |
--fast/--best | 指定压缩级别 |
//列出压缩文件的属性信息
gzip -l text.txt.gz
//指定压缩级别
gzip --fast filename
gzip --best filename
//压缩归档文件
gzip archive.tar
//无需解压,直接读取gzip格式文件
zcat test.gz
//压缩率
//一共有9档压缩率,1级的压缩率最低,但是压缩速度最快;9级的压缩率最高,但是压缩速度最慢
gzip -5 test.img
gzip,bzip2以及lzma三者的比较
类型 | 压缩比 | 压缩 | 解压 |
---|---|---|---|
gzip | 最小 | gzip filename | gunzip filename |
bzip2 | 比gzip有更高的压缩比 | bzip2 filename | bunzip2 filename |
lzma | 比gzip,bzip2更高的压缩比,但是压缩速度要慢一些 | lzma filename | unlzma filename |
3、使用zip归档和压缩
在Linux系统下,他的应用不如gzip和bzip2那么使用广泛,但是Internet上的文件通常采用这种格式,mac系统中压缩文件就是采用这种格式。尽管同大多数我们已经用过的归档、压缩工具类似,但zip在完成归档之后并不会删除源文件,这一点与luma, gzip, bzip2不同。最重要的是,尽管与tar相像,zip既可以进行归档,也可以进行压缩,而单凭tar,则无法进行压缩操作。
//对归档文件采用zip进行压缩
zip archive_name.zip [SOURCE FILES/DIRS]
zip file.zip file
//对目录和文件进行递归操作
zip -r archive.zip folder1 folder2
//从zip文件中提取内容
unzip file.zip
参数 | 描述 |
---|---|
-u | 更新压缩文件中更新内容 |
-d | 从压缩文件中删除内容 |
-l | 列出压缩文件的内容 |
//更新压缩文件中更新内容
zip file.zip -u newfile
//从压缩文件中删除内容
zip -d file.zip file.txt
//列出压缩文件的内容
unzip -l archive.zip
4、更快速的归档工具pbzip2
pbzip2可以利用多线程来进行归档,所以速度会更快一些
5、使用rsync备份系统快照
之前用过cp命令同步本地计算机和远程计算机的文件
rsync命令也可以做这个事情
rsync命令用SSH连接远程主机,因此必须使用user@host这种形式设定远程主机的地址,其中user代表用户名,host代表远程主机的IP地址或主机名。而PATH指定需要从中复制数据的远程主机上的路径。
将一个目录中的内容同步到另一个目录
//将test目录中内容复制(不包括test目录)到backups目录中
rsync -av /home/test/ /home/backups
//将test目录中内容(包括test目录)复制到backups目录中
rsync -av /home/test /home/backups
//将test目录中内容(不包括test目录)复制到backups目录中
rsync -av /home/test/ /home/backups/
//将test目录中内容(包括test目录)复制到backups目录中
rsync -av /home/test /home/backups/
目录有/结尾,只复制目录内容;没有/结尾,复制内容包括目录本身
扩展
cronttab:开启定时任务