【问题标题】:How to create a tar.gz without all the folders如何创建没有所有文件夹的 tar.gz
【发布时间】:2013-02-22 00:34:34
【问题描述】:

好的,所以我想要做的(在 ubuntu 服务器 12.04 中)是获取“服务器”文件夹中的所有目录并分别创建所有目录的 tar.gz。例如: 服务器文件夹内还有 3 个文件夹。服务器 1、服务器 2 和服务器 3。我想在 tar.gz 中压缩 server1、server2 和 server3 的内容。所以在 server1 文件夹中,我有一个 test.txt 文件。我希望这是 server.tar.gz 中唯一的东西。
这是我迄今为止在 bash 中的代码

servers=(servers/*)
for i in "${servers[@]}"
do
NAME=${i:8} <-- to trim off the /servers/ part of /servers/servernumber
tar -C servers/$NAME/ -cvzf $NAME.tar.gz $NAME
done

你能帮上什么忙!

【问题讨论】:

  • 你想要这样的东西吗:stackoverflow.com/q/4898056/390913
  • 您是否要创建一个 server.tar.gz 来对每个 server* 目录下的所有文件进行 tar,但不应该在 tar 文件中创建单独的 server* 目录?
  • Perreal - 我很难理解他在问什么 本质上,我只想获取 /servers/server1/ 中的内容以及其中的那些文件,这就是我想要的 server1.tar 中的全部内容。 gz 文件
  • Tuxdude - 我想为服务器文件夹中的每个文件夹创建一个单独的 tar.gz 文件。所以server1.tar.gz、server2.tar.gz、server3.tar.gz

标签: linux bash file ubuntu directory


【解决方案1】:

我相信这就是你想要做的:

for my_dir in servers/server*; do
    tar -C $my_dir -czvf "${my_dir:8}.tar.gz" .
done

【讨论】:

    【解决方案2】:
    for dir in servers/*
    do
      tar -C $dir -cvzf "$(basename $dir).tar.gz" .
    done
    

    【讨论】:

      【解决方案3】:
      cd /path/top
      for dir in server1 server2 server3
      do
           cd $dir
           tar -cvfz /tmp/${dir}.tar.gz  *
           cd -
      done
      ls -lrt /tmp/*.tar.gz
      

      这似乎是你想要的。请尝试并告诉我们

      【讨论】:

      • 这行不通,因为第二次通过循环时,您将位于 server1 子目录中,而 cd server2 将无法正常工作。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-06-14
      • 2020-04-21
      • 2016-11-03
      • 1970-01-01
      • 1970-01-01
      • 2015-07-01
      • 2020-03-22
      相关资源
      最近更新 更多