教程目标

在 Linux 服务端上安装 rsync 。
在 Linux 客户端上安装 rsync 并配置客户端与服务端进行通讯
在群晖nas中将服务器上的网站数据同步到群晖中的指定目录。

1.各端安装rsync同步工具的命令​

在 Linux 客户端上安装 rsync 的命令取决于您使用的发行版。以下是常见系统的安装方法:


1. Debian/Ubuntu 及其衍生版

sudo apt update
sudo apt install rsync

2. Red Hat/CentOS/RHEL

CentOS 7/8 或 RHEL 7/8:

sudo yum install rsync

CentOS 8+/RHEL 8+ 或 Fedora:

sudo dnf install rsync

3. Arch Linux/Manjaro

sudo pacman -S rsync

4. openSUSE

sudo zypper install rsync

5. macOS

通过 Homebrew 安装(推荐):

brew install rsync

验证安装

安装完成后,检查版本以确保安装成功:

rsync --version

输出示例:

rsync  version 3.2.3  protocol version 31

2.在服务端添加rsync配置文件

在服务端利用宝塔文件管理器新建配置文件确保文件存在且配置正确,否则服务可能无法启动。

新建

[wwwroot]
path=/www/wwwroot
use chroot=no
max connections=10
read only=yes
write only=no
list=yes
uid=root
gid=root
auth users=username-对应你的密码文件中的用户名
secrets file=/etc/rsyncd.secrets
hosts allow=*
address = 0.0.0.0 
ignore errors=yes
timeout=120
[database]
path=/www/backup/database
use chroot=no
max connections=10
read only=yes
write only=no
list=yes
uid=root
gid=root
auth users=username-对应你的密码文件中的用户名
secrets file=/etc/rsyncd.secrets hosts allow=* ignore errors=yes address = 0.0.0.0 timeout=120

1. 配置文件整体结构​​

配置文件定义了两个模块:

  • [wwwroot] :用于共享 /www/wwwroot 目录。
  • [database] :用于共享 /www/backup/database 目录。
  • path=/www/wwwroot ​​

    • 需要确保 /www/wwwroot 目录存在,并且 root 用户( uid=root )有权限访问该目录。
    • 检查目录权限:
      ls -ld /www/wwwroot
      如果权限不足,可以设置为:
      chown www:www /www/wwwroot
      chmod 755 /www/wwwroot
  • ​​ use chroot=no ​​

    • 禁用 chroot 是可以的,但如果启用了 chroot ,需要确保 /www/wwwroot 及其上级目录在 chroot 环境中是可访问的。
    • 如果不需要 chroot ,保持 no 即可。
  • ​​ read only=yes ​​

    • 设置为 yes 表示只读,客户端无法上传文件。
    • 如果你希望客户端能够上传文件,需要将其改为 no 。
  • ​​ write only=no ​​

    • 设置为 no 表示客户端可以下载文件。
    • 如果你希望客户端只能上传文件而不能下载文件,改为 yes 。
  • ​​ list=yes ​​

    • 设置为 no 表示客户端无法通过 rsync 命令列出模块内容(如 rsync --list-only )。
    • 如果设为 no
    • 如果你希望客户端能够列出模块内容,可以将其改为 yes 。
  • ​​ uid=www 和 gid=www ​​

    • 确保 www 用户和 www 组存在,并且有权限访问 /www/wwwroot 目录。
  • ​​ auth users=username ​​

    • 确保 /etc/rsyncd.secrets 文件中包含 username 用户及其密码,例如:
      username:yourpassword
    • 确保 /etc/rsyncd.secrets 文件的权限为 600 :
      chmod 600 /etc/rsyncd.secrets
  • ​​ strict modes=yes ​​

    • 启用 strict modes 意味着 rsync 会检查 secrets file 和共享目录的权限。
    • 确保 /etc/rsyncd.secrets 文件的权限为 600 ,并且共享目录的权限不允许其他用户写入。
  • ​​ hosts allow=* ​​

    • 允许所有主机访问。
    • 如果需要限制访问来源,可以将其改为具体的 IP 地址或网段,例如:
      hosts allow=192.168.1.0/24
  • ​​ address = 0.0.0.0 ​​

    • 表示监听所有网络接口。
    • 如果服务器有多个网卡,并且你希望限制只监听某个网卡,可以将其改为具体的 IP 地址,例如:
      address = 192.168.1.100
  • ​​ ignore errors=yes ​​

    • 忽略传输中的错误。
    • 如果你不希望忽略错误,可以将其改为 no 。
  • ​​ timeout=120 ​​

    • 设置超时时间为 120 秒。
    • 如果网络较慢,可以适当增加超时时间。

2:在 Linux 客户端上安装 rsync​​

​​1.1 检查是否已安装 rsync​​

在终端运行以下命令,检查 rsync 是否已安装:

rsync --version

如果显示版本号,则说明已安装;如果没有安装,请继续以下步骤。

​​1.2 安装 rsync​​

根据你的 Linux 发行版,使用以下命令安装 rsync :

​​Debian/Ubuntu 系统​​

sudo apt update
sudo apt install rsync -y

​​CentOS/RHEL 系统​​

sudo yum install epel-release -y
sudo yum install rsync -y

​​AlmaLinux/Rocky Linux 系统​​

sudo dnf install epel-release -y
sudo dnf install rsync -y

​​步骤 2:测试与 Rsync 服务器的连接​​

​​2.1 测试 Rsync 服务是否可用​​

在客户端上运行以下命令,测试是否可以连接到 Rsync 服务器:

