
最近用群晖套件 Active Backup for Business 备份服务器文件,因用户权限问题导致数据库文件无法备份,因此写了个 Shell 脚本使用 rsync 每天定时自动复制文件到另一个目录,并设置权限和用户组。
1.脚本内容
#!/bin/bash
# 源目录
SOURCE_DIR="/www/backup/database/mysql/crontab_backup/"
# 目的地目录
DEST_DIR="/www/玩机大学数据库备份"
# 日志文件
LOG_FILE="/www/cccitu_backup_copy.log"
# 创建目的地目录(如果不存在)
if [ ! -d "$DEST_DIR" ]; then
mkdir -p "$DEST_DIR"
fi
# 使用rsync同步文件,并设置文件所有者为www和权限为755
rsync -av --update --chown=www:www --chmod=Du=rwx,Dg=rx,Do=rx,Fu=rwx,Fg=rx,Fo=rx "$SOURCE_DIR" "$DEST_DIR"
# 记录日志
echo "$(date +'%Y-%m-%d %H:%M:%S') - Rsync backup completed" >> "$LOG_FILE"
2.脚本解释
2.1 目录检查和创建:
使用if [ ! -d "$DEST_DIR" ]; then ... fi确保目录存在。
2.2 文件同步:
使用rsync -av --update --chown=www:www --chmod=Du=rwx,Dg=rx,Do=rx,Fu=rwx,Fg=rx,Fo=rx "$SOURCE_DIR" "$DEST_DIR"来同步文件,并设置权限和所有者。
选项解释:
- ⭕-a:归档模式,递归复制目录,保留符号链接、权限、修改时间、组和所有者信息。
- ⭕-v:详细模式,显示同步过程中的详细信息。
- ⭕--update:仅更新目的地中不存在或比源文件旧的文件。
- ⭕--chown=www:www:设置文件和目录的所有者为 www 用户和组。
- ⭕--chmod=Du=rwx,Dg=rx,Do=rx,Fu=rwx,Fg=rx,Fo=rx:设置目录和文件的权限。目录权限为 755,文件权限为 755。
2.3 日志记录:
记录每次执行的时间和结果,方便监控。
3.使用方法
3.1 宝塔面板

对于宝塔面板,可以打开计划任务,添加新计划任务,复制完整的脚本内容,粘贴进去即可,然后设置执行时间和周期。
3.2其它方式
也可以将脚本保存为.sh文件定期执行,例如cccitu_rsync_backup_copy.sh。在终端中执行下命令chmod +x /目录/cccitu_rsync_backup_copy.sh 给脚本添加可执行权限,通过终端或其它方式,定期执行 /目录/cccitu_rsync_backup_copy.sh。


暂无评论
要发表评论,您必须先 登录