tar分卷解压
日常工作中总会设计到超过1G以上文件的下载或者上传,由于单文件scp是有速度上限的,将其分卷压缩,然后再scp就简单快速多了。下面记录一下过程。
分卷压缩
举例:将10G大小的log文件2017.log打包压缩并分割成多个100m的文件
1 2 3 4 5 6 | # 分卷压缩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 |
标签:
命令篇
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 按钮权限的设计及实现