以前比较喜欢源码编译的方式来安装各种的软件。后来发现,有些软件的源码自己根本就没看过,也不准备去更改一下它的代码和配置,所以还不如直接就用YUM安装的方式。这样做最大的好处是不耽误时间。
另外,我没有更改CentOS Linux 8的默认包管理软件(默认是:DNF),以下所有的YUM操作,都是用DNF来完成的,我只是习惯用YUM方式而已。
Rsync服务会开启一个873/tcp的端口(port),要在防火墙上开启这个端口。关于防火墙的安装与管理,请参考下面这个文件:
CentOS Linux 8运行了防火墙就能防止一切攻击了吗?怎么安装/配置防火墙Firewall?
针对内网IP开启873/tcp端口(port)的命令如下:
firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.1/24" port protocal="tcp" port="873" accept'
运行以下指令安装
yum -y install rsync
mkdir -p /log/rsync #建立日志目录
创建运行中需要用到的目录
mkdir -p /log/rsync/
mkdir -p /data/rsync/conf/
mkdir -p /data/rsync/run/
修改配置文件,执行命令:
vi /etc/rsyncd.conf
录入下列文件内容:
uid = root
gid = root
port = 873
#use chroot = no #是否可以改变同步的根目录
#read only = yes #只读或者可以上传文件
#hosts allow=192.168.1.220
#hosts deny=*
# transfer logging = yes
#motd file = /data/rsync/conf/motd
# log format = %t %a %m %f %b
# syslog facility = local3
# timeout = 300
max connections = 200
pid file = /data/rsync/run/rsyncd.pid
lock file = /data/rsync/run/rsync.lock
log file = /log/rsync/rsyncd.log
[wwwroot]
path = /wwwroot
comment = lg69_rsync
read only = yes
auth users = pusher
secrets file = /data/rsync/conf/server.pass
hosts allow = 192.168.1.0/24,59.151.1.0/24,211.151.133.0/24,58.221.35.0/24,125.76.249.0/24
# list=yes
# ignore errors
# exclude = test/ test.php
编辑服务端密码文件
vi /data/rsync/conf/server.pass #此文件为服务器端使用;列出可以登录的用户名和密码
内容如下:
pusher:4d6b256f7f8e97287413a68cebe1ad7c
编辑客户端密码文件
vi /data/rsync/conf/client.pass #此文件为客户端使用;登录的密码,与server.pass内容对应
内容如下:
4d6b256f7f8e97287413a68cebe1ad7c
配置不可被同步的文件内容
vi /data/rsync/conf/site.exclude.list #不可被同步的文件列表
内容就像下面的这样就可以
test/user
login.php
login
chmod 600 /data/rsync/conf/server.pass
chmod 600 /data/rsync/conf/client.pass
chmod 600 /data/rsync/conf/site.exclude.list
上述内容最好台服务器都配置上,这样任何一台服务器都可以作为服务器来使用。
启动服务
service rsyncd start #等同于systemctl start rsyncd 启动Rsync服务
systemctl enable rsyncd #开机启动Rsync服务
ps -aux | grep rsync #如果看到rsync的进程在,就说明启动成功了
能看到类似如下内容,就说明启动成功了
root 2045 0.0 0.0 114756 2688 ? Ss 12:30 0:00 /usr/bin/rsync --daemon --no-detach
root 2062 0.0 0.0 112736 2340 pts/0 S+ 12:31 0:00 grep --color=auto rsync
到这里务器端配置就完成了
设置客户端的可执行文件(拉取服务端文件的shell)
vi /root/get.sh
内容如下(大意是获取服务端/wwwroot/下所有的文件):
#!/bin/bash
/usr/bin/rsync -vrtopg --password-file=/data/rsync/conf/client.pass --exclude-from=/data/rsync/conf/site.exclude.list --progress [email protected]::wwwroot /wwwroot/
给这个文件可执行的权限
chmod +x /root/get.sh #client.pass和site.exclude.list上面已经介绍了这里直接使用
获取一下文件试试
./get.sh #同步一下试试 注:客户端的rsync配置最好和服务端一模一样
配置服务器自动同步文件
执行命令:
crontab -e
crontab默认使用vi编辑,填入一下内容:
*/10 8-23 * * * /root/get.sh
0 0-7 * * * /root/get.sh
说明:8-23点每10分钟执行一次,0-7每一小时执行一次
安装完了以后,CentOS Linux 8上面没有Rsync服务(rsyncd.service)怎么办?
网上找到的资料都是安装以后可以看到以下文件:
/etc/rsyncd.conf
/lib/systemd/system/rsyncd.service
但是在刚装好的CentOS Linux 8上,这两个文件都没有,所以没有办法通过以下命令启动或关闭Rsync服务(这种方式的管理比较统一,也比较好操作):
service rsyncd start #等同于systemctl start rsyncd 启动Rsync服务
service rsyncd stop #等同于systemctl stop rsyncd 关闭Rsync服务
service rsyncd status #等同于systemctl status rsyncd 查看Rsync服务状态
systemctl enable rsyncd #开机启动Rsync服务
systemctl disable rsyncd #开机不启动Rsync服务
通过上面的设置已经解决了rsyncd.conf的问题,还有就是服务的问题,咱们自己创建一个rsyncd.service以及相关的文件,自己来启动这个服务:
编辑rsyncd配置文件
vi /etc/sysconfig/rsyncd
内容
OPTIONS=""
编辑rsyncd.service配置文件
vi /lib/systemd/system/rsyncd.service
内容
[Unit]
Description=fast remote file copy program daemon
ConditionPathExists=/etc/rsyncd.conf
[Service]
EnvironmentFile=/etc/sysconfig/rsyncd
ExecStart=/usr/bin/rsync --daemon --no-detach "$OPTIONS"
[Install]
WantedBy=multi-user.target
service rsyncd start #启动Rsync服务
service rsyncd status #查看Rsync服务状态
看到类似以下内容,服务就启动成功
Redirecting to /bin/systemctl status rsyncd.service
● rsyncd.service - fast remote file copy program daemon
Loaded: loaded (/usr/lib/systemd/system/rsyncd.service; disabled; vendor preset: disabled)
Active: active (running) since Sun 2019-12-29 13:08:25 CST; 3s ago
Main PID: 3104 (rsync)
Tasks: 1 (limit: 24804)
Memory: 268.0K
CGroup: /system.slice/rsyncd.service
└─3104 /usr/bin/rsync --daemon --no-detach
12月 29 13:08:25 localhost systemd[1]: Started fast remote file copy program daemon.