免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 5896 | 回复: 16
打印 上一主题 下一主题

[已解决] Tar.gz 压缩文件问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-10-14 09:32 |只看该作者 |倒序浏览
本帖最后由 kenny_wong 于 2011-10-14 19:46 编辑

Tar.gz 压缩文件问题

环境: Red Hat Enterprise 6  

需要同时解决, /bin/tar: Argument list too long 和 transfer.tar.gz 压缩档中居然包含了自己(transfer.tar.gz).两个问题.

现在有如下目录:

d:\transfer 目录下有100000个文件, 包括*.txt 和*.bak 两种类型的文件. 想压缩为 tar.gz 格式.

但是在压缩的时候, 会出现 -bash: /bin/tar: Argument list too long 的错误提示.

使用:
  1. $ find . -name  '*.*'  -print >/temp/tar.list
  2. $ tar -zcvf transfer.tar.gz --files-from /temp/tar.list
复制代码
但是压缩到最后, 文件异常的大, 检查发现.  transfer.tar.gz 压缩档中居然包含了自己(transfer.tar.gz). 请大家帮忙看看什么地方出问题了.


压缩完成最后一个文件后, 开始压缩自己.  见图, 图片经过处理.


解决方法:

避免产生临时文件.

Solved : /usr/bin/tar: Argument list too long
Solved: /usr/bin/tar: Argument list too long
On Linux if you are trying to tar large no. of files then shell shows above mentioned message. After researching through several forums I found a solution for it.

  1. find . -name '*.txt' -print0 | tar -cvzf foo.tar.gz --files-from -
复制代码

论坛徽章:
381
CU十二周年纪念徽章
日期:2014-01-04 22:46:58CU大牛徽章
日期:2013-03-13 15:32:35CU大牛徽章
日期:2013-03-13 15:38:15CU大牛徽章
日期:2013-03-13 15:38:52CU大牛徽章
日期:2013-03-14 14:08:55CU大牛徽章
日期:2013-04-17 11:17:19CU大牛徽章
日期:2013-04-17 11:17:32CU大牛徽章
日期:2013-04-17 11:17:37CU大牛徽章
日期:2013-04-17 11:17:42CU大牛徽章
日期:2013-04-17 11:17:47CU大牛徽章
日期:2013-04-17 11:17:52CU大牛徽章
日期:2013-04-17 11:17:56
2 [报告]
发表于 2011-10-14 09:49 |只看该作者
楼主原来的目录下有那个gz文件没有?
既然第一步是find所有文件,那个list文件就没有存在的不要,直接tar压缩就行了

论坛徽章:
0
3 [报告]
发表于 2011-10-14 09:56 |只看该作者
回复 2# chenyx

目录下只有 .txt & .bak 两种类型的文件. 直接Tar 会报错, bash: /bin/tar: Argument list too long

论坛徽章:
381
CU十二周年纪念徽章
日期:2014-01-04 22:46:58CU大牛徽章
日期:2013-03-13 15:32:35CU大牛徽章
日期:2013-03-13 15:38:15CU大牛徽章
日期:2013-03-13 15:38:52CU大牛徽章
日期:2013-03-14 14:08:55CU大牛徽章
日期:2013-04-17 11:17:19CU大牛徽章
日期:2013-04-17 11:17:32CU大牛徽章
日期:2013-04-17 11:17:37CU大牛徽章
日期:2013-04-17 11:17:42CU大牛徽章
日期:2013-04-17 11:17:47CU大牛徽章
日期:2013-04-17 11:17:52CU大牛徽章
日期:2013-04-17 11:17:56
4 [报告]
发表于 2011-10-14 10:02 |只看该作者
在你的那个目录下执行tar -zcvf transfer.tar.gz *,会出错?

论坛徽章:
0
5 [报告]
发表于 2011-10-14 10:05 |只看该作者
回复 4# chenyx


对, 因为文件夹下有10万个文件需要压缩, 报错: bash: /bin/tar: Argument list too long.

我怀疑是压缩时, tar 压缩了自己产生的临时文件.

论坛徽章:
381
CU十二周年纪念徽章
日期:2014-01-04 22:46:58CU大牛徽章
日期:2013-03-13 15:32:35CU大牛徽章
日期:2013-03-13 15:38:15CU大牛徽章
日期:2013-03-13 15:38:52CU大牛徽章
日期:2013-03-14 14:08:55CU大牛徽章
日期:2013-04-17 11:17:19CU大牛徽章
日期:2013-04-17 11:17:32CU大牛徽章
日期:2013-04-17 11:17:37CU大牛徽章
日期:2013-04-17 11:17:42CU大牛徽章
日期:2013-04-17 11:17:47CU大牛徽章
日期:2013-04-17 11:17:52CU大牛徽章
日期:2013-04-17 11:17:56
6 [报告]
发表于 2011-10-14 10:20 |只看该作者
那样的话,你在别的目录执行 tar -zcvf transfer.tar.gz /transfer/*

论坛徽章:
0
7 [报告]
发表于 2011-10-14 10:28 |只看该作者
回复 6# chenyx

但是这样解压文件后, 会包含当前的目录, 要求必须解压后将文件直接释放到当前目录, 不能包含路径.

论坛徽章:
381
CU十二周年纪念徽章
日期:2014-01-04 22:46:58CU大牛徽章
日期:2013-03-13 15:32:35CU大牛徽章
日期:2013-03-13 15:38:15CU大牛徽章
日期:2013-03-13 15:38:52CU大牛徽章
日期:2013-03-14 14:08:55CU大牛徽章
日期:2013-04-17 11:17:19CU大牛徽章
日期:2013-04-17 11:17:32CU大牛徽章
日期:2013-04-17 11:17:37CU大牛徽章
日期:2013-04-17 11:17:42CU大牛徽章
日期:2013-04-17 11:17:47CU大牛徽章
日期:2013-04-17 11:17:52CU大牛徽章
日期:2013-04-17 11:17:56
8 [报告]
发表于 2011-10-14 10:37 |只看该作者
回复 7# kenny_wong


    http://www.chinaunix.net/jh/4/541176.html
那你试试这个帖子里的

论坛徽章:
0
9 [报告]
发表于 2011-10-14 13:00 |只看该作者
$ find . -name  '*.*'  -print >/temp/tar.list
$ tar -zcvf transfer.tar.gz --files-from /temp/tar.list


改成这个试试

$ find . -name  '*.*'  -print |egrep "[\.bak$|\.txt$]">/temp/tar.list
$ tar -zcvf transfer.tar.gz --files-from /temp/tar.list




$ tar -zcvf transfer.tar.gz `ls *.bak *.txt`

论坛徽章:
0
10 [报告]
发表于 2011-10-14 13:36 |只看该作者
回复 9# wood016
  1. $ find . -name  '*.*'  -print |egrep "[\.bak$|\.txt$]">/temp/tar.list
  2. $ tar -zcvf transfer.tar.gz --files-from /temp/tar.list
复制代码
运行后结果一样, transfer.tar.gz 中也包含了 一个 transfer.tar.gz.
  1. $ tar -zcvf transfer.tar.gz `ls *.bak *.txt`
复制代码
报错:

tar: ls *.bak *.txt: cannot stat:No such file or directory
tar: Exiting with failure status due to previous errors

经过检查, 在正确的目录中, txt & bak 文件都存在.
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP