Articles of tar

“tar – 目录”不起作用

我想创build一个文件tarball,但不包括目录名称。 我知道有另一种方式来做到这一点,但我想知道为什么这种方式不起作用。 如果我运行以下命令来创build包含特定文件的压缩包,那么它将起作用: tar -vcf file.tar -C <PATH TO DIR> file1 但是,如果我在通配符上运行它以包含多个文件,那么它将失败: tar -vcf file.tar -C <PATH TO DIR> * 我得到一个错误说,对于当前目录中的每个文件(而不是-C中指定的目录), tar: <FILE>: Cannot stat: No such file or directory 任何想法为什么在通配符上运行上述命令与文件名的行为有所不同?

修改嵌套在tar档案中的文件

我正在尝试做一个grep ,然后sed来search文件内的特定string,这些string在多个tar文件中,都在一个主tar文件中。 现在,我通过修改文件 首先提取主要的tar档案。 然后提取里面的所有焦油。 然后做一个recursion的grep ,然后sed来replace文件中的特定string。 最后再把所有的东西封装到tar档案中,并把所有档案放在主档案里面。 很乏味。 我如何使用shell脚本自动执行此操作?

当我们阅读时,由于文件改变,“tar”失败,无法继续

我正在运行一个正在运行tar命令压缩目录的ansible-playbook 。 以下是一个ansible任务。 – name: tar the old code command: tar -czf {{ansible_date_time.date}}.tar.gz /home/ubuntu/my-folder 以上给出了以下错误。 “警告”:使用unarchive模块,而不是运行tar stderr:tar:删除成员名称中的前导'/'tar:/home/ubuntu/my-folder/xyz.log:文件在我们读取时发生变化 我也尝试了选项–ignore-failed-read但没有压缩目录,但成功运行了其余的任务。 – name: tar the old code command: tar -czf {{ansible_date_time.date}}.tar.gz /home/ubuntu/my-folder –ignore-failed-read 由于此任务位于其他任务之间,所以在此之后必须执行的任务失败。 ansible不给模块tar代码。 只有unarchive模块是有解压目录。

如何在Linux / Unix下创build一个大于2GB的文件?

我有这样的家庭工作,我必须从一个源传输一个非常大的文件到多个机器使用bittorrent类别的algorithm。 最初我将文件分割成大块,然后把块传送到所有的目标。 目标有智能分享他们与其他目标的块。 它工作正常。 我想传输一个4GB的文件,所以我tarred四个1GB的文件。 当我创build4GB的tar文件时没有错误,但是在将所有的块组装回原始文件的时候,在错误输出文件大小限制超出的情况下, 我怎样才能解决这个2GB的限制问题?

recursion地列出tar / zip档案的内容

我知道如何获得zip / tar文件的内容,例如: http : //www.if-not-true-then-false.com/2010/list-tar-tar-gz-tar-bz2-contents/ 但在我的情况:我想获得一个zip档案的所有内容。 ABCD.zip –>somefile.txt –>somezip.zip –>someother.tar 目标:我想要得到ABCD.zip的内容,以便我还能得到somezip.zip和someother.tar的更多内容,someother.tar也可能有其他一些拉链等。我怎样才能做到这一点与recursion? 可能用bash / perl脚本?

将pipe道焦油提取成焦油创build

我现在有一个tar.gz,我想从中提取一个或两个文件,并将它们打包/添加到一个新的tar.gz中。 当然,我可以保存到一个临时文件并使用它,但是ABSOLUTE的要求是不需要任何中间文件输出即pipe道。 换句话说,我想要的是像下面的伪代码(显然语法是不正确的) tar -xvf first.tar.gz subdir1/file1 subdir2/file2 | tar cf – | gzip > second.tar.gz 有谁知道这个适当的语法? 我已经尝试了很多变种,但无济于事。 我也很喜欢使用cpio的想法,但是又一次,我被如何正确地获得语法所困扰,并且从我的理解中,cpio只会使用档案或文件名,而不是文件。 任何帮助将不胜感激。 编辑:在压缩包内没有特定的文件名模式来提取。 鉴于BSD和GNU tar一次只能search一个模式,我不确定是否甚至可以分别使用include / exclude标志。

我怎样才能有效地将许多文件移动到新的服务器?

我正在切换托pipe提供商,并需要将数百万上传的文件传输到新的服务器。 所有的文件都在同一个目录下。 是。 你阅读正确。 ;) 在过去,我已经这样做了: 从源服务器上压缩所有的文件 将邮政编码到新的服务器 拉开拉链 将目录移动到适当的位置 无论出于何种原因,我从第1步开始的拉链总是带着他们的path,并要求我mv。 我最后一次完成这个工作大约需要4-5天才能完成,大约是现在的60%。 我希望有一个更好的方法。 你有什么build议? 文件结构被哈希。 像这样的东西: AAAAAAAAAA.jpg – ZZZZZZZZZZ.txt 这里有一个想法,我们正在折腾: 根据3个字母的前缀将拉链分成多个微型拉链。 就像是: AAAAAAAAAA.jpg – AAAZZZZZZZ.gif => AAA.zip 理论优点: 可以加快传输,允许多个拉链一次传输 可以限制传输失败所浪费的时间。 (等待2天的转账最终失败是可怕的) 理论缺点: 可能会使初始zip变慢,因为zip必须通过通配符( AAA* )查找文件,或许可以通过使用所有CPU而不是一个CPU来同时运行多个zip线程来抵消。 复杂? 我们也考虑过rsync和scp,但是担心手动传输每个文件的费用。 而由于远程服务器是空的,我不需要担心已经有什么。 你怎么看? 你会怎么做? (是的,我最终会把它们转移到Amazon S3上,我只是把它们放在一个磁盘上,但同时我昨天也需要它们)

归档(Ubuntu的焦油)隐藏的目录

目录mydir上的tar将归档隐藏的文件和隐藏的子目录,但是具有*通配符的mydir tar不会。 这是一个长期的和已知的不一致或错误? 编辑(附加信息):使用通配符的mydir tar将不会“查看”或将隐藏文件和隐藏的子目录归档到直接目录中。 但是,在mydir隐藏文件和隐藏子目录的非隐藏子目录中将被存档。

用一个命令打开一个.tar.gz文件

当我下载一个.tar.gz文件时,我用两个命令打开它,先用gunzip然后tar 。 是否可以用一个命令打开它?

如何用shell脚本解压所有的.tar.gz文件?

我试过这个: DIR=/path/tar/*.gz if [ "$(ls -A $DIR 2> /dev/null)" == "" ]; then echo "not gz" else tar -zxvf /path/tar/*.gz -C /path/tar fi 如果该文件夹有一个焦油,它的作品。 如果该文件夹有很多焦油,我得到一个错误。 我怎样才能做到这一点? 我有一个想法来运行一个循环来解压,但我不知道如何解决这个问题