mobile wallpaper 1mobile wallpaper 2mobile wallpaper 3mobile wallpaper 4mobile wallpaper 5mobile wallpaper 6
1018 字
3 分钟
Kopia 数据备份
2026-06-01

Cloudflare配置#

创建R2储存桶Kopia#

存储桶名称

Access Key ID

Secret Access Key

账户 ID(在 R2 概览页右侧)


Kopia配置#

参考资料:使用 Kopia 自动化备份服务器数据

环境准备(清除残留的全部kopia服务):

# 1. 停止并删除 systemd 服务(如果有)
sudo systemctl stop kopia-server 2>/dev/null
sudo systemctl disable kopia-server 2>/dev/null
sudo rm -f /etc/systemd/system/kopia-server.service
sudo systemctl daemon-reload
# 2. 杀掉所有 kopia 进程
pkill -f kopia
# 3. 断开 Repository
kopia repository disconnect 2>/dev/null
# 4. 删除 Kopia 配置文件
rm -rf ~/.config/kopia
rm -rf /root/.config/kopia
# 5. 卸载 Kopia 程序
sudo apt remove kopia -y
sudo rm -f /etc/apt/sources.list.d/kopia.list
sudo rm -f /usr/share/keyrings/kopia-keyring.gpg
sudo apt update

在 Debian GNU/Linux 上,最省心的安装方式是添加官方的 APT 仓库

# 1. 安装必要的系统组件
sudo apt update && sudo apt install -y curl gpg apt-transport-https
# 2. 下载并添加 Kopia 的 GPG 签名密钥
curl -s https://kopia.io/signing-key | sudo gpg --dearmor -o /usr/share/keyrings/kopia-keyring.gpg
# 3. 将 Kopia 官方软件源添加到系统中
echo "deb [signed-by=/usr/share/keyrings/kopia-keyring.gpg] http://packages.kopia.io/apt/ stable main" \
| sudo tee /etc/apt/sources.list.d/kopia.list
# 4. 再次更新源并安装 kopia
sudo apt update && sudo apt install kopia -y
# 5. 验证是否安装成功
kopia --version

Kopia 创建并连接到 Cloudflare R2存储桶

kopia repository create s3 \
--bucket=你的存储桶名称 \
--endpoint=你的账户ID.r2.cloudflarestorage.com \
--access-key=你的AccessKeyID \
--secret-access-key=你的SecretAccessKey \
--password=你设置的仓库加密密码

Kopia 连接到 Cloudflare R2存储桶

kopia repository create s3 \
--bucket=你的存储桶名称 \
--endpoint=你的账户ID.r2.cloudflarestorage.com \
--access-key=你的AccessKeyID \
--secret-access-key=你的SecretAccessKey \
--password=你设置的仓库加密密码

查看存储桶连接状态:

kopia repository status

一键启动服务(含Web服务,账户密码):

kopia server start --address=0.0.0.0:41515 --insecure --server-username=用户名 --server-password=密码 &

杀死当前 kopia 服务进程:

pkill -f kopia

查看 kopia 服务运行状态:

ps aux | grep kopia

添加系统服务:#

sudo tee /etc/systemd/system/kopia-server.service > /dev/null <<EOF
[Unit]
Description=Kopia Server
After=network.target
[Service]
ExecStartPre=kopia repository connect s3 \
--bucket=你的存储桶名称 \
--endpoint=你的账户ID.r2.cloudflarestorage.com \
--access-key=你的AccessKeyID \
--secret-access-key=你的SecretAccessKey \
--password=你设置的仓库加密密码
ExecStart=kopia server start --address=0.0.0.0:41515 --insecure --server-username=登录用户名 --server-password=登录密码
Restart=on-failure
User=root
[Install]
WantedBy=multi-user.target
EOF
# 先杀掉当前后台进程
pkill -f kopia
# 启用并启动服务
sudo systemctl daemon-reload
sudo systemctl enable --now kopia-server
# 查看状态
sudo systemctl status kopia-server

