帮我写一个 目录备份的shell脚本 实现每天凌晨12点备份 保留最新15天的备份
时间: 2024-04-16 15:29:31 浏览: 14
当然可以帮你编写一个Shell脚本来实现目录备份并保留最新15天的备份。以下是一个示例脚本:
```bash
#!/bin/bash
# 备份源目录和目标目录
source_dir="/path/to/source"
backup_dir="/path/to/backup"
# 创建备份目标目录
mkdir -p $backup_dir
# 生成备份文件名
backup_file="${backup_dir}/backup_$(date +%Y%m%d%H%M%S).tar.gz"
# 备份源目录到目标目录
tar -czf $backup_file $source_dir
# 删除旧的备份文件,保留最新的15个备份
find $backup_dir -type f -name "backup_*.tar.gz" | sort -r | tail -n +16 | xargs rm -f
```
以上脚本将指定的源目录 `$source_dir` 打包成一个以当前日期和时间命名的压缩文件,并保存到指定的备份目录 `$backup_dir` 中。然后,它会使用 `find` 命令找到备份目录中所有以 "backup_" 开头的压缩文件,按照文件名的降序排序,并使用 `tail` 命令选择最新的15个备份文件,最后使用 `xargs` 和 `rm` 命令删除其余的旧备份文件。
请将脚本中的 `/path/to/source` 和 `/path/to/backup` 替换为实际的源目录和备份目录路径。另外,确保你对该脚本具有执行权限(可以使用 `chmod +x script.sh` 命令赋予执行权限)。
你可以将这个脚本添加到你的cron任务中,以便每天凌晨12点自动执行备份操作。在终端中输入 `crontab -e` 命令,然后添加以下行到cron文件中:
```
0 0 * * * /path/to/script.sh
```
保存并退出cron文件,这样脚本将每天凌晨12点自动执行备份操作,并保留最新的15个备份文件。