Ubuntu 22.04 安装 rsnapshot 1.4.3 指南

在 Ubuntu 22.04.5 LTS 上从零安装部署 rsnapshot:apt 仓库主线(1.4.3-2)、上游 deb 离线包(1.4.5-1)、tar.gz 源码(1.5.1)三方案实测,含版本校验、降级、快照根目录与 TAB 配置铁律、cron 定时调度与 ssh 免密远程备份前置、7 组排障 FAQ 与卸载清理。

rsnapshot备份恢复rsnapshot2026/10/22

Ubuntu 22.04 安装 rsnapshot 1.4.3 指南

目标:在 Ubuntu 22.04 服务器上从零完成 rsnapshot 快照备份工具的安装、配置与 cron 定时调度部署,覆盖 apt 在线安装(主线)、上游 deb 离线包、官方 tar.gz 源码三种方案及降级/卸载全流程。本文全部命令与回显均在 Ubuntu 22.04.5 LTS(x86_64)实机逐条实测照抄,实验中远程备份走 ssh 22 端口,不占用任何额外端口。

一、环境信息

  • 操作系统:Ubuntu 22.04.5 LTS(PRETTY_NAME="Ubuntu 22.04.5 LTS"),x86_64;
  • rsnapshot 版本:apt 仓库安装 1.4.3-2(jammy/universe),另实测上游 deb 1.4.5-1 与源码版 1.5.1;
  • 依赖组件(apt 自动带入):Perl 5.34.0(perl:any)、rsync 3.2.7、logrotate、liblchown-perl;
  • 快照根目录(实验环境):/srv/rsnapshot/(生产建议独立磁盘/分区);
  • 网络形态:备份机通过 ssh(22 端口)拉取远端数据,无任何新增监听端口;
  • 远端主机:file-server(Debian 系主机名),备份专用账号 backup,rsync + openssh-server;
  • 实测身份:全部命令以 root 执行。

二、前置条件

2.1 系统与依赖

rsnapshot 本体是 Perl 脚本,运行依赖 rsync、ssh 与基础系统工具。先刷新索引并确认基础依赖就绪(Ubuntu Server 22.04 默认已带 perl 与 ssh 客户端,rsync 由 rsnapshot 包的 Depends 自动带入):

apt-get update
dpkg -l perl rsync | tail -2

实测回显:

ii  perl    5.34.0-3ubuntu1.9   amd64   Larry Wall's Practical Extraction and Report Language
ii  rsync   3.2.7-0ubuntu0.22.04.7  amd64   fast, versatile, remote (and local) file-copying tool

💡 说明:dpkg -s rsnapshot 的 Depends: perl:any, rsync, logrotate, liblchown-perl 表明 apt 安装会自动解决全部依赖,无需手工预装;若要在极简系统上使用,确保 perl、rsync、ssh(openssh-client)三个可执行即可。

2.2 快照根目录规划

快照根目录(snapshot_root)存放全部历史快照,强烈建议使用独立磁盘或分区:硬链接只在快照根内部生效,且快照增长不应挤占系统盘。本实验创建独立目录:

mkdir -p /srv/rsnapshot

⚠️ 注意:snapshot_root 路径必须以 / 结尾(这是 rsnapshot 配置的硬性要求,见第八节);目录属主建议 root,防止普通用户篡改快照内容。

2.3 远端主机要求(仅远程备份需要)

拉取(pull)模型下,被备份端只需满足:

  • 运行 sshd(默认 22 端口)与 rsync(apt install rsync openssh-server);
  • 为备份机配置 ssh 密钥免密登录(专用低权限账号,见第十节);
  • 不需要安装 rsnapshot,不需要开放 22 以外的任何端口。

三、版本选型说明

渠道版本来源适用场景
Ubuntu 22.04 仓库1.4.3-2jammy/universe生产主线:经发行版测试、依赖自动解决、随系统更新
rsnapshot.org 上游 deb1.4.5-1官方下载页需要 1.4 线新修复且想保持 dpkg 管理的离线/内网环境
官方 tar.gz 源码1.5.1(当前最新稳定)rsnapshot.org/downloads需要上游最新特性、自定义安装路径或非 Debian 系主机

选型结论:生产优先 Ubuntu 仓库的 1.4.3-2——rsnapshot 1.4.x 功能成熟、配置格式与 1.5 线兼容(实测 1.5.1 直接读取同一份 /etc/rsnapshot.conf 语法检查通过);上游版本节奏为"多年一大版"(1.4.3 → 1.5.1 跨 5 年),仓库版本的滞后在实际功能上影响很小。

四、方案 A:Ubuntu 官方 apt 仓库在线安装(推荐主线)

4.1 方案说明

使用 Ubuntu 官方 jammy/universe 仓库安装,一条命令完成本体 + 依赖(perl、rsync、logrotate、liblchown-perl)安装,并与 apt 升级体系集成,是绝大多数场景的最佳选择。

4.2 安装命令

DEBIAN_FRONTEND=noninteractive apt-get install -y rsnapshot

实测回显(节选尾部):

Setting up xauth (1:1.1-1build2) ...
Setting up rsnapshot (1.4.3-2) ...
Processing triggers for libc-bin (2.35-0ubuntu3.15) ...

4.3 安装验证

dpkg -l rsnapshot | tail -1
dpkg -s rsnapshot | grep -E "Version|Installed-Size|Depends"
apt-cache policy rsnapshot

实测回显:

ii  rsnapshot      1.4.3-2      all          local and remote filesystem snapshot utility
Version: 1.4.3-2
Installed-Size: 452
Depends: perl:any, rsync, logrotate, liblchown-perl
rsnapshot:
  Installed: 1.4.3-2
  Candidate: 1.4.3-2
  Version table:
 *** 1.4.3-2 500
        500 http://archive.ubuntu.com/ubuntu jammy/universe amd64 Packages
        100 /var/lib/dpkg/status

⚠️ 注意:在 Ubuntu 仓库版上执行 rsnapshot version 或 rsnapshot --version 只会打印一行 rsnapshot、不带版本号(Debian 打包按政策把脚本内 $VERSION 置空):

$ rsnapshot version
rsnapshot

这不是安装失败。确认版本请用 dpkg -l rsnapshot 或 apt-cache policy rsnapshot(实测见上)。上游 deb(第五节)与源码版(第六节)的版本回显则是完整的。

安装完成后系统自带一份可直接用的默认配置 /etc/rsnapshot.conf(约 250 行,绝大多数为注释说明),核心生效项如下(实测 grep -vE "^\s*#|^\s*$" 输出):

config_version	1.2
snapshot_root	/var/cache/rsnapshot/
cmd_cp		/bin/cp
cmd_rm		/bin/rm
cmd_rsync	/usr/bin/rsync
cmd_logger	/usr/bin/logger
retain	alpha	6
retain	beta	7
retain	gamma	4
verbose	2
loglevel	3
lockfile	/var/run/rsnapshot.pid
backup	/home/		localhost/
backup	/etc/		localhost/
backup	/usr/local/	localhost/

要点:默认快照根在 /var/cache/rsnapshot/(改配置指向大盘,见第八节);默认层级名为 alpha/beta/gamma(可自行改成 hourly/daily/weekly/monthly);默认备份 /home、/etc、/usr/local 三个本地目录。

4.4 首次语法检查与首轮快照

rsnapshot configtest

实测回显:

Syntax OK

把 snapshot_root 改到 /srv/rsnapshot/(编辑方法与逐项解释见第八节与本站配置参数详解篇),先试运行再真实执行一次:

rsnapshot -t alpha        # 试运行:只打印等价 shell 命令,不改动任何数据
rsnapshot alpha           # 真实执行第一轮快照
ls /srv/rsnapshot/

实测回显(-t 输出节选):

echo 2086 > /var/run/rsnapshot.pid
/bin/rm -rf /srv/rsnapshot/alpha.5/
mv /srv/rsnapshot/alpha.4/ /srv/rsnapshot/alpha.5/
mv /srv/rsnapshot/alpha.3/ /srv/rsnapshot/alpha.4/
mv /srv/rsnapshot/alpha.2/ /srv/rsnapshot/alpha.3/
mv /srv/rsnapshot/alpha.1/ /srv/rsnapshot/alpha.2/
mv /srv/rsnapshot/alpha.0/ /srv/rsnapshot/alpha.1/
/usr/bin/rsync -a --delete --numeric-ids --relative --delete-excluded \
    --link-dest=/srv/rsnapshot/alpha.1/localhost/ /home/ \
    /srv/rsnapshot/alpha.0/localhost/
...
touch /srv/rsnapshot/alpha.0/

首轮真实执行后:

ls /srv/rsnapshot/

实测回显:

alpha.0

alpha.0 内即可看到与源目录同构的完整文件树——快照已经开始工作了。

五、方案 B:上游官方 deb 离线包安装(断网/升级场景)

5.1 方案说明

rsnapshot.org 提供 Ubuntu/Debian 通用的 all 架构 deb 包(当前 1.4.5-1),适合:内网无 apt 源环境、需要比仓库版更新的 1.4 线修复、或从 1.4.3 平滑升级。deb 包与系统 dpkg 数据库完全兼容,可随时降级回仓库版。

5.2 下载与完整性校验

在能联网的机器(或备份机)上下载 deb 与官方 sha256 文件并校验:

cd /root/pkg
curl -fsSLO http://rsnapshot.org/downloads/rsnapshot_1.4.5-1_all.deb
curl -fsSLO http://rsnapshot.org/downloads/rsnapshot_1.4.5-1_all.deb.sha256
cat rsnapshot_1.4.5-1_all.deb.sha256
sha256sum -c rsnapshot_1.4.5-1_all.deb.sha256

实测回显:

9c75d83eaf64823ed5dab7c2c53202f9ef249b40a6ec39210e1b85bb00b6074c  rsnapshot_1.4.5-1_all.deb
rsnapshot_1.4.5-1_all.deb: OK

包大小约 129 KB(实测 ls -la:-rw-r--r-- 1 root root 129272 ... rsnapshot_1.4.5-1_all.deb),拷贝到目标机即可离线安装。

5.3 离线安装(自动补依赖)

DEBIAN_FRONTEND=noninteractive apt-get install -y /root/pkg/rsnapshot_1.4.5-1_all.deb

实测回显(在已装 1.4.3-2 的机器上原地升级):

(Reading database ... 7496 files and directories currently installed.)
Preparing to unpack .../pkg/rsnapshot_1.4.5-1_all.deb ...
Unpacking rsnapshot (1.4.5-1) over (1.4.3-2) ...
Setting up rsnapshot (1.4.5-1) ...

验证版本与配置兼容性(注意:上游 deb 的版本回显是完整的,还带 git 描述后缀):

dpkg -l rsnapshot | tail -1
rsnapshot version
rsnapshot configtest

实测回显:

ii  rsnapshot      1.4.5-1      all          local and remote filesystem snapshot utility
rsnapshot 1.4.5-5-gaf84984
Syntax OK

上游 1.4.5 直接通过了 1.4.3 时代编写的配置文件语法检查,存量配置无需改写。

5.4 降级回 Ubuntu 仓库版

dpkg 高版本会拦截低版本覆盖,需显式允许降级:

DEBIAN_FRONTEND=noninteractive apt-get install -y --allow-downgrades rsnapshot=1.4.3-2

实测回显:

Preparing to unpack .../rsnapshot_1.4.3-2_all.deb ...
Unpacking rsnapshot (1.4.3-2) over (1.4.5-1) ...
Setting up rsnapshot (1.4.3-2) ...

验证已回到仓库版(版本回显恢复为"无版本号"形态):

dpkg -l rsnapshot | tail -1
rsnapshot version

实测回显:

ii  rsnapshot      1.4.3-2      all          local and remote filesystem snapshot utility
rsnapshot

六、方案 C:官方 tar.gz 源码安装(获取最新版 1.5.1)

6.1 方案说明

当需要上游最新稳定版(本文实测 1.5.1)或部署到无 deb 体系的 Linux 主机时,走源码安装。rsnapshot 是纯 Perl 脚本,"编译"只是生成与拷贝文件,无真正的 C 编译环节,但 ./configure 需要 make 与基础构建工具。

6.2 安装构建工具与下载校验

apt-get install -y make gcc curl
mkdir -p /usr/local/src && cd /usr/local/src
curl -fsSLO http://rsnapshot.org/downloads/rsnapshot-1.5.1.tar.gz
curl -fsSLO http://rsnapshot.org/downloads/rsnapshot-1.5.1.tar.gz.sha256
sha256sum -c rsnapshot-1.5.1.tar.gz.sha256

实测回显:

rsnapshot-1.5.1.tar.gz: OK

6.3 解压、配置、安装

tar xzf rsnapshot-1.5.1.tar.gz
cd rsnapshot-1.5.1
./configure --prefix=/usr/local --sysconfdir=/etc
make
make install

实测回显(configure 尾部节选与 make install 尾部节选):

Then type "make install" to install the program.

After rsnapshot is installed, don't forget to copy
/rsnapshot.conf.default to /rsnapshot.conf
...
 /usr/bin/mkdir -p '/etc'
 /usr/bin/install -c -m 644 rsnapshot.conf.default '/etc'
 /usr/bin/mkdir -p '/usr/local/share/man/man1'
 /usr/bin/install -c -m 644 rsnapshot.1 rsnapshot-diff.1 '/usr/local/share/man/man1'
make[1]: Leaving directory '/usr/local/src/rsnapshot-1.5.1'

安装产物:/usr/local/bin/rsnapshot、/usr/local/bin/rsnapshot-diff、/etc/rsnapshot.conf.default、man 手册。验证版本:

/usr/local/bin/rsnapshot version

实测回显:

rsnapshot 1.5.1

6.4 与发行版包共存与取舍

$PATH 中 /usr/local/bin 先于 /usr/bin,装完源码版后 which rsnapshot 会指向 1.5.1:

which rsnapshot

实测回显:

/usr/local/bin/rsnapshot

源码版 1.5.1 读取仓库版配置完全兼容:

/usr/local/bin/rsnapshot -c /etc/rsnapshot.conf configtest

实测回显:

Syntax OK

💡 说明:若要临时或永久切回发行版包,删除源码版文件即可恢复 PATH 指向 /usr/bin/rsnapshot(1.4.3-2)。cron 里的命令建议始终写绝对路径(如 /usr/bin/rsnapshot),避免 PATH 变化导致版本漂移。

6.5 源码版卸载

在源码目录执行 make uninstall:

cd /usr/local/src/rsnapshot-1.5.1 && make uninstall

实测回显:

 ( cd '/usr/local/bin' && rm -f rsnapshot rsnapshot-diff )
 ( cd '/usr/local/share/man/man1' && rm -f rsnapshot.1 rsnapshot-diff.1 )
 ( cd '/etc' && rm -f rsnapshot.conf.default )
which rsnapshot

实测回显(已切回仓库版):

/usr/bin/rsnapshot

七、方案对比与选择建议

维度A:apt 仓库(主线)B:上游 debC:源码 tar.gz
版本1.4.3-21.4.5-11.5.1(最新稳定)
是否需联网需(apt 源)下载一次即可离线下载一次即可离线
依赖处理自动(Depends 全解)apt-get install ./deb 自动补手工装 make/gcc/curl
包管理集成apt 完整管理、随系统升级dpkg 管理、可降级无包管理,需 make uninstall
配置文件来源自带可用默认 /etc/rsnapshot.conf沿用原配置落 /etc/rsnapshot.conf.default 需自行改名/编辑
适用场景绝大多数生产环境内网/离线、要 1.4 线新修复要最新特性、非 Debian 系主机

选择建议:能联网选 A;断网或要指定版本选 B(记得 sha256 校验);需要 1.5.1 新特性或非 Debian 系选 C。三者配置文件格式完全兼容,切换成本低。

八、快照根目录与主配置说明

8.1 最小可用配置

编辑 /etc/rsnapshot.conf,一份生产可用的最小配置只需以下条目(本实验环境的实测配置骨架):

config_version	1.2
snapshot_root	/srv/rsnapshot/
no_create_root	1
cmd_cp		/bin/cp
cmd_rm		/bin/rm
cmd_rsync	/usr/bin/rsync
cmd_ssh		/usr/bin/ssh
cmd_logger	/usr/bin/logger
cmd_du		/usr/bin/du
retain		hourly	6
retain		daily	7
retain		weekly	4
retain		monthly	3
verbose		2
loglevel	3
logfile		/var/log/rsnapshot.log
lockfile	/var/run/rsnapshot.pid
rsync_long_args	--delete --numeric-ids --relative --delete-excluded
link_dest	1
backup		/etc/		localhost/
backup		/home/demo/	localhost/

逐项说明:

  • config_version 1.2:配置语法版本声明,固定 1.2;
  • snapshot_root:快照存放根,必须以斜杠结尾;建议独立磁盘/分区;
  • no_create_root 1:快照根不存在时报错退出而不是自动创建(防止挂载点未挂上时把快照写到系统盘上);
  • cmd_*:外部工具绝对路径,cmd_ssh 用于远程备份点(纯本地备份可不配);
  • retain <名称> <数量>:快照层级与保留份数,名称可自定义;hourly 是最低层级(真正执行 rsync 的一层);
  • logfile / lockfile:运行日志与并发锁文件路径;
  • rsync_long_args:透传给 rsync 的长参数,详见本站配置参数详解篇(多参数写法有经典坑:参数之间用空格,整段值与参数名之间只用一个 TAB);
  • link_dest 1:启用 rsync --link-dest 硬链接复用(rsync ≥ 2.5.7 均支持,保持默认开启);
  • backup <源> <目标点>:备份条目,源为绝对路径(本地)或 user@host:/path(远程),目标点是快照内的挂载名。

8.2 TAB 分隔铁律(新手第一坑)

rsnapshot 配置解析器只认 TAB 作为字段分隔符,用空格分隔会直接报错。实测把 snapshot_root 一行的 TAB 换成空格后运行 rsnapshot configtest:

----------------------------------------------------------------------------
rsnapshot encountered an error! The program was invoked with these options:
/usr/bin/rsnapshot configtest
----------------------------------------------------------------------------
ERROR: /etc/rsnapshot.conf on line 2:
ERROR: snapshot_root /srv/rsnapshot/ - missing tabs to separate words - \
         change spaces to tabs.
ERROR: /etc/rsnapshot.conf on line 21:
ERROR: backup /etc/ localhost/ - snapshot_root needs to be defined before \
         backup points
ERROR: ---------------------------------------------------------------------
ERROR: Errors were found in /etc/rsnapshot.conf,
ERROR: rsnapshot can not continue. If you think an entry looks right, make
ERROR: sure you don't have spaces where only tabs should be.

解法:报错行改回 TAB 分隔(vim 可用 :set noexpandtab 后按 Tab 键输入;cat -A /etc/rsnapshot.conf | grep snapshot_root 检查应看到 ^I 而非空格)。更多逐参数实测解释见本专栏的配置参数详解篇。

8.3 配置生效验证

rsnapshot configtest

实测回显:

Syntax OK

配置改动后先 configtest 再 -t 试运行,是 rsnapshot 的标准操作序列。

九、cron 定时调度部署

rsnapshot 无守护进程,完全由 cron 驱动。写入 /etc/cron.d/rsnapshot(官方推荐节奏:低层级高频、高层级低频,且高层级要排在前面):

# /etc/cron.d/rsnapshot — rsnapshot 定时快照调度
SHELL=/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

0 */4 * * *	root	/usr/bin/rsnapshot hourly
50 23 * * *	root	/usr/bin/rsnapshot daily
40 23 * * 6	root	/usr/bin/rsnapshot weekly
0 23 1 * *	root	/usr/bin/rsnapshot monthly

节奏解读:每 4 小时整点做 hourly(0/4/8/12/16/20 点共 6 轮,对应 retain hourly 6);每天 23:50 把最老的 hourly 转入 daily;每周六 23:40 转 weekly;每月 1 日 23:00 转 monthly。高层级(daily/weekly/monthly)必须安排在低层级轮转之后执行,才能接到"最老的一份"。

启动并验证 cron 服务:

service cron start
service cron status

实测回显:

 * Starting periodic command scheduler cron
   ...done.
 * cron is running

💡 验证技巧:cron 是否真的在按 /etc/cron.d 执行,可临时加一个每分钟的探针任务实测。把动作写进脚本再由 cron 调用(避开 crontab 内联命令的 % 坑,见 FAQ):

# /usr/local/bin/cron-proof.sh
#!/bin/bash
/bin/date +"cron-fired: %F %T" >> /tmp/cron-proof.log
* * * * *	root	/usr/local/bin/cron-proof.sh

实测 1 分钟后 /tmp/cron-proof.log 出现(17:44:12 为手工执行、17:45:01 为 cron 触发,cron 生效实证):

cron-fired: 2026-10-21 17:44:12
cron-fired: 2026-10-21 17:45:01

验证完删除探针任务与日志文件。逐子命令与轮转方向的完整实测见本专栏的 CLI 命令详解篇。

十、远程备份前置:ssh 免密配置

rsnapshot 采用拉取模型,备份机需要能用密钥直接登录被备份端。本实验以备份机 root 到远端 file-server 的专用账号 backup 为例:

  1. 备份机生成密钥对(已有可跳过):
ssh-keygen -t ed25519 -N "" -f /root/.ssh/id_ed25519 -C "root@backup-server"
  1. 把公钥写入远端 backup 账号的 ~/.ssh/authorized_keys(内容为上一步 /root/.ssh/id_ed25519.pub),并收紧权限:
chmod 700 /home/backup/.ssh
chmod 600 /home/backup/.ssh/authorized_keys
chown -R backup:backup /home/backup/.ssh
  1. 备份机验证免密直通(首次会提示确认主机指纹,实测输入 yes 后):
ssh -o BatchMode=yes backup@file-server "whoami && hostname && ls /srv/appdata/"

实测回显:

backup
file-server
app.conf
blob.img
logs
  1. 在配置里加入远程备份点即可(backup backup@file-server:/srv/appdata/ file-server/),ssh_args -o BatchMode=yes 可避免交互卡住 cron 任务。远端数据随后即出现在快照树的 file-server/ 挂载名下。

十一、常见问题(FAQ)

Q1:rsnapshot version 只输出 rsnapshot,没有版本号,是不是装坏了?

不是。Ubuntu 仓库包按 Debian 打包政策把脚本内 $VERSION 置空,实测 1.4.3-2 的 rsnapshot version 回显就一行 rsnapshot。确认版本用 dpkg -l rsnapshot(回显 ii rsnapshot 1.4.3-2 ...)或 apt-cache policy rsnapshot。上游 deb(1.4.5-1,回显 rsnapshot 1.4.5-5-gaf84984)与源码版(1.5.1,回显 rsnapshot 1.5.1)则带完整版本号。

