最近用群晖套件 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。
暂无评论
要发表评论,您必须先 登录