0

我有一些这样的文件:

2012-12-17_083213_1.log
2012-12-17_083213_1.log_stats
2012-12-17_083213_1.logaccount_ptr
2012-12-17_083213_1.loginitial_ptr
2012-12-17_083213_1.logptr
2012-12-17_093049_2.log
2012-12-17_093049_2.log_stats
2012-12-17_093049_2.logaccount_ptr
2012-12-17_093049_2.loginitial_ptr
2012-12-17_093049_2.logptr

在这里,每填充 1G 的数据,就会创建一个名为 Year-Month-Day_HourMinuteSecond_number.log 格式的新文件(如上所示)。我想要

  1. 将所有 *.log 复制到一个以年-月-日格式命名的新文件夹中,例如将其命名为 2012-12-17
  2. tgz那个文件夹
  3. 将其发送到服务器 IP。

我不知道具体如何。我希望它作为一个 bash 脚本,这样我就可以每天为新添加的文件运行它。感谢您的帮助。

4

1 回答 1

1
for f in *log ; do
    targetdir=${f:0:10}
    mkdir ${targetdir} 2>/dev/null
    echo ${targetdir} > dirstotar
    mv ${f} ${targetdir}
done 
sort dirstotar | uniq | while read dir ; do
    tar --remove-files -cvzf "${dir}.tar.gz" "${dir}"
done
find . -name '*tar.gz' -print | xargs scp '{}' user@host:/dir

这可能对你有用。

  1. 对于每个日志文件,检查其名称,并使用日志文件名称的前 10 个字符创建一个目录(如果有,则忽略错误)
  2. 将日志文件移动到该目录
  3. 将目录名称记录到文件中以供以后处理。
  4. 处理目录列表(tar)
  5. 将每个 tar.gz 复制到远程主机。

这只是你的一个起点。如果您想要一个完整的解决方案,请告诉我们您尝试了什么,出了什么问题。或者聘请专业人士。

于 2012-12-17T20:08:50.923 回答