技术积累
日进一寸

NAS全平台同步神器Rsync

nas玩久了,数据就多起来了,还有些数据非常重要

之前跟大家分享过,数据备份的三二一原则,三份相同的数据,我们需要让nas自行的进行完整的备份,至少每天一次。

对于普通文档类数据,备份只是把数据备份出来,不需要考虑文件的属性

但是对于一些应用类数据,比如docker用到的文件,如果备份的文件权限变了,等你需要复制回去进行应用恢复的时候就会发现各种权限带来的问题

所以备份是需要专用工具的,而不是直接的复制粘贴

rsync正是数据同步的神器,而且在大部分的nas系统上,rsync几乎是标配,我们只需要学会使用它

Rsync是一款开源的、快速的、多功能的、可实现全量及增量(全量备份是指全部备份,增量备份是在上一次备份的基础上只备份更新的内容)的本地货远程数据同步备份的优秀工具。Rsync可以在大部分的操作系统上安装运行,包括windows。

rsync可以根据同步文件的大小和修改时间等信息来判断文件是否需要同步,从而实现增量备份,而且能够同步文件的属性信息来确保文件的元信息一致。

rsync有三种模式

1、本地模式比较简单,跟我们的复制粘贴一样,但是不同处在于它可以复制文件的属性、属主等权限类信息,非常牛批

2、shell模式,就是通过ssh命令实现文件的同步,这里的ssh命令特指linux系的操作系统,也就是说通过ssh命令获取对端的shell权限来进行同步

这个模式是linux系统中比较常用的同步模式,因为这种同步不需要对端做任何的修改,只需要开放ssh即可

3、daemon模式,是守护进程的方式传输数据,需要搭建服务

daemon模式是nas上比较常用的模式,但是ssh模式也是可以的

全局域网只需要有一台rsync服务,就可以让所有的rsync客户端实现数据的定时同步,非常方便

OMV中rsync使用

首先是omv,就是点点点就行

创建用户,创建目录,赋予权限

开启服务,设置账户和目录

rsync -av gits/ [email protected]::backup

群晖中rsync使用

首先需要开启ssh

群晖比较简单,打开后台,找到文件服务的rsync,开启22,注意,这里开启的是ssh模式

这样就开启了rsync服务

如果将群晖作为客户端使用需要去套件中间,安装backup

在shell中测试,gits是需要备份的目录,后面是目标路径,这里是群晖

rsync -av gits/ [email protected]::backup

不过还是建议使用daemon模式,群晖开启daemon模式也需要去命令行里操作

# 创建用户
rsync_backup
注意还要让用户对需要同步的目录有读写权限
/volume1/storages/omv_backup/ 

配置文件


uid             = rsync_backup
gid             = 0
use chroot      = no
max connections = 4
pid file        = /var/run/rsyncd.pid
timeout         = 600
auth users = rsync_backup
secrets file = /etc/rsync.password
[backups_synology]
    path = /volume1/storages/omv_backup/
    comment = Backups_omv
    read only = FALSE

创建密码文件/etc/rsync.password,权限600

rsync_backup:123456

然后去控制面板关闭rsync,再开启,实现重启。

unraid中rsync使用

unraid内置了rsync,但是没有提供操作界面,我们可以通过命令行来启动rsync服务

具体的操作也要去命令行里操作

考虑到unraid系统的特殊性,建议将unraid作为服务器使用

创建目录

mkdir -p /boot/custom/etc/
mkdir -p /boot/custom/etc/rc.d

 将rsyncd.conf文件同时放到/boot/custom/etc/etc下,两份一样内容。

rsyncd.conf文件,内容:

uid             = rsync_backup
gid             = rsync_backup
use chroot      = no
max connections = 4
pid file        = /var/run/rsyncd.pid
timeout         = 600
auth users = rsync_backup
secrets file = /etc/rsync.password

[backups_synology]
    path = /mnt/user/backup/synology
    comment = Backups_synology
    read only = FALSE
[backups_omv]
    path = /mnt/user/backup/omv/
    comment = Backups_omv
    read only = FALSE

创建密码文件

useradd rsync_backup -s /sbin/nologin -M
mkdir /mnt/user/backup/omv -p

chown rsync_backup.rsync_backup /mnt/user/backup

echo "rsync_backup:123456">/etc/rsync.password

chmod 600 /etc/rsync.password # 注意权限

将配置持久化(unraid操作)

touch /boot/custom/etc/rc.d/S20-init.rsyncd

内容如下:
S20-init.rsyncd