Kopia 备份、恢复与使用方法#

备份#

查询服务所在文件夹#

查看对应服务的容器挂载路径(把容器名替换成实际名称)

docker inspect 容器名 | grep -A 10 Mounts

例:

docker inspect rss-reader | grep -A 10 Mounts

执行后提示路径:/root/rss-reader/config.json

选择备份路径:/root/rss-reader

查看非 docker 容器服务状态:

systemctl status 服务名

查看 非docker容器 服务详细定义:

systemctl cat 服务名

执行备份命令#

立即创建一次快照

kopia snapshot create /root/rss-reader

定时创建快照

kopia snapshot create 备份文件夹
kopia policy set 备份文件夹 --add-time-of-day=18:00

恢复#

先在新服务器上查看快照列表找到 ID:#

本机快照:

kopia snapshot list

所有快照:

kopia snapshot list --all

恢复命令:

kopia restore 快照ID 备份文件夹

例:快照 ID :k7e2b3c4d5e6f;备份文件夹:/root/rss-reader

kopia restore k7e2b3c4d5e6f /root/rss-reader

kopia 的正确使用方法#

1.设置自动定时备份、自动保留#


2.使用前置/后置脚本(文件夹动作)#

① 快照前填入:(全部容器与指定容器)

备份前停止全部容器:

/bin/bash -c "docker stop $(docker ps -q)"

备份前停止指定容器:

docker stop rss-reader komari

② 快照后填入:(全部容器与指定容器)

备份后重启全部容器:

/bin/bash -c "docker start $(docker ps -a -q --filter status=exited)"

备份后重启容器:

docker start rss-reader komari

3.在备份 root 的时候必须忽略 .config/kopia 目录:#

如果 Kopia 缓存或者配置文件刚好也装在 /root/.config/kopia 里,Kopia 备份 /root 时就会陷入“我自己备份我自己,导致数据无限循环膨胀”的死循环

忽略目录:

.config/kopia/**
.cache/kopia/**
.cache/**
.tmp/**
**/logs/**
*.log

” ** ” 意思是“包含这个目录下所有的子目录、多级子目录以及所有文件”。这是一种更强力、更彻底的递归忽略写法,能确保整个文件夹里的垃圾碎片绝对不会被打包。

.config/kopia/ 和 .cache/kopia/: Kopia 面板在运行期间,会把缓存、临时索引文件源源不断地写进 /root/.config/kopia 和 /root/.cache/kopia 目录里。如果不排除它们,Kopia 在备份 /root 时就会去读这些正在变动的缓存,导致“我自己备份我自己”的死循环,使备份数据无限膨胀并疯狂报错。

.cache/: Linux 系统和各种应用存放运行缓存的地方(比如 Python、各种包管理工具的缓存)。它们全是临时衍生出来的碎片文件,丢了也完全不影响服务恢复,不备份可以极大地提高备份速度。

.tmp/: 系统临时文件的聚集地,重启就失效,没有备份价值。

/logs/ 和 * .log: 屏蔽所有的日志目录和以 .log 结尾的文件。Docker 容器和系统天天都在疯狂打印日志,这些文件体积大、变动极度频繁,而且对于恢复服务毫无帮助,排除掉能帮你省下大量的云端存储桶空间。


4.Command Mode(命令模式)改为 ignore failures(容忍失败):#

服务器上本来就没有任何正在运行的 Docker 容器(或者手动停掉了某些容器),docker stop $(docker ps -q) 这条命令在 Linux 底层执行时会因为“没有接收到任何容器 ID”而返回一个错误状态码(Exit Code 1)。

因为设置了 must succeed,Kopia 这个脚本“报错”了就会立刻中断并取消今天的整个备份任务。

分享

如果这篇文章对你有帮助,欢迎分享给更多人!

Kopia 数据备份
bk90.333797.xyz
作者
瓶子
发布于
2026-06-01
许可协议
CC BY-NC-SA 4.0

部分信息可能已经过时