命名tar归档与源文件

时间:2015-07-28 14:14:16

标签: linux tar

我只想从文件创建存档并保留文件名。

File = host1.log
Tar  = Archive_date_host1.tar.gz

我正在使用它:

find /var/log/TESTIN/ -daystart -mtime 7 -type f | xargs tar -czPf /var/log/TESTOUT/ARCHIVE_$(date +%F)_FILENAMEHERE.tar.gz

我可以做“归档”和日期部分,但有没有办法获取文件名并使用它?我搜索了一堆,似乎找不到任何东西。

2 个答案:

答案 0 :(得分:1)

我认为只有find就足够了。例如,以下命令在使用您想要的命名方案找到的每个文件中创建一个.tar.gz存档。请注意,{}已替换为找到的文件名

find * -type f -exec tar -czf ARCHIVE_$(date +%F)_{}.tar.gz {} \;

答案 1 :(得分:1)

看起来您希望使用每个文件的basename作为输出文件的可变部分,即删除名称的目录部分和.log后缀。试试这个:

find /var/log/TESTIN/ -daystart -mtime 7 -type f | \
xargs -I {} sh -c 'tar -czPf /var/log/TESTOUT/ARCHIVE_$(date +%F)_$(basename {} .log).tar.gz {}'