- A+
所属分类:Linux
日常工作中总会设计到超过1G以上文件的下载或者上传,由于单文件scp是有速度上限的,将其分卷压缩,然后再scp就简单快速多了。下面记录一下过程。
分卷压缩
举例:将10G大小的log文件2017.log打包压缩并分割成多个100m的文件
1 2 3 4 |
# 分卷压缩gz # tar zcf - 2017.log |split -d -b 100m - logs.tar.gz. # 生成文件: logs.tar.gz.00 logs.tar.gz.01 # 分卷压缩bz2 # tar jcf - 2017.log |split -d -b 100m - logs.tar.bz2. # 生成文件: logs.tar.bz2.00 logs.tar.bz2.01 |
最后要提醒但是那两个”-”不要漏了,那是tar的ouput和split的input的参数
合并分卷解压缩
1 2 3 4 |
# 解压gz分卷 # cat logs.tar.gz* | tar zx # 解压bz2分卷 # cat logs.tar.gz* | tar jx |
tar 命令简述
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
参数: -j : 通过bzip2进行压缩\解压文件*.tar.bz2 -z : 通过gzip进行压缩\解压文件*.tar.gz -c : 新建打包文件,可搭配-v来查看过程中被打包的文件名 -t : 查看打包文件的内容有哪些文件名 -x : 解压打包文件. -v : 在压缩/解压过程中,显示正在处理的文件名 -f : -f后面接被处理的文件名 -C(大写) : 后接目录 -p : 保留备份数据的原本权限与属性 -P : 保留绝对路径,即允许备份数据中含有根目录存在的目录(危险) 常用:欲压缩或打包的文件或目录(/*) bzip2压缩命令:tar -jcv -f boot.tar.bz2 /boot gzip压缩命令 :tar -zcv -f boot.tar.gz /boot bzip2查看命令:tar -jtv -f /dir/*.tar.bz2 gzip 查看命令:tar -ztv -f /dir/*.tar.gz bzip2解压缩命令:tar -jxv -f /dir/*.tar.bz2 -C 欲解压缩的目录 gzip解压缩命令 :tar -zxv -f /dir/*.tar.gz 欲解压缩的目录 特殊: 备份重要的系统数据,包括其完整的权限(-p参数): tar -jcvp -f /root/etc.tar.bz2 /etc 只解压压缩文件内的其中一个文件: tar -jxv -f /root/etc.tar.bz2 etc/shadow 打包目录,但不含该目录下的某些文件(--exclude): tar -jcv -f /root/system.tar.bz2 --exclude=root/etc* --exclude=root/system.tar.bz2 /etc /root 仅备份比某个时刻还要新的文件: 备份 :tar -jcv -f /root/etc.newer.2011.02.16.tar.bz2 –newer-mtime='2011-02-16' /etc/* 查看备份:tar -jtv -f etc.newer.2011.02.16.tar.bz2 注意:在备份文件的时候也备份它的父目录 |
split 命令简述
功能说明:切割文件。
语法:split [--help][--version][-<行数>][-b <字节>][-C <字节>][-l <行数>][要切割的文件][输出文件名]
补充说明:split可将文件切成较小的文件,预设每1000行会切成一个小文件。
参数:
-<行数>或-l<行数> 指定每多少行就要切成一个小文件。
-b<字节> 指定每多少字就要切成一个小文件。支持单位:m,k
-C<字节> 与-b参数类似,但切割时尽量维持每行的完整性。
–help 显示帮助。
–version 显示版本信息。
[输出文件名] 设置切割后文件的前置文件名,split会自动在前置文件名后再加上编号。
例子:
1.按100KB的测试文件拆分
1 2 3 |
# split -b 10k date.file # ls date.file xaa xab xac xad xae xaf xag xah xai xaj |
件被分割成多个带有字母的后缀文件,如果想用数字后缀可使用-d参数,同时可以使用-a length来指定后缀的长度:
1 2 3 |
# split -b 10k date.file -d -a 3 # ls date.file x000 x001 x002 x003 x004 x005 x006 x007 x008 x009 |
为分割后的文件指定文件名的前缀:
1 2 3 |
# split -b 10k date.file -d -a 3 split_file # ls date.file split_file000 split_file001 split_file002 split_file003 split_file004 split_file005 split_file006 split_file007 split_file008 split_file009 |
2.按行数拆分
1 |
# split -l 10 date.file |