# backup.sh 配置文件 # 所有配置项均可通过命令行参数覆盖(参数优先级高于本文件)。 # # 备份方式由命令行第一个位置参数决定: # bash backup.sh smb -> 使用本文件 SMB 段配置 # bash backup.sh rclone -> 使用本文件 RCLONE 段配置(上传到网盘等 rclone 支持的远端) # bash backup.sh sftp -> 使用本文件 SFTP 段配置(暂未实现) # ===== 公共配置(COMMON_*)===== # 要备份的源目录或文件(多个用空格分隔,需引号包裹) COMMON_SOURCE_PATHS="/opt/app" # 本地临时打包目录(用于存放归档/分卷/sha 文件) # 注意:当 COMMON_CLEAN_LOCAL=true 时,会清理目录下所有以 COMMON_ARCHIVE_PREFIX 开头 # 的文件/目录(包含上次失败遗留的中间产物),其它无关文件不受影响。 COMMON_TMP_DIR="/tmp/backup_script" # 归档/远端目录命名前缀,最终形如 ${COMMON_ARCHIVE_PREFIX}-YYYYmmdd-HHMMSS/ COMMON_ARCHIVE_PREFIX="backup" # 上传完成后是否删除本地归档(true / false) COMMON_CLEAN_LOCAL="true" # 远端保留天数,0 表示不清理;按 ${COMMON_ARCHIVE_PREFIX}-YYYYmmdd-HHMMSS 目录整体清理 COMMON_RETENTION_DAYS=15 # 分卷大小,默认 1G;留空表示不分卷;非空时形如 1G / 500M / 100k # 文件名形如 backup-YYYYmmdd-HHMMSS.tar.gz.0 / .1 / .2 ... # 同目录下还会生成 backup-YYYYmmdd-HHMMSS.sha256(覆盖所有分卷的校验清单) # # 恢复(在备份目录里执行): # sha256sum -c backup-YYYYmmdd-HHMMSS.sha256 # 校验 # cat $(ls *.tar.gz.* | sort -V) | tar -xzf - # 合并并解压 COMMON_SPLIT_SIZE="1G" # ===== SMB / Samba 配置(仅 bash backup.sh smb 使用)===== # 服务器地址,例如 192.168.1.10 或 nas.local SMB_HOST="" # 共享名,例如 backup SMB_SHARE="" # 共享内的子目录(可选),例如 servers/web1 SMB_PATH="" # 用户名 / 密码 SMB_USER="" SMB_PASSWORD="" # 域 / 工作组(可选) SMB_DOMAIN="" # SMB 协议版本(可选),例如 3.0 SMB_VERSION="" # ===== rclone 配置(仅 bash backup.sh rclone 使用)===== # 前置条件:先在本机用 `rclone config` 配置好远端(OAuth 流程各家网盘不同,由 rclone 自己处理)。 # 配置完成后用 `rclone listremotes` 可看到远端名(带尾随冒号),填到 RCLONE_REMOTE 时不带冒号。 # rclone 可执行文件路径(可选,留空则从 PATH 中查找 `rclone`) # 适用于 rclone 装在非标准路径(例如 /usr/local/bin/rclone、/opt/rclone/rclone)的情况 RCLONE_EXECUTABLE="" # rclone 远端名(不带冒号),例如 gdrive / onedrive / s3-backup RCLONE_REMOTE="" # 远端目标子路径,例如 vps-backup/web1。最终路径 = ${RCLONE_REMOTE}:${RCLONE_PATH}/${ARCHIVE_BASENAME}/ RCLONE_PATH="" # 自定义 rclone.conf 路径(可选,留空则使用 rclone 默认位置 ~/.config/rclone/rclone.conf) RCLONE_CONFIG="" # 透传给 rclone copy / purge / lsf 的额外参数(可选) # 常用:--bwlimit 10M(限速) --transfers 2(并发数) --tpslimit 4(每秒事务上限,避免被风控) RCLONE_FLAGS="" # ===== SFTP 配置(仅 bash backup.sh sftp 使用,预留,暂未实现)===== SFTP_HOST="" SFTP_PORT="22" SFTP_USER="" SFTP_PASSWORD="" SFTP_KEY="" SFTP_PATH=""