shell脚本(6)B计划

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:开启定时任务

你可能感兴趣的:(shell脚本(6)B计划)