将源目录中的所有文件存档到 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
扩展名。
要求:使用 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
扩展名。