【问题标题】:How I can pack into tar-file only last directory from path?如何仅将路径中的最后一个目录打包到 tar 文件中?
【发布时间】:2013-08-02 12:27:05
【问题描述】:

如何仅将路径中的最后一个目录打包到 tar 文件中? 比如我有几条路径

/usr/local/files/dir1/

   file1.txt
   file2.txt
   file3.txt

/usr/local/files/dir2/

   file3.txt
   file4.txt
   file5.txt

如果我运行命令:

tar czf my_arch.tar.gz -C /usr/local/files/dir1 .

我只获得 dir1 目录的收容,没有它自己。

所以我有 - my_arch.tar.gz/file1.txt、file2.txt、file3.txt,但我需要在我的档案中这样的结构 -

my_arch.tar.gz/dir1/file1.txt, file2.txt, file3.txt

我该怎么做?

谢谢。

【问题讨论】:

    标签: linux command-line path archive tar


    【解决方案1】:

    试试

    cd /usr/local/files
    tar -cvzf my_arch.tar.gz dir1
    

    -C 指令将使您更改为 dir1,因此不会存档文件夹,而是存档其内容:

     -C, --directory DIR
         change to directory DIR
    

    【讨论】:

    • 在运行大型脚本时使用 cd 命令是不安全的。
    • 您没有声明您正在运行脚本。为什么它“不安全”? “-C”标志也导致 tar 进入目录。如果您担心不存在的目录,可以添加错误处理cd /usr/local/files/dir1 || { dostuff; }
    • 另外,如果您担心更改 shell 主线程中的目录,可以通过添加括号来使用子 shell:( cd /usr/local/files tar -cvzf my_arch.tar.gz dir1 )
    【解决方案2】:

    您不能直接通过 tar 执行此操作。 这是我的建议:

    #!/bin/bash
    mydir=/my_dir/whit/long_and/complicated_path/the_stuff_is_here
    dirname=$(dirname $mydir )
    basename=$(basename $mydir )
    
     tar cvf /tmp/$basename.tar    -C $dirname $basename  
    

    【讨论】:

    • 你让它变得复杂。为什么不对这些变量使用扩展?
    【解决方案3】:

    如果我理解您的要求正确,您希望您的 tar 文件包含该目录。

    尝试不带 -C 标志,如下所示:

    tar -czf my_arch.tar.gz /usr/local/files/dir1
    

    【讨论】:

    • 我忘了 - 我不需要保存路径结构。除了最后一个文件夹。
    • 你能更清楚地解释一下“最后一个文件夹”吗?你的意思是你只想归档 ls 列出的最后一个文件夹的内容?
    • @AlPacifico 我认为他的意思是 dir1 是最后一个目录,那么 tar 应该包含 dir1/file1,file2..etc。解压时应该提取 dir1 目录和里面的所有文件。我正在寻找相同的想法但找不到。
    【解决方案4】:
    $ tar vczf tmp/export/files.tar.gz -C tmp/export src
    

    files.tar.gz

    的结构
    src
    src/app
    src/app/main.js
    src/app/util
    src/app/util/runtime.js
    

    【讨论】:

      猜你喜欢
      • 2022-06-17
      • 1970-01-01
      • 2013-03-17
      • 1970-01-01
      • 2018-05-22
      • 1970-01-01
      • 2018-04-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多