美文网首页
shell脚本(6)B计划

shell脚本(6)B计划

作者: 盖小聂 | 来源:发表于2019-05-30 23:22 被阅读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:开启定时任务

    相关文章

      网友评论

          本文标题:shell脚本(6)B计划

          本文链接:https://www.haomeiwen.com/subject/emrvaqtx.html