共计 1013 个字符,预计需要花费 3 分钟才能阅读完成。
由于之前写的搭建密码管理器 Vaultwarden,论坛有人提到来个备份教程,于是便有了这篇文章。
我自己的方案是,数据都存放在一个目录下,比如 /home/docker
目录。那么备份数据的时候只需要加密压缩这个目录,然后上传到网盘即可。
这里需要用到 rclone 进行网盘挂载,如果不了解这个的话可以看看 Docker 安装 rclone 挂载 Onedrive 到本地。rclone 支持的网盘非常多,并且还支持 webdav。
因为本人 Onedrive 容量较小,所以用的阿里云盘,然而阿里云盘不支持直接挂载。因此,还需要借助 alist 添加阿里云盘后进行 webdav 挂载。
挂载后,假设需要备份的目录为/home/docker
,Onedrive 挂载的目录为 /rclone/onedrive
,准备一个存放备份的目录 /rclone/onedrive/backup
。那么可以使用如下脚本进行备份:
#!/bin/bash
echo "备份开始执行于:$(date)"
# 使用变量保存日期
date=$(date +%Y%m%d-%H%M)
tmp_dir="/usr/local/tmp/$date"
docker_dir="/home/docker"
backup_dir="/rclone/onedrive/backup"
password="password"
# 创建目录
mkdir -p "$backup_dir" "$tmp_dir" || { echo "创建目录失败"; exit 1; }
# 复制文件
cp -r "$docker_dir" "$tmp_dir" || { echo "复制文件失败"; exit 1; }
# 压缩并设置密码
cd /usr/local/tmp || { echo "无法进入临时目录"; exit 1; }
zip -rP "$password" "${date}.zip" "$date" || { echo "压缩失败"; exit 1; }
cp "${date}.zip" "$backup_dir" || { echo "复制压缩文件失败"; exit 1; }
# 清理备份
ls -t "$backup_dir" | awk 'NR>30' | xargs -I {} rm -rf "$backup_dir/{}" || { echo "清理旧备份失败"; exit 1; }
echo "备份完成于:$(date)"
本来是自己写的脚本,让 chatgpt 优化一下,它就改成这样了。这个脚本将 /home/docker
目录加密压缩,然后上传到网盘,并且只保留最近 30 个备份。
AD:【腾讯云服务器大降价】2核4G 222元/3年 1核2G 38元/年
正文完