文章目录
- 简介
- 文档
- 版本
- Linux(CentOS8)部署
- Windows部署
- 报错解决
-
- [Centos8 yum 官方源下线后无法使用问题](#Centos8 yum 官方源下线后无法使用问题)
- rsyncd.conf配置详解
简介
Linux(CentOS8)为服务端,Windows为客户端
Windows端并用脚本控制备份
官网:https://www.itefix.net/cwrsync
文档
rsync服务端及客户端使用手册
详见该专栏内
rsync Windows端powershell脚本及bat批处理文件编写教程
详见该专栏内
版本
Linux端版本:3.1.3-12.el8
Windows端版本:cwrsync_6.3.1_x64_free
Linux(CentOS8)部署
- 安装
bash
yum -y install rsync
# 检查是否安装成功,有参数提示输出则表示成功
rsync --version
- 创建所需文件夹
bash
mkdir -p /var/run/rsync/
- 创建并编辑配置文件
bash
touch /etc/rsync/rsyncd.conf
vim /etc/rsync/rsyncd.conf
rsyncd.conf内容,最后有详解
xml
port = 873
uid = root
gid = root
use chroot = false
strict modes = true
max connections = 100
timeout = 1800
pid file = /var/run/rsync/rsyncd.pid
lock file = /var/run/rsync/rsync.lock
log file = /var/log/rsyncd.log
transfer logging = true
log format= "%o [%a] %m (%u) %f %l %b %c"hosts allow
reverse lookup = false
[test]
path = /home
ignore errors = true
read only = true
write only = false
list = true
hosts allow =*
hosts deny = 0.0.0.0/0.0.0.0
auth users = root
secrets file = /etc/rsync/rsyncd.secrets
- 创建并编辑密钥文件
bash
touch /etc/rsync/rsyncd.secrets
vim /etc/rsync/rsyncd.secrets
密钥文件内容,用户:密码
ini
root:pass1234
- 创建并编辑rsync程序控制脚本文件
bash
touch /home/rsync_control.sh
vim /home/rsync_control.sh
# 添加可执行权限
chmod u+x /home/rsync_control.sh
控制脚本文件内容
shell
#!/bin/bash
# rsync 守护进程的配置文件和PID文件位置
CONFIG_FILE="/etc/rsync/rsyncd.conf"
PID_FILE="/var/run/rsync/rsyncd.pid"
# 函数:启动 rsync 守护进程
function start_rsync() {
if [ -f "$PID_FILE" ] && kill -0 `cat $PID_FILE` > /dev/null 2>&1; then
echo "rsync is already running (PID=$(cat $PID_FILE))"
else
/usr/bin/rsync --daemon --config=$CONFIG_FILE
if [ $? -eq 0 ]; then
echo "rsync started successfully"
if [ -f "$PID_FILE" ]; then
echo "PID file exists, rsync might have started in background."
else
echo "Warning: PID file $PID_FILE does not exist, ensure rsync was started correctly."
fi
else
echo "Failed to start rsync"
fi
fi
}
# 函数:停止 rsync 守护进程
function stop_rsync() {
if [ -f "$PID_FILE" ] && kill -0 `cat $PID_FILE` > /dev/null 2>&1; then
kill `cat $PID_FILE`
if [ $? -eq 0 ]; then
echo "rsync stopped successfully"
rm -f $PID_FILE
else
echo "Failed to stop rsync"
fi
else
echo "rsync is not running or PID file $PID_FILE does not exist"
fi
}
# 解析命令行参数
case "$1" in
start)
start_rsync
;;
stop)
stop_rsync
;;
restart)
stop_rsync
sleep 2
start_rsync
;;
status)
if [ -f "$PID_FILE" ] && kill -0 `cat $PID_FILE` > /dev/null 2>&1; then
echo "rsync is running (PID=$(cat $PID_FILE))"
else
echo "rsync is not running"
fi
;;
*)
echo "Usage: $0 {start|stop|restart|status}"
exit 1
esac
- 运行 rsync
bash
/home/rsync_control.sh start
Windows部署
-
下载
-
创建文件夹并解压至内
我这里放在,D:\rsync\
-
创建环境变量(可选)(变量值为你创建文件夹的路径)
添加环境变量后可在任意目录内执行rsync命令
变量名:SYNCHOME
变量值:D:\rsync\
-
创建密钥文件rsyncd.password
文件编码注意是ANSI
此文件推荐存放在rsync内的bin目录内
文件内容为服务端密钥文件内的密码,我这里是pass1234
-
系统变量Path内新增(可选)
%SYNCHOME%\bin
-
验证
打开cmd执行,软件介绍输出则为成功
rsync --version
-
测试与服务端链接
注意:
在 Windows 系统下使用 cwRsync,在指定文件夹路径时,在真实目录前添加 /cygdrive/ 即可,比如 D:\cwRsync 可用 /cygdrive/D/cwRsync 表示。
打开cmd执行,能够获取到服务端指定目录内的文件列表表示成功
rsync --password-file=/cygdrive/d/sync/bin/rsyncd.password root@192.168.2.24::test
--password-file为密钥文件
root为服务端密钥文件内的用户
IP地址为你的Linux服务器地址
test为服务端配置文件内的模块名称 -
执行备份
rsync_command=rsync -avz --delete --progress --password-file=/cygdrive/d/sync/bin/rsyncd.password root@192.168.2.24::test /cygdrive/d/backup/backup
test后的地址为备份文件存放地址
报错解决
Centos8 yum 官方源下线后无法使用问题
- 现象
bash
CentOS-8 - Base - mirrors.aliyun.com 299 B/s | 2.3 kB 00:07
Errors during downloading metadata for repository 'base':
- Status code: 404 for https://mirrors.aliyun.com/centos/8/BaseOS/x86_64/os/repodata/repomd.xml (IP: 39.96.118.194)
- Curl error (7): Couldn't connect to server for http://mirrors.aliyuncs.com/centos/8/BaseOS/x86_64/os/repodata/repomd.xml [Failed to connect to mirrors.aliyuncs.com port 80: Connection timed out]
- Status code: 404 for http://mirrors.cloud.aliyuncs.com/centos/8/BaseOS/x86_64/os/repodata/repomd.xml (IP: 100.100.2.148)
Error: Failed to download metadata for repo 'base': Cannot download repomd.xml: Cannot download repodata/repomd.xml: All mirrors were tried
- 解决
bash
# 备份所有的.repo文件
mv /etc/yum.repos.d/ /etc/yum.repos.d_bak && mkdir /etc/yum.repos.d/
# 重新下载可用配置(二选一)
# 使用wget
wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo
# 若未安装wget,可使用curl
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo
# 运行 dnf makecache 生成缓存
dnf makecache
rsyncd.conf配置详解
官网解释:https://download.samba.org/pub/rsync/rsyncd.conf.5
ini
# 默认端口
port=8730
# 服务运行时的用户
uid=root
# 服务运行时的用户组
gid=root
# rsync daemon 在传输前是否切换到指定的 path 目录下,并将其监禁在内,用于增加传输的安全性
use chroot=no
# 为true:rsync daemon进程运行时使用的用户ID外,其他任何用户ID都不能读取rsyncd.secrets
strict modes = true
# 指定最大连接数量,0表示没有限制
max connections=100
# 确保rsync服务器不会永远等待一个前渍的客户端,0表示永远等待
timeout = 1800
# 指定rsync daemon的pid文件
pid file = /var/run/rsync/rsyncd.pid
# 指定锁文件
lock file = /var/run/rsync/rsync.lock
# 指定rsync的日志文件,而不把日志发送给syslog
log file = /var/log/rsyncd.log
# 启用按文件记录下载和上传
transfer logging = true
# 定义日志格式
log format= "%o [%a] %m (%u) %f %l %b %c"hosts allow
# 控制rsync daemon是否对客户端的 IP 地址执行反向查找以确定其主机名,默认启用,禁用后将使用UNDETERMINED
reverse lookup = false
# 要同步的模块(可以有多个),这里一般以项目名命名
[test]
# 同步的目标文件夹
path = /home
# 该参数告诉 rsyncd 在决定是否运行传输的删除阶段时忽略守护进程上的 I/O 错误
ignore errors = true
# 该参数决定客户端是否能够上传文件
read only = true
# 该参数决定客户端是否能够下载文件
write only = false
# 该参数决定当客户端请求可用模块列表时是否列出该模块
list = true
# 指定允许连接到该模块的ip,多个1p用空格隔开或者设置区间
单ip:hosts allow =192.168.1.1;ip区间:192.168.1.0/24
hosts allow =*
# 指定不允许连接到该模块的ip或区间
hosts deny = 0.0.0.0/0.0.0.0
# 进行验证时的用户名,必须是系统存在的用户
auth users = root
# 连接用户时的密码
secrets file = /etc/rsync/rsyncd.secrets
参考:
https://blog.csdn.net/cjiankai/article/details/131000345
https://blog.51cto.com/u_16099248/10410599
https://xiashuo.xyz/posts/devops/ssh_ssl/rsync_from_windows_to_linux/