Bitwarden sqlite 数据库备份、同步到windows
背景
bitwarden的保存的密码需要定期备份,并且同步到本地的WSL,避免意外原因导致全部密码丢失
步骤
bitwarden 调用sqlit的.back
生产备份文件,wsl通过定时任务rsync同步到windows电脑
备份定时任务
我之前的搭建文章,data文件都在/srv/bitwarden
,我需要备份/srv/bitwarden/srv/bitwarden
。
由于sqlite3存在事务,备份应该时调用sqlite3的.back
生成备份文件
- 安装sqlite3
在centos中,yum install sqlite3
是无法找到包的,应该先查询一下正确的包名并下载
yum search sqlite3
yum install sqlite-devel.x86_64
- 创建备份文件夹
sudo mkdir /srv/backup
sudo chmod go-rwx /srv/backup
- 创建systemd service服务
File: /etc/systemd/system/bitwarden-backup.service
[root@deng srv]# cat /etc/systemd/system/bitwarden-backup.service
[Unit]
Description=backup the vaultwarden sqlite database
[Service]
Type=oneshot
WorkingDirectory=/srv/backup
ExecStart=/usr/bin/env sh -c 'sqlite3 /srv/bitwarden/db.sqlite3 ".backup backup-$(date -Is | tr : _).sq3"'
ExecStart=/usr/bin/find . -type f -mtime +30 -name 'backup*' -delete
ExecStart=/usr/bin/env sh -c ‘sqlite3 /srv/bitwarden/db.sqlite3 “.backup backup-$(date -Is | tr : _).sq3”’
sh -c :使用输入的作为shell脚本
backup-$(date -Is | tr : _).sq3 : 按日期生成文件名:backup-2022-08-08T04_00_04+08_00.sq3
ExecStart=/usr/bin/find . -type f -mtime +30 -name ‘backup*’ -delete
保留最近30天的文件
验证服务bitwarden-backup服务,可以生成文件
systemctl start bitwarden-backup.service
[root@deng backup]# ll -l /srv/backup/
total 1940
-rw-r--r-- 1 root root 397312 Aug 5 17:43 backup-2022-08-05T17_43_41+08_00.sq3
- 创建systemd timer 定时任务
File: /etc/systemd/system/vaultwarden-backup.timer
[root@deng backup]# cat /etc/systemd/system/bitwarden-backup.timer
[Unit]
Description=schedule vaultwarden backups
[Timer]
OnCalendar=04:00
Persistent=true
[Install]
WantedBy=multi-user.target
[root@deng backup]#
启动定时任务
systemctl enable bitwarden-backup.timer
systemctl start bitwarden-backup.timer
定时任务检查
[root@deng backup]# systemctl status bitwarden-backup.timer
● bitwarden-backup.timer - schedule vaultwarden backups
Loaded: loaded (/etc/systemd/system/bitwarden-backup.timer; enabled; vendor preset: disabled)
Active: active (waiting) since Fri 2022-08-05 17:47:23 CST; 2 days ago
Trigger: Tue 2022-08-09 04:00:00 CST; 11h left
Aug 05 17:47:23 deng systemd[1]: Started schedule vaultwarden backups.
文件已经备份成功
确认下载的sqlite可以打开
WSL rsync 同步本地
rsync同步到我的本地电脑
rsync -uav root@xxx:/srv/backup /mnt/c/Users/Administrator/SynologyDrive/backup/pass/bitwarden-sqlite3
定时任务,每小时一次到我的本地
dyq@DESKTOP-R6TRIIR:/etc/rsyslog.d$ crontab -l
0 */1 * * * rsync -uav root@xxx:/srv/backup /mnt/c/Users/Administrator/SynologyDrive/backup/pass/bitwarden-sqlite3 > /dev/null 2>&1 &
定时任务日志查看执行情况
查看本地文件,文件已经同步ok
后记
bitwarden 调用sqlit的.back
生产备份文件,wsl通过定时任务rsync同步到windows电脑。完成
如果我有mac,是不是就可以直接在本地用linux的组件,有点爽
其他
unbutn的定时任务没日志
unbutn的定时任务日志默认没开启,可以开启日志定位
# 去掉cron.*开头的注释
sudo vim /etc/rsyslog.d/50-default.conf
# 重启cron服务
sudo service cron restart