用shell脚本写一个将不同主机多个指定路径下的距当前日期半年前的应用日志进行备份。
时间: 2024-02-24 19:59:16 浏览: 64
shell脚本备份
好的,以下是实现该功能的shell脚本代码:
```bash
#!/bin/bash
# 定义备份目录
backup_dir="/backup"
# 获取当前时间和半年前的时间
now=$(date +%Y%m%d)
half_year_ago=$(date -d "6 months ago" +%Y%m%d)
# 定义要备份的路径列表,可根据实际情况进行修改
paths=(
"/var/log/nginx"
"/var/log/mysql"
)
# 定义要备份的主机列表,可根据实际情况进行修改
hosts=(
"host1"
"host2"
)
# 循环遍历主机和路径,进行备份
for host in "${hosts[@]}"; do
for path in "${paths[@]}"; do
# 构造备份文件名,格式为 host_path_YYYYMMDD.tar.gz
filename="${host}_$(echo $path | tr / _)_${now}.tar.gz"
# 执行备份命令,将距当前日期半年前的日志文件打包并存储到备份目录中
ssh $host "find $path -type f -name '*.log' -mtime +180 | xargs tar -czvf -" > "$backup_dir/$filename"
done
done
```
该脚本会遍历`hosts`和`paths`列表,使用`ssh`命令连接每个主机,并在每个指定路径下查找距离当前日期半年前的日志文件,然后将这些日志文件打包并存储到备份目录中。备份文件名的格式为`host_path_YYYYMMDD.tar.gz`。其中,`-mtime +180`表示距离当前时间180天前的文件,可以根据实际情况进行修改。
阅读全文