将源目录中的所有文件存档到 xyz.gz 文件中,然后使用 UNIX shell 脚本将其移动到目标目录

Archive all the files from source directory into a xyz.gz file and move that to target directory using UNIX shell script

要求:使用 UNIX shell 脚本将文件归档为没有目录结构的 .gz 格式

我正在使用下面的命令

tar -C source_dir -zcvf target_dir/xyz.gz source_dir

示例:

tar -C /home/log -zcvf /home/archive/xyz.gz /home/log

此处xyz.gz包含/home/log

它正在创建 xyz.gz 文件来维护目录结构。我只想归档没有目录结构的文件。

您可以尝试以下命令:

$ cd /home/log

$ tar zcvf /home/archive/xyz.gz *

您可以使用 --transform 选项使用 sed 表达式从归档文件名中去除前导路径组件:

tar -C /home/log -zcvf /home/archive/xyz.gz --transform 's_.*/__' /home/log

然而,这也会为每个遇到的目录写入一个条目。如果你不想这样,你可以使用 find 只查找常规文件并将它们传递给标准输入上的 tar,如下所示:

cd /home/log
find -type f -print0 | tar -zcvf /home/archive/xyz.gz --transform 's_.*/__' --verbatim-files-from --null -T -

请注意,如果同名文件存在于不同的子目录中,这可能会在 tar 存档中创建多个同名条目。此外,您应该为压缩的 tar 存档使用常规的 .tar.gz.tgz 扩展名。