CrashPlan

出自 ArchWiki

CrashPlan 是一个 备份程序,可以将数据备份到远程服务器、其他计算机或硬盘驱动器。备份到云服务器需要每月订阅。

安装

安装 crashplan-proAUR

使用

在访问 CrashPlan 的图形用户界面之前,您应该启动 crashplan-pro.service 单元。

CrashPlan 可以完全通过其图形用户界面进行配置。要启动图形界面

$ CrashPlanDesktop

要使 CrashPlan 在系统启动时自动启动,启用 systemd 单元。

在无头服务器上

在无头服务器上运行 CrashPlan 并非官方支持。但是,这是有可能实现的。

CrashPlan 守护程序的配置文件(位于 /opt/crashplan/conf 中)采用晦涩的 XML 格式,旨在通过 CrashPlan 客户端以编程方式进行编辑。

CrashPlan 5 引入了一个新的客户端,但不幸的是,它取消了对使用本地客户端配置远程服务器的支持,因此您需要使用 X11 转发。

通过 SSH 进行 X11 转发

确保在无头服务器的 /etc/ssh/sshd_config 中将 X11Forwarding 设置为 yes,并从另一台运行 X11 的机器,使用 -Y SSH 连接到无头机器,并在远程 shell 中运行 CrashPlanDesktop。无头机器的窗口将出现在本地 X11 服务器上。如果遇到问题,请检查 /opt/crashplan/log/ui_error.log

本地客户端

在 CrashPlan v4.x 及更低版本中,客户端和守护程序默认通过端口 4243 进行通信。因此,在无头服务器上配置 CrashPlan 守护程序的一种简单方法是创建 SSH 隧道

  1. 启动 服务器上的 CrashPlan 守护程序。
  2. 创建 SSH 隧道。在客户端上:ssh -N -L 4243:localhost:4243 headless.example.com
  3. 启动 CrashPlan 客户端。(同样,可执行文件名为 CrashPlanDesktop。)

请注意,本地和远程服务器上的身份验证令牌(位于 /var/lib/crashplan/.ui_info 中)必须匹配。更多想法可以在以下网站上找到

  • CrashPlan 支持站点 详细介绍了一种稍微复杂的方法,通过 SSH 隧道将流量从客户端(CrashPlan Desktop)隧道传输到守护程序(CrashPlan Engine)。
  • Bryan Ross 的一篇帖子详细介绍了如何使 CrashPlan Desktop 直接连接到 CrashPlan Engine。请注意,此方法可能不如通过 SSH 隧道传输流量安全。

故障排除

等待备份

如果备份卡在“等待备份”状态,即使您手动启动它,也可能是 CrashPlan 无法访问 tempdir 或它被挂载为 noexec。它使用默认的 Java tmp 目录,通常是 /tmp。您可以删除 noexec 挂载选项(不推荐)或更改 CrashPlan 正在使用的 tmpdir。

要更改 CrashPlan 使用的 tmpdir,请打开 /opt/crashplan/bin/run.conf 并在 SRV_JAVA_OPTS 中插入 -Djava.io.tmpdir=/new-tempdir,例如

SRV_JAVA_OPTS="-Djava.io.tmpdir=/var/tmp/crashplan -Dfile.encoding=UTF-8 …

确保创建新的 tmpdir 并验证 CrashPlan 的用户有权访问它。

# mkdir /var/tmp/crashplan

重启 CrashPlan。

恢复卡在准备中

如果恢复卡在“准备中”,可能是由于 /tmp 上的权限限制导致恢复工具和备份引擎之间的通信失败。这可能是由 sysctl 变量 fs.protected_fifos 引起的,该变量限制引擎(以 root 身份运行)连接到 /tmp 中包含的桌面用户拥有的命名管道(类似于 tmpfs#以 root 身份打开 tmpfs 中的符号链接失败)。

可以禁用保护以允许进行恢复,方法是

# sysctl fs.protected_fifos=0

systemd 自 241 版本起默认将此选项设置为 1;有关如何正确更改它的信息,请参阅 systemd 文档,并参阅 Sysctl 以获取更多信息。

内存不足

对于包含大量文件的备份集,默认的最大堆大小可能不够大,因为所需的内存会随着要备份的文件数量而增加。如果服务器内存不足,它将静默重启,并且通常会卡在重启过程中,因为它不断达到内存限制。要增加堆大小限制,请在 /opt/crashplan/bin/run.conf 中将 -Xmx 选项调整为适合您系统的合理值。

实时保护

如果您为备份集使用实时保护并且有大量文件要备份,则默认系统配置可能无法分配所有必需的句柄来实时跟踪所有文件。此问题可能会在 syslog 日志中表现为“inotify_add_watch: No space left on device”。CrashPlan 支持部门在此处提供了说明 这里[死链 2023-04-23 ⓘ],描述了如何将 inotify max_user_watches 修改为更大的值以解决此问题。但是您不能直接按照他们的说明操作,您需要在 /etc/sysctl.d 中创建一个新文件,因为 systemd 现在忽略 /etc/sysctl.conf。有关更多信息,请参阅 sysctl#配置

JRE 版本更新

如果在升级期间,CrashPlan 尝试升级自安装的 JRE 版本,并且升级始终无法通过从 CrashPlan 下载 JRE(在 logs/upgrade<unique_number>.log 中检查,最后一条消息是 curl/wget 获取“最新”JRE tgz),则可以停止 CrashPlan,手动下载 JRE(从升级日志中获取),并将 CrashPlan 安装中的 jre 文件夹替换为升级版本。这应该允许 CrashPlan 顺利通过尝试升级 JRE 的阶段。

$ cd <crashplan/install/dir>
$ ./bin/CrashPlanEngine stop
$ rm -rf jre
$ curl <jre url from crashplan log>
$ tar xzvf <jre.tgz>
$ ./bin/CrashPlanEngine start

参见