存档所有从源代码目录中的文件到一个xyz.gz文件并移动,使用UNIX shell脚本
问题描述:
要求到目标目录:使用UNIX shell脚本成的.gz格式不目录结构的归档文件存档所有从源代码目录中的文件到一个xyz.gz文件并移动,使用UNIX shell脚本
我使用下面的命令
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
espression从存档文件名中的开头的路径组件:
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.gz
或.tgz
扩展名来存储压缩的tar归档文件。
请注意,一行中的四个空格前缀呈现代码块中的控制台I/O,请参阅我的编辑。 – halfer
谢谢 这是目前工作的目录意味着从“/ home/log”。 如果我想从其他路径运行此命令,如“/ home/usr/script” –
需要更改一次。我不想为所有日志文件创建单个存档文件,而是要为所有日志创建单独的.gz文件。我怎样才能做到这一点? –