rsync username@<服务器IP>::wwwroot
  • 替换 <服务器IP> 为你的 Rsync 服务器的 IP 地址。
  • 如果连接成功,你会看到共享模块 wwwroot 的简要信息。

​​可能的问题​​

  • 如果提示 Connection refused 或 No route to host ,检查服务器的防火墙是否开放了 Rsync 端口(默认 873)。
  • 如果提示 auth failed ,检查 /etc/rsyncd.secrets 文件中的用户名和密码是否正确。

​​步骤 3:配置 Rsync 客户端密码认证文件​​

​​3.1 创建认证文件​​

在客户端上创建一个文件,用于存储 Rsync 服务器的用户名和密码。你也可以使用宝塔文件管理直接编辑创建,例如:

mkdir -p ~/.rsync
echo "username:yourpassword" > ~/.rsync/rsync.password
  • 替换 yourpassword 为你在服务器 /etc/rsyncd.secrets 文件中为 username 用户设置的密码。

​​3.2 设置文件权限​​

确保认证文件的权限仅对当前用户可读:

chmod 600 ~/.rsync/rsync.password

​​步骤 4:同步服务器数据到本地​​

​​4.1 同步 wwwroot 模块​​

运行以下命令,将服务器上的 /www/wwwroot 目录同步到本地的目标目录(例如 __CODE_STANDALONE_START__/home/user/www_backup__CODE_STANDALONE_END__):

rsync -avz --progress --password-file=~/.rsync/rsync.password username@<服务器IP>::wwwroot /home/user/www_backup/
  • -a :归档模式,保留文件属性(、时间戳等)。
  • -v :显示详细信息。
  • -z :启用压缩传输,减少网络带宽占用。
  • --progress :显示传输进度。
  • --password-file :指定认证文件路径。
  • 替换 <服务器IP> 为你的 Rsync 服务器的 IP 地址。
  • 替换 /home/user/www 为你希望存储同步数据的本地目录。

​​4.2 同步 database 模块​​

运行以下命令,将服务器上的 /www/backup/database 目录同步到本地的目标目录(例如 __CODE_STANDALONE_START__/home/user/db_backup__CODE_STANDALONE_END__):

rsync -avz --progress --password-file=~/.rsync/rsync.password username@<服务器IP>::database /home/user/db_backup/

​​步骤 5:定时同步(可选)​​

如果你希望定期同步服务器数据,可以使用 cron 设置定时任务。

​​5.1 编辑定时任务​​

运行以下命令编辑 cron 配置:

crontab -e

​​5.2 添加定时任务​​

在文件末尾添加以下内容,表示每天凌晨 2 点同步一次:

0 2 * * * rsync -avz --progress --password-file=~/.rsync/rsync.password username@<服务器IP>::wwwroot /home/user/www_backup/
0 3 * * * rsync -avz --progress --password-file=~/.rsync/rsync.password username@<服务器IP>::database /home/user/db_backup/
  • 第一行表示每天凌晨 2 点同步 wwwroot 模块。
  • 第二行表示每天凌晨 3 点同步 database 模块。

​​5.3 保存并退出​​

保存文件后, cron 会自动加载定时任务。


​​步骤 6:验证同步结果​​

​​6.1 检查同步目录​​

运行以下命令,检查本地同步目录是否包含服务器上的数据:

ls -l /home/user/www_backup/
ls -l /home/user/db_backup/

​​6.2 检查同步日志​​

如果需要记录同步日志,可以在 rsync 命令中--log-file` 参数:

rsync -avz --progress --password-file=~/.rsync/rsync.password --log-file=/home/user/rsync.log username@<服务器IP>::wwwroot /home/user/www_backup/

日志文件将存储在 /home/user/rsync.log 中。


​​步骤 7:常见问题排查​​

​​7.1 连接失败​​

  • ​​问题​​:提示 Connection refused 或 No route to host 。
  • ​​解决方法​​:
    1. 检查服务器的 Rsync是否正在运行:
      ps aux | grep rsync
    2. 检查服务器防火墙是否开放了 Rsync 端口(默认 873):
      • 如果使用 firewalld :
        firewall-cmd --add-service=rsync --permanent
        firewall-cmd --reload
      • 如果使用 iptables :
        iptables -A INPUT -p tcp --dport 873 -j ACCEPT
        service iptables save

​​7.2 认证失败​​

  • ​​问题​​:提示 auth failed 。
  • ​​解决方法​​:
    1. 检查 /etc/rsyncd.secrets 文件中的用户名和密码是否正确。
    2. 检查客户端的 ~/.rsync/rsync.password 文件内容是否正确。

​​7.3 权限不足​​

  • ​​问题​​:提示 Permission denied 。
  • ​​解决方法​​:
    1. 确保服务器上的共享目录(如 /www/wwwroot 和 /www/backup/database )对 www 用户有读取权限。
    2. 确保客户端使用的用户名和密码在服务器的 auth users 列表中。

​​总结​​

通过以上步骤,你可以在 Linux 客户端上安装 rsync ,并成功同步宝塔面板环境服务器上的网站数据到本地。以下是关键点:

  1. 确保 Rsync 服务在服务器上正常运行。
  2. 配置客户端的认证文件,并确保权限正确。
  3. 使用 rsync 命令进行数据同步,并根据需要设置定时任务。
  4. 如果遇到问题,可以通过日志和错误提示进行排查。

点赞(0)

留言列表 共有 0 条留言

暂无留言

微信公众账号

微信扫一扫加关注

发表
留言
返回
顶部