基于文件date的rsync目标

我有一个服务器上的日志文件的大目录。 所有的日志都在一个大目录中。

我们希望将这些备份备份到另一个主机(我们的存档服务器),并且只保留“活”服务器上最近90天的备份。

但是,由于我们使用此应用程序生成的日志数量庞大,我们将创build一个难以浏览的大量文件夹。 RSYNC可以根据文件的date(而不是当前的date)指定目标文件夹。

例如..

rsync <options> /logs/*.log ArchiveServer:/archive/ServerA/logs/<YYYY>/<MM> where application.20111230.log gets dumped to /archive/ServerA/logs/2011/12 and application.20120301.log gets dumped to /archive/ServerA/logs/2012/03 

我可以将它们全部转储到一个通用的文件夹,比如/ archive / ServerA / Current /,然后,也许每周查找大于90天的文件,然后对它们进行sorting..但是直接在rsync中直接执行它似乎会更清晰我不会有两个地方查找日志取决于它是如何新)

像这样的东西?

 rsync /logs/*.$(date '+%Y%m%d').log ArchiveServer:/archive/ServerA/logs/$(date '+%Y')/$(date '+%m')/ 

更新:

对,所以date已经在日志文件名中。 我应该慢慢阅读。

我不认为你会直接用rsync来做这件事,但会把事情整理到一个脚本中。 如果你想在一开始就把事情搞砸,比如:

 for daysago in `seq 0 90` do rsync /logs/*.$(date '+%Y%m%d' -d "$daysago days ago").log ArchiveServer:/archive/ServerA/logs/$(date '+%Y' -d "$daysago days ago")/$(date '+%m' -d "$daysago days ago")/ done 

你可以在循环中的rsync命令前面粘上一个“echo”来查看是否你想要的。

不pipe你做什么都会把这些元素合并起来,尽pipe其他人对我的shell脚本比我更聪明。