使用 RustFS和 Arq,打造 PC 数据安全备份之道

Arq 是一个对 mac 和 windows 数据进行备份的软件,支持将 PC 本地数据备份至云端服务,AWS、Google Cloud,当然也支持备份至 S3 兼容的服务。

RustFS 作为 S3 兼容的分布式对象存储服务,可以将其作为 Arq 的数据备份存储后端。

前提

  • 一个可用的 RustFS 实例;
  • 安装配置好的 Arq;

配置

RustFS 安装

RustFS 支持多种安装方式,包括脚本、Docker、Helm Chart,一键即可完成安装。本文采用 Docker 安装方式,将如下内容写入 docker-compose.yml 文件:

复制代码
services:
  traefik:
    image: traefik:v3.6.5
    container_name: traefik
    command:
      - --log.level=DEBUG
      - --accesslog=true
      - --api.insecure=true              
      - --providers.docker=true
      - --providers.docker.endpoint=unix:///var/run/docker.sock
      - --providers.docker.exposedbydefault=false
      - --entrypoints.web.address=:80
      - --entrypoints.websecure.address=:443
      - --providers.docker.network=rustfs
      - --certificatesresolvers.le.acme.email=rustfs@com
      - --certificatesresolvers.le.acme.storage=/etc/traefik/acme.json
      - --entrypoints.web.http.redirections.entrypoint.to=websecure
      - --entrypoints.web.http.redirections.entrypoint.scheme=https
      - --certificatesresolvers.le.acme.httpchallenge=true
      - --certificatesresolvers.le.acme.httpchallenge.entrypoint=web
    ports:
      - "80:80"
      - "443:443"
      - "8443:8443"
      - "8080:8080"  # Traefik Dashboard (http://localhost:8080)
    labels:
      - "traefik.enable=true"
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock:ro
      - ./acme.json:/etc/traefik/acme.json
    networks:
      - rustfs

  rustfs:
    image: rustfs/rustfs:1.0.0-alpha.79
    container_name: rustfs-traefik
    hostname: rustfs
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.rustfs.rule=Host(`example.rustfs.com`)"
      - "traefik.http.routers.rustfs.entrypoints=websecure"
      - "traefik.http.routers.rustfs.tls.certresolver=le"
      - "traefik.http.services.rustfs.loadbalancer.server.port=9001"
      - "traefik.http.routers.rustfs.tls=true"
      - "traefik.http.routers.rustfs.priority=100"
    environment:
      - RUSTFS_VOLUMES=/data
      - RUSTFS_ADDRESS=0.0.0.0:9000
      - RUSTFS_CONSOLE_ENABLE=true
      - RUSTFS_CONSOLE_ADDRESS=0.0.0.0:9001
      - RUSTFS_ACCESS_KEY=rustfsadmin
      - RUSTFS_SECRET_KEY=rustfsadmin
      - RUSTFS_SERVER_DOMAINS=example.rustfs.com
      - RUST_LOG=warn
    ports:
      - "9000:9000"  # API endpoint
      - "9001:9001"  # Console
    volumes:
      - ./data:/data

    networks:
      - rustfs

networks:
  rustfs:
    driver: bridge
    name: rustfs
  • 注意
  • 安装过程中使用了 volume 对数据进行持久化,需要在同级目录下创建一个 data 目录,同时将其权限修改为 10001:10001,否则启动会导致权限问题;
  • 需要将 example.rustfs.com、example@com 替换为正确信息;

执行如下命令完成 RustFS 安装:

复制代码
docker compose up -d

通过 https://example.rustfs.com 来访问 RustFS 实例,默认用户名和密码为 rustfsadmin/rustfsadmin

配置 Arq

打开 Arq,点击 Create a backup plan

选择 Add Storage Location ,并选择 S3-Compatible Server ,然后输入 RustFS 的信息:

其中:

  • Server URL:RustFS 实例地址,比如 https://example.rustfs.com
  • Access Key ID/Secret Access Key:RustFS 密钥,均为 rustfsadmin/rustfsadmin;
  • Bucket Name :存储数据的存储桶名称,这个需要提前在 RustFS 实例上创建好,比如就叫做 Arq;

点击 Continue ,输入加密需要的密码:

继续点击 Continue ,并选择你期望的备份计划:

以备份某个文件夹为例,选择 Add Folder ,创建一个需要备份的文件夹,此后此文件夹下面的数据会被备份至 RustFs 的 arq 存储桶下面,选择 Save 即可:

可以看到完整的备份计划:

开始备份

将需要备份的数据放在 arq 目录下,然后点击 Back Up Now 即可,可以看到备份过程和日志:

在 RustFS 上查看 arq 存储桶下面是否有数据:

可以看到 Arq 中的数据已经被备份到了 RustFS 实例。

当然,可以根据自身需求配置不同的备份计划,这样即使 PC 出现了问题,也不用担心数据丢失了。

相关推荐
修己xj7 小时前
GoTab:打造属于你自己的个性化浏览器新标签页
开源
蝎子莱莱爱打怪13 小时前
XZLL-IM干货系列 03|消息 ID 设计:一个 UUID 搞不定的事,我用两个 ID 解决了
后端·面试·开源
冬奇Lab15 小时前
每日一个开源项目(第137篇):Penpot - 真正开源的设计协作工具,SVG 原生格式消灭设计-开发鸿沟
前端·开源·设计
星栈20 小时前
Dioxus 多页面怎么做:`dioxus-router`、嵌套路由、`Outlet` 和页面组织,一篇给你讲顺
前端·rust·前端框架
武子康2 天前
调查研究-183 Apple container:Mac 上用轻量 VM 跑 Linux 容器,Swift 会改写本地容器体验吗?
docker·容器·apple
秋播2 天前
国内本地WSL2编译rancher源码
云原生
冬奇Lab2 天前
每日一个开源项目(第135篇):codebase-memory-mcp - 给 AI Agent 一张代码库的知识图谱
人工智能·开源·llm
Rust研习社2 天前
组合真的优于继承吗?为什么 Rust 和 Go 都拥抱组合舍弃继承?
后端·rust·编程语言
uniquejing3 天前
《每次 API 调用前扔掉 43% Token,我开源了一个 AI 提示词瘦身工具》
开源
小猿姐3 天前
MySQL Top 10 热点问题 AI 运维实战:从内核诊断到云原生运维
mysql·云原生·aiops