linux - 改进我的备份 bash 脚本

标签 linux bash backup

你好 我将我的日志文件保存在/opt/project/logs/下,我想每天通过压缩将它们复制到/opt/bkp。

为此我写了这个并且效果很好:

#!/bin/bash

getdate(){
  date --date="$1 days ago" "+%Y_%m_%d"
}

rm -rf "/opt/bkp/logs/myapp_log_"$(getdate 365).gz ;
/bin/cat /opt/project/logs/myapp.log | gzip > /opt/bkp/logs/myapp_log_`date +%Y_%m_%d`.gz ;
echo "" > /opt/project/logs/myapp.log ;

但是它不是功能性的或一般性的,我将有几个应用程序用它们的名字保存文件,即 app1.log app2.log 在同一个 /opt/project/logs/文件夹。我怎样才能将其作为一个“函数”,其中脚本读取 /opt/project/logs/ 目录下的每个文件并备份每个文件以 .log 扩展名结尾?

最佳答案

您可以使用发行版附带的 logrotate(8) 工具。 :) 联机帮助页有一个看起来接近您需要的示例:

  /var/log/news/* {
       monthly
       rotate 2
       olddir /var/log/news/old
       missingok
       postrotate
           kill -HUP `cat /var/run/inn.pid`
       endscript
       nocompress
   }

好吧,不是 monthly 位,也不是重新启动 inn :) 但我希望你明白你可以轻松地将新配置文件添加到 /etc/logrotate.d/ 不用再担心了。 :)

关于linux - 改进我的备份 bash 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4804480/

相关文章:

MySql备份与恢复

linux - 与 powershell 相比,Bash base64 有一个附加字符而不是 equals

Linux - openssl sha256 使用文件中的 key

linux - 在 Ubuntu 18.04 中安装旧版本的 gnu-make

linux - bash:在字符串中启动命令。 - 使用 sed

php - Bash 脚本为分布在多个版本的服务器上的多个 Drupal 站点更新管理员用户密码

linux - BASH Shell 交互式 session - 如何修复 ASCII 艺术动画输出?

c++ - 使用 C++ 在 Linux 上进行 vector ODBC 配置

java - mysqldump(错误代码 : 2) trying do backup from java in linux (server) with wildfly

linux - 如何使用命令获取替换该文件的文件的备份