Linux下将两个10G的文件打包成一个文件需要多久 | 公云网博客

Linux下将两个10G的文件打包成一个文件需要多久

发表于 2012 年 9 月 19 日 由 refactor

微博上kevin_prajna提了一个问题:“求Linux下一打包工具,需求:能把两个10G的文件打包成一个文件,时间在1分钟之内能接受!”。

暂且作答一下吧。首先问题是求解工具,那么我们忽略IO问题,采用内存盘来解决, 在公司一台128G内存的机器上:

mkdir /mnt/test
mount -t ramfs none /mnt/test
cd /mnt/test

生成一个小脚本,生成两个10G的文件:

#!/bin/bash
for (( i = 0; i < 2; i++)); do
echo $idd if=/dev/zero of=file$i.bin bs=1M count=10000
done;

生成测试文件:

time ./test.sh <<<
0
10000+0 records in
10000+0 records out
10485760000 bytes (10 GB) copied, 4.78903 s, 2.2 GB/s
1
10000+0 records in
10000+0 records out
10485760000 bytes (10 GB) copied, 4.92947 s, 2.1 GB/s
./test.sh 0.00s user 9.68s system 99% cpu 9.731 total

测试结果,生成两个10G文件,消耗了9.731秒

采用tar打包工具测试:

time tar cvf out.bin file* <<<
file0.bin
file1.bin
tar cvf out.bin file* 0.40s user 13.90s system 99% cpu 14.353 total

采用 tar打包这两个文件,并且写入 out.bin文件,消耗了 14.353秒, 完全满足kevin_prajna的要求。

然后我们用cpio来测试,由于cpio对10G这样的文件打包有bug,会报错,所以我们用20个1G文件测试:

#!/bin/bash
for (( i = 0; i < 20; i++)); do
echo $idd if=/dev/zero of=file$i.bin bs=1M count=1000
done;

生成20个1G测试文件,用了 9.806秒

使用tar对这20个1G文件打包,用了13.800 秒

cpio的测试结果:

# time ls file*|cpio -o > out.bin                                                                                                                                           <<<
40960002 blocks
ls --color=tty file*  0.00s user 0.00s system 0% cpu 0.002 total
cpio -o > out.bin  6.31s user 37.61s system 99% cpu 44.029 total

cpio打包这20个1G文件消耗了44.029秒,速度相对tar,还是慢了好多。

测试环境:

Dell R710, 2*Xeon E5620, 128G RAM
OS: Ubuntu 12.04 x86_64

从上面也可以看出,现在CPU和工具是很强悍的,弱爆的是磁盘IO,这是要大把花银子的。

Linux下将两个10G的文件打包成一个文件需要多久相关推荐

  1. linux将多个文件打包成一个文件,将多个文件打包成一个shell

    1.脚本目的 实现自动化环境部署,且将软件包和部署脚本合并成一个文件,避免脚本和文件分开. 2.实验环境 (1) Linux环境 centos 7.4 (2)软件包 [root@centos-70 0 ...

  2. linux 压缩7z文件夹,Linux 下压缩与解压.zip和.rar及.7z文件

    Linux 下压缩与解压.zip和.rar及.7z文件对于Window下的常见压缩文件.zip和.rar,Linux也有相应的方法来解压它们: 1)对于.zip linux下提供了zip和unzip程 ...

  3. 在linux下一般用scp这个命令来通过ssh传输文件

    在linux下一般用scp这个命令来通过ssh传输文件. 1.从服务器上下载文件 scp username@servername:/path/filename /var/www/local_dir(本 ...

  4. py文件打包或apk_Python文件打包成exe很简单,如果安卓手机也能运行的软件你会吗...

    前言 我相信很多小伙伴都知道怎么将Python的文件打包成exe,而且这个也非常的简单,一行代码就能轻松搞定:pyinstaller -F xxx.py 但是如果我们用Python开发一个小游戏或者一 ...

  5. Python项目打包后找不到路径问题,将资源文件数据文件打包到exe文件中

    目录 问题描述 Python项目打包后,找不到配置文件路径 1.冻结路径 2.使用方法 将资源文件打包到exe文件中 1.打包前准备 2.返回临时路径 3.使用方法 4.编译打包 问题描述 pyins ...

  6. 将ocx和DLL文件打包成cab文件,inf的编写

    From: http://icrwen.iteye.com/blog/1118766 http://blog.csdn.net/yimiyangguang1314/article/details/65 ...

  7. svn增量打包部署_利用svn的补丁文件打包生成增量文件

    下面的代码是maven版本 1. 创建patch.txt增量文件 保存到 文件目录下 比如 E:\aa\patch.txt 2. 编写java代码 package utils; import java ...

  8. 压缩base 64字符串_ftp下载多个文件,ftp下载多个文件打包成一个压缩包

    在一些日常的网络批量维护工作中,经常需要使用ftp计划任务,定时上传或下载多个文件.对不太了解ftp命令和windows计划任务的新手来说,确实是一个很棘手的问题.今天我们来看看如何简单的实现这功能. ...

  9. FTP下载多个文件打包成一个压缩包

    @RequestMapping("downloadsByplFromFTP")     @ResponseBody     public  void downloadsByplFr ...

最新文章

  1. 3.请执行命令取出linux中eth0的IP地址(考试题答案系列)
  2. 【❗JS奇技淫巧❗】JavaScript:截取DataURL中的base64字符串
  3. (译)在Objective-c里面使用property教程
  4. 欢乐纪中A组赛【2019.8.20】
  5. World Token钱包官网骗局模式,是传销吗?
  6. ATL 线程池的使用
  7. html5 canvas 不兼容safari浏览器_HTML5简介
  8. linux rkt命令,rkt 1.13.0发布,CoreOS的容器引擎
  9. A. 面向对象思想介绍
  10. 事务是什么?事务的4个特点(ACID),事务的开启与结束
  11. paip.c#.net未能找到任何资源
  12. MySQL8.0.22解压安装教程
  13. GNS3 中使用 Docker 容器
  14. 一文看懂行业分类--基于wind行业分类标准
  15. 安卓手机投屏软件_适合智能电视手机投屏的软件
  16. linux查看硬盘读取速度慢,Linux检测硬盘读取速度
  17. 如何分析数据建立数据表
  18. EXCEL 字符替换为换行符
  19. 标签无效 /zabbix_export/date: YYYY-MM-DDThh:mm:ssZ 预计。
  20. 雨敲窗python_标签 Python - 雨敲窗个人博客

热门文章

  1. C语言-- 大端小端详解
  2. 算法(10)-leetcode-explore-learn-数据结构-链表双指针技巧
  3. Android设计模式之——命令模式
  4. 从夫妻吵架中看项目管理
  5. [个人网站搭建]·Django增加评论功能(Python3)
  6. [边分治+线段树合并]「CTSC2018」暴力写挂
  7. python实现简易工资管理系统(Salary Manage)源码
  8. python安装各种插件
  9. BZOJ-1036 [ZJOI2008]树的统计
  10. VBScript学习笔记 - 数组