#!/bin/bash
if ! grep ^rsync /etc/inetd.conf > /dev/null ; then
cat <<-EOF >> /etc/inetd.conf
rsync   stream  tcp     nowait  root    /usr/sbin/tcpd  /usr/bin/rsync --daemon
EOF
read PID < /var/run/inetd.pid
kill -1 ${PID}
fi
cp /boot/custom/etc/rsyncd.conf /etc/rsyncd.conf

这是初始化文件,因为unraid在重启后会丢失配置,需要将配置初始化到flash中。

编辑初始化文件

vi /boot/config/go

将下面的内容放在末尾,后续每次执行初始化,都会初始化rsync服务端的配置

/boot/custom/etc/rc.d/S20-init.rsyncd

如果此时rsync没有运行

ps aux|grep rsync
# 如果没运行
rsync --daemon

大家可以根据自己的nas系统与操作系统组合,选择合适的rsync搭配方案

选择能够方便的进行定时任务的设备作为客户端,客户端可以作为数据源推送数据到服务器,也可以从rsync服务器拉取数据进行同步

也就是说,rsync客户端的选择与源数据在哪台设备上并没有关系

windows中rsync使用

我们首先安装windows版,方便没有linux客户端的朋友进行测试

windows系统安装rsync服务

cwRsync4.2.0下载地址:https://www.jb51.net/softs/39404.html?spm=a2c6h.12873639.article-detail.5.1aa02876MqUwGv

https://www.itefix.net/cwrsync

链接:https://pan.baidu.com/s/1CnY_6DQPLWahb9OqY9Xr4g 
提取码:5r2a 

下载rsync

下载解压后,得到server和client,根据需要安装

windows版rsync server,安装完成后,进入安装的目录,安装路径下默认配置rsyncd.conf

# C:\Program Files (x86)\ICW

use chroot = false
strict modes = false
hosts allow = *   #允许任意IP
lock file = rsyncd.lock 
max connections = 5
port = 28950   #指定端口号
charset=UTF-8  #指定字符集
#pid = 0
uid = 0    #运行rsync守护进程的用户 0为不限制
gid = 0    #运行rsync守护进程的组   0为不限制
log file = rsyncd.log  #日志文件存放位置
 
# Module definitions
# Remember cygwin naming conventions : c:\work becomes /cygwin/c/work
#
#[test]
#path = /cygdrive/c/work
#read only = false
#transfer logging = yes
 
[data]
path = /cygdrive/f/backup
auth users = zhangdaqi       #指定授权用户名
secrets file = etc/rsyncd.secrets  #指定密码存储文件
read only = no         
transfer logging = yes
hosts allow = *

特殊之处在于路径,这里要注意。确保指定的path存在,我这里设置的是F:\backup

/cygdrive/c/work 相当于c:/work 

通过 菜单–cwRsyncServer–02. Prep a Dir for Upload 设置目录权限,需要设置成600,也就是指定的用户可以读写,其他用户和用户组都没有权限。

密码文件rsyncd.secrets的格式是 用户名:密码

rsyncuser:rsyncpass

需将其权限设置为600,即其他组没有读权限。同时要保证用户cwRsyncServer既是该文件拥有者又对其具有读写权限。

此处需要确保账户zhangdaqi存在,如果没有就创建一个

修改完毕后,win+R 跳出输入框,输入services.msc就可以打开服务,去win 的服务中启动cwrsync。

windows客户端

这里最好是把rsync 客户端(注意,不是服务端)的路径加到环境变量中,不然操作的时候需要带着rsync的绝对路径,不是很方便

在windows cmd中执行命令

rsync -vzrtopg --progress --delete [email protected]::test /cygdrive/d/rsyncBackup --password-file=/cygdrive/c/etc/rsyncd.secrets

(–password-file也可以写前边)

rsyncd.secrets密码文件,名字随便起,格式,只写密码

rsyncpass

设置密码访问权限chown.exe可从服务端拷贝过来

同样的,目录权限需要设置成600,也就是指定的用户可以读写,其他用户和用户组都没有权限。

chmod -c 600 /cygdrive/c/etc/rsyncd.secrets
chown administrator /cygdrive/c/etc/rsyncd.secrets

可访问局域网中所有的rsync服务,包括windows、unraid等标准rsync服务。

rsync -vzrtopg --progress --delete /cygdrive/d/rsyncBackup/ 192.168.1.82::test

rsync -vzrtopg --progress --delete /cygdrive/d/rsyncBackup/ [email protected]::test --password-file=/cygdrive/c/etc/rsyncd.secrets

掌握了rsync,定时同步重要数据,可保数据无忧

我是张大七,下期再见。

赞(0)
未经允许不得转载:DongVPS » NAS全平台同步神器Rsync
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址