教程目标
在 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
。 - 解决方法:
- 检查服务器的 Rsync是否正在运行:
ps aux | grep rsync
- 检查服务器防火墙是否开放了 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
- 如果使用
- 检查服务器的 Rsync是否正在运行:
7.2 认证失败
- 问题:提示
auth failed
。 - 解决方法:
- 检查
/etc/rsyncd.secrets
文件中的用户名和密码是否正确。 - 检查客户端的
~/.rsync/rsync.password
文件内容是否正确。
- 检查
7.3 权限不足
- 问题:提示
Permission denied
。 - 解决方法:
- 确保服务器上的共享目录(如
/www/wwwroot
和/www/backup/database
)对www
用户有读取权限。 - 确保客户端使用的用户名和密码在服务器的
auth users
列表中。
- 确保服务器上的共享目录(如
总结
通过以上步骤,你可以在 Linux 客户端上安装 rsync
,并成功同步宝塔面板环境服务器上的网站数据到本地。以下是关键点:
- 确保 Rsync 服务在服务器上正常运行。
- 配置客户端的认证文件,并确保权限正确。
- 使用
rsync
命令进行数据同步,并根据需要设置定时任务。 - 如果遇到问题,可以通过日志和错误提示进行排查。
发表留言 取消回复