免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: angusfz
打印 上一主题 下一主题

tar 档案列表的疑问 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2009-03-10 17:06 |只看该作者

回复 #9 waker 的帖子

-u, --update            only append files newer than copy in archive
为什么用u呢,没明白。

论坛徽章:
0
12 [报告]
发表于 2009-03-10 17:07 |只看该作者
tar cvfF list.tar list
这样是不行的,我也还没试出来F选项的用法
  1. [root@Mylinux tmp]# cat list
  2. o
  3. o1
  4. oo
  5. [root@Mylinux tmp]# ls o*
  6. o  o1  oo  ooo
  7. [root@Mylinux tmp]# tar cvfF list.tar list
  8. tar: 谨慎地拒绝创建空归档文件
  9. Try `tar --help' or `tar --usage' for more information.
复制代码

论坛徽章:
0
13 [报告]
发表于 2009-03-10 17:19 |只看该作者
原帖由 ywlscpl 于 2009-3-10 17:07 发表
tar cvfF list.tar list
这样是不行的,我也还没试出来F选项的用法
[root@Mylinux tmp]# cat list
o
o1
oo
[root@Mylinux tmp]# ls o*
o  o1  oo  ooo
[root@Mylinux tmp]# tar cvfF list.tar list
ta ...


[root@zhang shell]# tar cvfF aa.tar d
tar: Cowardly refusing to create an empty archive
Try `tar --help' for more information.

我这里也报错了!

论坛徽章:
0
14 [报告]
发表于 2009-03-10 17:23 |只看该作者
原帖由 oldoger 于 2009-3-10 17:06 发表
-u, --update            only append files newer than copy in archive
为什么用u呢,没明白。


刚刚测试一下 tar uvf是可用的
如果原本tar档中
已包含来源档案->比对日期,如果是来源档较新-> update
无包含来源档案->加入tar档中

论坛徽章:
0
15 [报告]
发表于 2009-03-10 19:52 |只看该作者
原帖由 oldoger 于 2009-3-10 16:15 发表
我看明白了,如果最后面是一个文件夹的,打包的就是最后一个文件夹里的东东。



有同感,很有可能是这个问题!

论坛徽章:
0
16 [报告]
发表于 2009-03-10 21:40 |只看该作者
原帖由 ywlscpl 于 2009-3-10 17:07 发表
tar cvfF list.tar list
这样是不行的,我也还没试出来F选项的用法
[root@Mylinux tmp]# cat list
o
o1
oo
[root@Mylinux tmp]# ls o*
o  o1  oo  ooo
[root@Mylinux tmp]# tar cvfF list.tar list
ta ...


估计是系统原因,我用的是sco openserver!真是太阳打西边出来了,竟然也有sco行linux不行的时候!

论坛徽章:
0
17 [报告]
发表于 2009-03-10 21:52 |只看该作者

回复 #9 waker 的帖子

我试了一下好像不行,打完包,再解完后看了一下,好像不能打包文件里面的文件列表文件,只是把文件里面的列表当文件内容给打包了

论坛徽章:
0
18 [报告]
发表于 2009-03-11 00:01 |只看该作者
小小总结一下:

1、关于-F参数的用法,SCO和LINUX是有区别的;
sco系统的解释:
  1. F       Causes tar to use the next argument as the name of a file from which
  2.           succeeding arguments are taken.
复制代码

LINUX的用法不太清楚,好像是自动执行的脚本,我这里没有环境,无法测试。

2、关于xargs传递参数的问题:
  1. cat /tmp/test.list |xargs tar cvf /tmp/upload.tar
复制代码


在文件较少的情况下没有问题,但是如果文件很多,xargs将自动根据需要分批执行(保证不会出现参数溢出的情况),即lz提到的
“只有列表后半部约591个文件”,其实只是最后一批执行的结果覆盖了前面生成的文件而已,而且只要文件存在就不会报错,所以
正确的用法是用u代替c,表示用追加而不是覆盖的方式生成tar包。
  1. c       Creates a new archive; writing begins at the beginning of the
  2.           archive, instead of after the last file.

  3. u       The named files are added to the archive if they are not already
  4.           there, or if they have been modified since last written on that
  5.           archive. This function letter cannot be used with tape devices.
复制代码

[ 本帖最后由 ruifox 于 2009-3-11 08:02 编辑 ]

论坛徽章:
0
19 [报告]
发表于 2009-03-11 09:47 |只看该作者

回复 #18 ruifox 的帖子

这位兄台解释的很详细,明白了。

论坛徽章:
0
20 [报告]
发表于 2011-05-26 14:11 |只看该作者
回复 1# angusfz


    tar -czv -T filelist -f /backup.tar.gz
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP