阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

FreeBSD系统下rsync + SSH增量备份文件

432次阅读
没有评论

共计 4518 个字符,预计需要花费 12 分钟才能阅读完成。

有两台机器,姑且一台叫服务器,一台叫备份机。要怎么样才能每天或是定期地,把服务器的数据整个复制到备份机呢?这里就要用到 rsync 的强大功能了。

rsync 在每次传输的时候会先检查远程的档案清单,只传输远程有更新的档案,所以只有第一次跑的时候会用掉比较多的时间,往后再执行就很快了。它也支援 ssh 传输,所以安全基本上是可靠的。

要怎么实作呢?

首先我们先定义,服务器的 DN 叫作 server.linuxidc.com,(当然我家没有这台机器 = =);备份机的 DN 叫作 backup.linuxidc.com。我在两边的账户名称都是 xiaochen。

一、初试。

首先两边都要装 rsync。通常 FreeBSD 是在 /usr/ports/net/rsync,如果不是在这里的话,自己 whereis rsync 找找看吧。找到之后直接 cd 进去,make install clean  就行了。

安装完成当然是要先执行 rehash 才能立即更新指令列表。接着,以 xiaochen 登入到 backup.linuxidc.com,写一支小小的 Bourne Shell 来试试看 rsync 能不能运作,就放在 /home/xiaochen/rsync.sh 好了(记得要 chmod +x 喔):

[档案开始,不包含此一行]

#!/bin/sh

#!/bin/sh
RSYNC=/usr/local/bin/rsync
SSH=/usr/bin/ssh
RUSER=xiaochen
RHOST=server.linuxidc.com
RPATH=/home/xiaochen/test
LPATH=/mnt/database/fileserver/mirror.linuxidc.com
$RSYNC -e “$SSH” -avzP –delete $RUSER@$RHOST:$RPATH $LPATH

[档案结束,不包含此一行]

其变量解说如下:

* RSYNC 是 rsync 执行文件所在的路径;每台机器不见得一样,你得用 whereis rsync 找到它。
* SSH 是 ssh 执行文件所在的路径,当然你也要用 whereis ssh 来找
* RUSER 是我在 server.yorkxin.org 的账户名称
* RHOST 是伺服机的 Domain Name 或是 IP
* RPATH 是伺服机中『欲备份到备料机的路径』。在 rsync 的过程中会把整个子目录都丢过来,所以你只要指定最顶的路径就行了。
* LPATH 指的是我在 backup.yorkxin.org,『欲摆放备料档案的路径』。

a: 保持文件的所有属性

v: 执行时显示信息

z: 同步时压缩文件

p: 显示执行过程

最后一行写得很恶心,其实就是 rsync 的指令加参数,用法是

rsync [参数] 远程使用者 @远程机器: 远程路径 本机路径

参数说明如下:

* -e 后面跟一坨字符串,表示我们要用不一样的方法来登入伺服机,例如 ssh 或是 rsh。
* -a 是『封存』(archive);老实说我不知道这是什么意思 Orz
* -z 是要 rsync 在传输的过程中压缩,节省时间
* –delete (两个 dash 喔) 是要 rsync『遇到远程(伺服机) 已删掉的档案,就把本机 (备料机) 的相同档案也删掉』。这对于 snapshot 倒是颇方便的。

存盘之后,chmod +x,先跑一次试试看(当然我要先在家目录 mkdir);这第一次执行会把服务器(远程) 指定路径的所有档案都复制到备份机(本机),我们在这里先跑一次,接下来要试也比较省时间。

二、免打密码的 SSH 联机

既然是开工作排程给它定时备份,总不能说每次都要人工输入密码吧。还好 ssh 提供了密钥认证的方式,接下来我要做一对认证密钥,分别放在备料机和伺服机,以便于双方在透过 ssh 做 rsync 备份的时候,可以不必人工输入密码。

1. 生 SSH Key Pair

在备料机 backup.linuxidc.com (本机)输入以下指令:[两行请接在一起]

ssh-keygen -t dsa -b 1024 -f /home/xiaochen/.ssh/

当然最后一个参数 (-f,指定生成档案),你可以自己指定。

会出现以下的讯息,这里没什么要输入的文字,只是你要按两次 Enter:

Generating public/private dsa key pair.
Enter passphrase (empty for no passphrase): [直接按 enter]
Enter same passphrase again: [直接按 enter]
Your identification has been saved in /home/xiaochen/.ssh/id_dsa.
Your public key has been saved in /home/xiaochen/.ssh/id_dsa.key.pub.
The key fingerprint is:
96:0a:51:79:c2:a5:f3:6d:36:81:fb:31:08:16:f7:b7 xiaochen@backup.linuxidc.com

完成后你会看到两个档案:

* /home/xiaochen/.ssh/id_dsa 这是私钥 (私钥,要小心不能流出)
* /home/xiaochen/.ssh/id_dsa.pub 这是公钥 (公钥)

2. 让伺服机收下公钥

再来要把公钥 (.id_dsa.pub) 放到目标服务。你可以用 FTP 传,不过既然你已经在工作站了,那就用 SSH 的 SCP 吧,指令如下:[两行请接在一起]

scp /home/xiaochen/.ssh/id_dsa.pub xiaochen@server.linuxidc.com:~/

按下 Enter 后会要求输入密码,以便 scp 以 ssh 登入伺服机 (server.linuxidc.com)。

完成之后,就可以到伺服机 (server.linuxidc.com) 操作了。我以 xiaochen 身份登入到 server.linuxidc.com。(所以以下的动作都是在 server.linuxidc.com 这台伺服机里,以 xiaochen 身份操作)

1) 如果没有 ~/.ssh/ 这个目录的话,自己用 mkdir 生一个 .ssh/ 文件夹,在家目录里面,并且 chmod 成 700。(注意文件夹名称前面要有一个 `.‘)

2) 把刚刚用 scp 丢过来的 .id_dsa.pub 移动到 ~/.ssh/ 里面:

mv .id_dsa.pub ~/.ssh/authorized_keys

做到这里,其实备料机 (backup.linuxidc.com) 就可以透过免打密码的 SSH 认证,直接 ssh 联机到伺服机 (server.linuxidc.com) 了。但是这种联机会『允许所有来源、允许所有指令』,所以现在要改一下。

三、限制密钥认证 SSH 联机的来源和权力

以下的动作也都是在 server.linuxidc.com 进行

1. 编辑 ~/.ssh/authorized_keys 这个档案,在第一个字 (ssh-dss) 前面加入

from=”backup.linuxidc.com”,command=”/home/xiaochen/validate-rsync”

记得这一坨字和“ssh-dss”这个单字之间要空一格。from 就是 backup.linuxidc.com 的 DN 或 IP,command 则是我放验证 SSH Command 的脚本文件的位置。

2. 接着要做验证脚本文件,这个例子中就是 /home/xiaochen/validate-rsync 这个档案,记得存盘后要 chmod +x:

[档案开始,不包含此一行]

#!/bin/sh

case “$SSH_ORIGINAL_COMMAND” in
*\&*)
echo “Rejected”
;;
*\(*)
echo “Rejected”
;;
*\{*)
echo “Rejected”
;;
*\;*)
echo “Rejected”
;;
*\<*)
echo “Rejected”
;;
*\`*)
echo “Rejected”
;;
*\|*)
echo “Rejected”
;;
rsync\ –server*)
$SSH_ORIGINAL_COMMAND
;;
*)
echo “Rejected”
;;
esac

[档案开始,不包含此一行]

要注意,虽然现在 ssh 联机认证已经限制了可用的指令,但只要拿到私钥,一样可以从 backup 这台机器登入到 server,可以复制所有可存取的档案,所以私钥要小心不能流出去。

四、加入密钥信息

现在回到 backup.linuxidc.com。编辑刚刚在步骤 一、里面做的 /home/xiaochen/rsync.sh,因为现在要加入密钥信息。大概改成这样:

[档案开始,不包含此一行]
#!/bin/sh

RSYNC=/usr/local/bin/rsync
SSH=/usr/bin/ssh
KEY=/home/xiaochen/id_dsa.key  # 私钥路径
#[加入上面这一行,当然你要改成你的私钥路径]
RUSER=xiaochen
RHOST=192.168.10.235
RPATH=/home/xiaochen/test
LPATH=/mnt/database/fileserver/mirror.linuxidc.com
$RSYNC -e “$SSH -i $KEY” -avzP –delete $RUSER@$RHOST:$RPATH $LPATH

 

#  最后一行的『指令』要加入 -i $KEY 这个参数,在  $SSH 的后面,中间空一格。

[档案结束,不包含此一行]

然后执行一次,看看有没有正常。

如果一切正常的话,其实你可以把 rsync.sh 最后一行指令里面的 -avz 参数改成 -az,毕竟 -v 是我们要『边抓边看进度』的时候在用的。

五、加入工作排程

在 backup.linuxidc.com 以 xiaochen 身份执行 crontab -e,加入

0 5 * * * /home/xiaochen/rsync.sh

这是在每日 05:00 执行一次,当然你可以改成别的时间。

————————————– 分割线 ————————————–

Rsync+inotify 实现 Git 数据实时同步备份 http://www.linuxidc.com/Linux/2014-10/108298.htm

Rsync 实现文件备份同步详解 http://www.linuxidc.com/Linux/2014-09/106967.htm

Rsync 同步两台服务器 http://www.linuxidc.com/Linux/2014-09/106574.htm

CentOS 6.5 下 Rsync 远程同步 http://www.linuxidc.com/Linux/2014-05/101084.htm

Ubuntu Linux 下用 Rsync 进行数据备份和同步配制 http://www.linuxidc.com/Linux/2014-03/97592.htm

Linux 使用 Rsync 客户端与服务端同步目录进行备份 http://www.linuxidc.com/Linux/2014-02/97068.htm

Rsync 的详细介绍:请点这里
Rsync 的下载地址:请点这里

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-20发表,共计4518字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19360
评论数
4
阅读量
8532334
文章搜索
热门文章
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
星哥带你玩飞牛NAS-7:手把手教你免费内网穿透-Cloudflare tunnel

星哥带你玩飞牛NAS-7:手把手教你免费内网穿透-Cloudflare tunnel

星哥带你玩飞牛 NAS-7:手把手教你免费内网穿透 -Cloudflare tunnel 前言 大家好,我是星...
如何免费使用强大的Nano Banana Pro?附赠邪修的用法

如何免费使用强大的Nano Banana Pro?附赠邪修的用法

如何免费使用强大的 Nano Banana Pro?附赠邪修的用法 前言 大家好,我是星哥,今天来介绍谷歌的 ...
150元打造低成本NAS小钢炮,捡一块3865U工控板

150元打造低成本NAS小钢炮,捡一块3865U工控板

150 元打造低成本 NAS 小钢炮,捡一块 3865U 工控板 一块二手的熊猫 B3 工控板 3865U,搭...
星哥带你玩飞牛NAS-5:飞牛NAS中的Docker功能介绍

星哥带你玩飞牛NAS-5:飞牛NAS中的Docker功能介绍

星哥带你玩飞牛 NAS-5:飞牛 NAS 中的 Docker 功能介绍 大家好,我是星哥,今天给大家带来如何在...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
星哥带你玩飞牛NAS-13:自动追番、订阅下载 + 刮削,动漫党彻底解放双手!

星哥带你玩飞牛NAS-13:自动追番、订阅下载 + 刮削,动漫党彻底解放双手!

星哥带你玩飞牛 NAS-13:自动追番、订阅下载 + 刮削,动漫党彻底解放双手! 作为动漫爱好者,你是否还在为...
自己手撸一个AI智能体—跟创业大佬对话

自己手撸一个AI智能体—跟创业大佬对话

自己手撸一个 AI 智能体 — 跟创业大佬对话 前言 智能体(Agent)已经成为创业者和技术人绕...
每年0.99刀,拿下你的第一个顶级域名,详细注册使用

每年0.99刀,拿下你的第一个顶级域名,详细注册使用

每年 0.99 刀,拿下你的第一个顶级域名,详细注册使用 前言 作为长期折腾云服务、域名建站的老玩家,星哥一直...
星哥带你玩飞牛NAS-16:飞牛云NAS换桌面,fndesk图标管理神器上线!

星哥带你玩飞牛NAS-16:飞牛云NAS换桌面,fndesk图标管理神器上线!

  星哥带你玩飞牛 NAS-16:飞牛云 NAS 换桌面,fndesk 图标管理神器上线! 引言 哈...
4盘位、4K输出、J3455、遥控,NAS硬件入门性价比之王

4盘位、4K输出、J3455、遥控,NAS硬件入门性价比之王

  4 盘位、4K 输出、J3455、遥控,NAS 硬件入门性价比之王 开篇 在 NAS 市场中,威...

免费图片视频管理工具让灵感库告别混乱

一言一句话
-「
手气不错
飞牛NAS升级到最新版,有线无法获取IP、无线网络莫名打开的BUG问题

飞牛NAS升级到最新版,有线无法获取IP、无线网络莫名打开的BUG问题

  飞牛 NAS 升级到最新版,有线无法获取 IP、无线网络莫名打开的 BUG 问题 星哥的飞牛 N...
如何安装2026年最强个人助理ClawdBot、完整安装教程

如何安装2026年最强个人助理ClawdBot、完整安装教程

如何安装 2026 年最强个人助理 ClawdBot、完整安装教程 一、前言 学不完,根本学不完!近期,一款名...
三大开源投屏神器横评:QtScrcpy、scrcpy、escrcpy 谁才是跨平台控制 Android 的最优解?

三大开源投屏神器横评:QtScrcpy、scrcpy、escrcpy 谁才是跨平台控制 Android 的最优解?

  三大开源投屏神器横评:QtScrcpy、scrcpy、escrcpy 谁才是跨平台控制 Andr...
云服务器部署OpenClaw:轻量应用服务器+钉钉和QQ机器人

云服务器部署OpenClaw:轻量应用服务器+钉钉和QQ机器人

  云服务器部署 OpenClaw:轻量应用服务器 + 钉钉和 QQ 机器人 一、前言 最近开源圈爆...
零成本上线!用 Hugging Face免费服务器+Docker 快速部署HertzBeat 监控平台

零成本上线!用 Hugging Face免费服务器+Docker 快速部署HertzBeat 监控平台

零成本上线!用 Hugging Face 免费服务器 +Docker 快速部署 HertzBeat 监控平台 ...