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

时间:2016-11-24 08:11:32

标签: linux shell unix gzip archive

要求:使用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文件来维护目录结构。我希望只有文件存档而没有目录结构。

2 个答案:

答案 0 :(得分:1)

您可以尝试以下命令:

$ cd /home/log

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

答案 1 :(得分:0)

您可以使用--transform选项使用sed表达式从已归档的文件名中删除主要路径组件:

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

然而,这也会为每个遇到的目录写一个条目。如果您不想这样,您可以使用find仅查找常规文件并将其传递给stdin上的tar,如下所示:

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

请注意,如果不同子目录中存在同名文件,则可能会在tar存档中创建多个具有相同名称的条目。此外,您应该使用传统的.tar.gz.tgz扩展名来压缩tar档案。