elabftw远程备份

实验数据的备份非常重要,往往都会做几个备份,这里是将elabftw实例备份到其它服务器(比如自建的服务器或者NAS,注意如果NAS不支持borgbackup的话就不能用此方案,但是也有其它变通方案)上的一个方案,相对比较简单,值得推荐

  1. 宿主机安装sshpass(相对比较简单的方案)
sudo apt-get update
sudo apt-get install sshpass
  1. 建立备份脚本文件夹
mkdir borg-backup
cd borg-backup
  1. 创建变量文件
 vi .env

在文件中写入如下代码

# 远程主机登录密码
SSH_PASS='MyPassw0rd123'
# borg 仓库路径(后面第6步创建的仓库)
BORG_REPO='user@remote-host:/path/to/borg-repo'
# SSH 端口(远程服务器的端口)
SSH_PORT=XX22
# borg 密码(如果有加密仓库)
BORG_PASSPHRASE='your-borg-passphrase'
  1. 给.env文件设置权限(600,防止泄露)
chmod 600 /opt/borg-backup/.env
  1. 创建borg-backup脚本
#!/bin/bash

# === 加载配置 ===
source "$(dirname "$0")/.env"

# 本地要备份的目录
BACKUP_SOURCE="/etc /home /var/www"

# 备份档案名
HOSTNAME=$(hostname -s)
TIMESTAMP=$(date +%Y-%m-%d_%H-%M)
ARCHIVE="$HOSTNAME-$TIMESTAMP"

# 日志文件路径
LOGFILE="$(dirname "$0")/backup.log"

# 保留策略
PRUNE_OPTS="--keep-daily=7 --keep-weekly=4 --keep-monthly=6"

# 设置 borg 环境变量
export BORG_REPO="$BORG_REPO"
export BORG_PASSPHRASE="$BORG_PASSPHRASE"
export BORG_RSH="sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no -p $SSH_PORT"

# === 执行备份 ===
exec > >(tee -a "$LOGFILE") 2>&1

echo "[$(date)] Starting backup: $ARCHIVE"
borg create --verbose --stats --compression zstd,3 \
    ::$ARCHIVE $BACKUP_SOURCE
BACKUP_EXIT=$?

echo "[$(date)] Pruning old backups..."
borg prune -v --list $PRUNE_OPTS
PRUNE_EXIT=$?

if [ $BACKUP_EXIT -eq 0 ] && [ $PRUNE_EXIT -eq 0 ]; then
    echo "[$(date)] ✅ Backup and prune successful."
else
    echo "[$(date)] ⚠️  Backup or prune failed!"
fi
echo "------------------------------------------"

6. 给脚本执行权限:

chmod +x /opt/borg-backup/borg-backup.sh

7. 创建远程仓库

7.1 确保远程目录存在且有权限

ssh user@remoteIP -p XX22 "mkdir -p /destination/repo-name"

7.2 初始化Borg仓库

不加密(强烈不建议)

borg init \
  --encryption=none \
  --rsh='ssh -p XX22' \
  user@remoteIP:/destination/repo-name

加密

borg init \
  --encryption=keyfile-blake2  \
  --rsh='ssh -p XX22' \
  user@remoteIP:/destination/repo-name

7.3验证仓库

borg info \
  --rsh='ssh -p XX22' \
  user@remoteIP:/destination/repo-name

密钥文件至关重要,必须单独备份!你可以用 borg key export 命令将它导出到安全的地方

 borg key export   --rsh='ssh -p XX22'   user@remoteIP:/destination/repo-name   ./repo-name.keyfile

也可以选择输出一个html文件用于扫码

 borg key export  --qr-html    --rsh='ssh -p XX22'   user@remoteIP:/destination/repo-name   ./repo-name.keyfile

8. 根据创建好的远程仓库,更新前面的.env文件

9. 运行脚本,如果正常就会有如下显示

  1. 设置定时备份命令
crontab -e 

在文件里添加如下代码

0 2 * * * /opt/borg-backup/borg-backup.sh

这样elabftw的远程备份就完备了!

需要落地这套方案?

我们可以为你的团队提供自托管部署、代托管运维与定制化开发,申请半年免费试用。