Q2:配置明明看起来对,configtest 却报 missing tabs to separate words - change spaces to tabs.

配置字段之间必须用 TAB 分隔,用空格就会触发该报错(实测完整回显见 8.2 节)。用 cat -A 检查报错行:TAB 显示为 ^I。修复即把空格改成 TAB。

Q3:执行时报 Lockfile /var/run/rsnapshot.pid exists and so does its process, can not continue?

已有另一轮 rsnapshot 在跑(或锁文件残留且其 PID 对应的进程仍存活)。先确认:cat /var/run/rsnapshot.pid 得到 PID,ps -p <PID> 查看进程——若是正在跑的 rsnapshot 就等它结束;若进程已死属于陈旧锁,直接删除锁文件 rm -f /var/run/rsnapshot.pid 后重跑。实测发现 rsnapshot 默认对"PID 已不存在"的陈旧锁会自动清理并继续:

WARNING: Removing stale lockfile /var/run/rsnapshot.pid
WARNING: About to remove lockfile /var/run/rsnapshot.pid which belongs to a different process: 12345 (this is OK if it's a stale lock)

仅当锁内 PID 仍存活时才拒绝执行(退出码 1)。可用 stop_on_stale_lockfile 1 收紧为"陈旧锁也不自动清"。

Q4:no_create_root 1 时启动报错 rsnapshot refuses to create snapshot_root when no_create_root is enabled?

这是该参数的设计行为:快照根不存在时拒绝自动创建(防止独立盘未挂载时把快照写进系统盘)。实测完整报错:

ERROR: /srv/rsnapshot-ncr does not exist.
ERROR: rsnapshot refuses to create snapshot_root when no_create_root is enabled

手工 mkdir -p <snapshot_root> 后重跑即可;若希望自动建目录,把 no_create_root 设为 0(实测设 0 后自动创建并完成快照)。

Q5:cron 里写了 rsnapshot 但到点不执行,或行为怪异?

两个高频根因:(1) % 在 crontab 中表示换行,内联带 % 的命令会被截断(如 date +"%F" 只执行到 % 前)——把复杂动作写成脚本、cron 只调脚本路径(实测见第九节探针验证法);(2) cron 环境 PATH 极简,rsnapshot 命令请写绝对路径 /usr/bin/rsnapshot。

Q6:装了源码版后 which rsnapshot 变成 /usr/local/bin,版本行为不一致?

/usr/local/bin 在 PATH 中优先,源码版会"遮住"仓库版。统一版本:执行 make uninstall(实测回显见 6.5 节)或全员使用绝对路径。生产 cron 建议固定 /usr/bin/rsnapshot。

Q7:远程备份点首次运行失败 Permission denied (publickey)?

拉取模型的免密前提没配好。逐项检查:远端 sshd 在跑;~/.ssh 权限 700、authorized_keys 权限 600 且属主正确;备份机 ssh -o BatchMode=yes user@host 能直通(实测回显见第十节)。用 ssh -v user@host 可看到公钥尝试过程定位问题。

十二、卸载与清理

# 1. 停用 cron 调度
rm -f /etc/cron.d/rsnapshot

# 2. 卸载软件包(--purge 连同 /etc/rsnapshot.conf 一起删除)
DEBIAN_FRONTEND=noninteractive apt-get purge -y rsnapshot

# 3. 确认卸载
dpkg -l rsnapshot 2>/dev/null | tail -1 || echo "rsnapshot 已卸载"

实测回显(purge 尾部节选):

Removing rsnapshot (1.4.3-2) ...
Processing triggers for man-db (2.10.2-1) ...
rsnapshot 已卸载

快照数据不会随包卸载删除,确认不再需要后手工清理:

rm -rf /srv/rsnapshot /var/log/rsnapshot.log

源码版额外清理:源码目录 make uninstall(见 6.5 节)后删除 /usr/local/src/rsnapshot-1.5.1*。

十三、参考链接