服务器数据如何方便地备份到网盘


共计 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 个备份。

Tips:清朝云网络工作室

阅读剩余
THE END