宝塔面板 Shell 脚本使用 rsync 定时自动复制文件

编辑于:2024年06月11日

宝塔面板 Shell 脚本使用 rsync 定时自动复制文件

最近用群晖套件 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 宝塔面板

宝塔面板 Shell 脚本使用 rsync 定时自动复制文件

对于宝塔面板,可以打开计划任务,添加新计划任务,复制完整的脚本内容,粘贴进去即可,然后设置执行时间和周期。

3.2其它方式

也可以将脚本保存为.sh文件定期执行,例如cccitu_rsync_backup_copy.sh。在终端中执行下命令chmod +x /目录/cccitu_rsync_backup_copy.sh 给脚本添加可执行权限,通过终端或其它方式,定期执行 /目录/cccitu_rsync_backup_copy.sh

相关推荐

暂无评论