
SuperSync 服务器怎么配置每日自动 PostgreSQL 数据库备份并通过 rclone 上传异地存储【免费下载链接】super-productivitySuper Productivity is an advanced todo list app with integrated Timeboxing and time tracking capabilities. It also comes with integrations for Jira, GitLab, GitHub and Open Project.项目地址: https://gitcode.com/GitHub_Trending/su/super-productivitySuper Productivity 的自托管同步服务SuperSync Server把数据库跑在 Docker 化的 PostgreSQL 容器里。服务器是操作日志的中继但用户账号、Passkey 凭据只存在于服务器端因此需要定期备份 PostgreSQL 并把备份送到异地。仓库自带了备份脚本 backup.sh 和操作文档 backup-and-recovery.md脚本生成全量 dump 和账号 dump 两份 gzip 文件加 cron 就是每日自动备份设置RCLONE_REMOTE并传--upload参数即可通过 rclone 上传到 B2/S3 等异地存储。本文按文档给出的路径把这套机制在已部署的 SuperSync 服务器上配置起来。前提条件已按 README 完成部署Docker含 Compose 插件、curl、git、jq通过cp env.example .env配置环境变量后运行./scripts/deploy.sh部署了整套服务。备份脚本默认连接名为supersync-postgres的 PostgreSQL 容器数据库用户和库名默认都是supersync。如果你的部署修改过这些值对应.env中的POSTGRES_USER/POSTGRES_DB参考 env.example需要用下表的环境变量覆盖。文档列出的可配置变量及默认值变量默认值说明BACKUP_DIR../backups备份文件的存放位置相对脚本目录即服务目录下的backups/RETENTION_DAYS14删除超过该天数的备份DB_CONTAINERsupersync-postgresDocker 容器名POSTGRES_USERsupersync数据库用户POSTGRES_DBsupersync数据库名RCLONE_REMOTE空可选的 rclone 远端用于异地上传第一步先手动跑一次备份确认脚本可用在 SuperSync 服务的源码检出目录即packages/super-sync-server下执行./scripts/backup.sh脚本会依次做四件事生成账号 dumpsupersync_accounts_YYYYMMDD_HHMMSS.sql.gz只含users和passkeys两张表文档示例说明其体积很小通常 1MB。它先于全量 dump 生成确保即使全量 dump 中途失败账号凭据也有副本。生成全量 dumpsupersync_YYYYMMDD_HHMMSS.sql.gz整个数据库文档提示活跃实例约 300MB 起全量 dump 可能耗时较长。如果传了--upload且设置了RCLONE_REMOTE用 rclone 把两个文件拷到远端--upload但RCLONE_REMOTE为空时会打印警告rclone 未安装时也会打印警告并跳过上传。清理超过RETENTION_DAYS天的旧备份。脚本输出类似文档中的说明性输出非固定预期 SuperSync Backup Date: ... Output: .../supersync_YYYYMMDD_HHMMSS.sql.gz Accounts backup size: ... Full backup size: ... Backup complete几个脚本内置的安全细节理解它们有助于判断输出是否正常脚本以umask 077运行并把BACKUP_DIR权限设为 700因为 dump 里含密码哈希和 Passkey 凭据dump 写入.tmp文件、成功后才改名失败的运行不会留下看起来完整实则截断的备份脚本还会清理超过 6 小时没有写入的supersync_*.sql.gz.tmp残留。第二步配置 rclone 远端异地上传的前提这一步是可选分支只有需要异地备份才做只做本地每日备份可跳过直接到第三步并把 cron 中的--upload去掉。文档给出的安装方式注意副作用管道安装脚本、以sudo权限向系统安装 rclonecurl https://rclone.org/install.sh | sudo bash然后交互式配置远端例如 Backblaze B2也支持 S3按提示填入账号信息rclone config配置完成后会得到一个 rclone remote 名称文档中给出的示例有b2:my-bucket/supersync、b2:supersync-backups、s3:my-bucket/supersync等形式实际以你配置出来的为准。验证方式就是运行脚本时观察是否出现 Uploading to RCLONE_REMOTE...以及Upload complete若看到Warning: rclone not installed, skipping upload说明安装没成功。第三步配置每日自动备份的 cron文档给出的每日 3 点执行、保留 3 天的 cron 写法在部署服务器上以 root 身份执行(crontab -l 2/dev/null; echo 0 3 * * * RETENTION_DAYS3 flock -n /run/supersync-backup.lock /path/to/scripts/backup.sh /var/log/supersync-backup.log 21) | crontab -这条命令会向当前用户的 crontab追加一行crontab -l先导出已有条目再合并不覆盖已有计划。使用它之前需要两处替换并在 cron 表达式中补上异地上传参数/path/to/scripts/backup.sh替换为部署机上备份脚本的绝对路径文档中的占位写法脚本要求以绝对路径引用。如果要每日自动上传异地需要让 cron 里的脚本带--upload并设置RCLONE_REMOTE。例如(crontab -l 2/dev/null; echo 0 3 * * * RETENTION_DAYS3 RCLONE_REMOTEb2:my-bucket/supersync flock -n /run/supersync-backup.lock /path/to/scripts/backup.sh --upload /var/log/supersync-backup.log 21) | crontab -其中b2:my-bucket/supersync换成你第二步配置的 remote 名。两个参数为什么这么写flock -n /run/supersync-backup.lock防止一次缓慢的 dump 与当晚下一次运行重叠。文档特别强调锁文件必须放在/run这类 root 专属目录——放在人人可写的/tmp里任何本机用户都可能提前占住该路径让每晚的备份静默失败。RETENTION_DAYS3cron 示例用 3 天保留期脚本默认值是 14 天按你对本地备份保留周期的要求调整这个值即可。验证备份是否按预期工作文档给出的三项检查命令# 检查备份存在且大小合理 ls -lh backups/ # 验证 dump 包含合法 SQL gunzip -c backups/supersync_YYYYMMDD_HHMMSS.sql.gz | head -5 # 检查 cron 是否在跑 cat /var/log/supersync-backup.logls -lh backups/应能看到每日新增的supersync_YYYYMMDD_HHMMSS.sql.gz和对应的supersync_accounts_*.sql.gzgunzip -c ... | head -5能输出 SQL 内容说明归档可解压且是合法 dump文件名按当天实际生成物替换/var/log/supersync-backup.log应包含每次运行的输出若异地上传未生效日志里会出现Warning: --upload specified but RCLONE_REMOTE not set或Warning: rclone not installed, skipping upload按提示补环境变量或安装 rclone。边界与限制备份只覆盖数据库。宿主机快照类备份如 VPS 厂商的每日快照不能替代pg_dump——文档指出对运行中 PostgreSQL 做文件系统级备份可能不具备崩溃一致性但它可以覆盖配置、TLS 证书、Docker 配置等pg_dump不涉及的服务器状态两者组合使用效果更好。异地上传只发生在脚本被显式传--upload且RCLONE_REMOTE非空时手动运行不带--upload的话只做本地备份和清理。全量 dump 可能耗时数小时文档以“1-2 h”描述典型窗口活跃实例约 300MB 起这正是 cron 里需要flock的原因备份会话在pg_stat_activity中以application_namesupersync-backup标识配套的健康检查脚本对该名称做了长查询豁免。备份如何用于恢复账号级恢复、全库恢复、单用户回滚在 backup-and-recovery.md 的 Disaster Recovery 与 Per-User Recovery 章节有完整流程本文不展开。【免费下载链接】super-productivitySuper Productivity is an advanced todo list app with integrated Timeboxing and time tracking capabilities. It also comes with integrations for Jira, GitLab, GitHub and Open Project.项目地址: https://gitcode.com/GitHub_Trending/su/super-productivity创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考