rsync通过服务同步

分为服务端(机器A) 和客户端(机器B)

机器A操作编辑/etc/rsyncd.conf配置文件

[root@yolks1 ~]# vim /etc/rsyncd.conf

文件中添加以下配置

port=873                                   (指定哪个端口启动rsync服务,不写的话默认是873)

log file=/var/log/rsync.log                      (指定日志文件)

pid file=/var/run/rsyncd.pid                     (指定Pid文件)    

address=192.168.52.101                          (指定监听的ip,不写的话监听全网)

[test]                                    (指定模块名字)

path=/tmp/rsync                 (指定数据存放的路径,没有的话记得创建)

use chroot=true/false          (安全参数,限定只能在指定存放的路径,若链接在别的文件下,则会报错,不会同步)

max connections=4              (指定最大连接数,默认是0,既没有限制)

read only=no                   (是否为只读,如果为true,则不能上传到该模块指定的路径下)

list=true                       (当客户端运行rsync 192.168.52.100::  是否会显示模块名)   

uid=root                        (传输时默认以哪个用户的身份传输)

gid=root                         (传输时默认以哪个用户组的身份传输)

auth users=test                     (指定传输时指定用户名和密码)

secrets file=/etc/rsyncd.passwd           (指定传输时用户名的密码文件地址 格式 用户:密码)

当设置了auth users和secrets file后,客户端连接服务端也需要用户名密码了,罗想在命令行中带上密码,可以在客户端(server2)上设定一个密码文件  rsync -avL test@192.168.52.100::test/test1/ /tmp/test8/ --password-file=/etc/pass (/etc/pass内容是一个密码,只写密码就好,权限要改成600)

hosts allow=192.168.52.0/24    (表示允许那些机器连接,可以写ip.或者ip段)

启动服务

[root@yolks1 ~]# rsync --daemon

查看进程

[root@yolks1 ~]# ps -aux |grep rsync
root      1285  0.0  0.0 114740   560 ?        Ss   16:13   0:00 rsync --daemon
root      1287  0.0  0.0 112720   980 pts/0    S+   16:13   0:00 grep --color=autorsync

查看端口号

[root@yolks1 ~]# netstat -lntp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 192.168.61.130:873      0.0.0.0:*               LISTEN      1285/rsync          
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      884/sshd            
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1040/master         
tcp6       0      0 :::22                   :::*                    LISTEN      884/sshd            
tcp6       0      0 ::1:25                  :::*                    LISTEN      1040/master

创建配置文件中的path=/tmp/rsync 文件对应的目录并且赋予权限

[root@yolks1 ~]# mkdir /tmp/rsync
[root@yolks1 ~]# chmod 777 !$
chmod 777 /tmp/rsync

B机器上操作进行同步

[root@yolks2 tmp]# rsync -avP /tmp/rsync_0719.txt 192.168.61.130::test/yolks2.txt
rsync: failed to connect to 192.168.61.130 (192.168.61.130): No route to host (113)
rsync error: error in socket IO (code 10) at clientserver.c(125) [sender=3.1.2]

可以看到上面的操作引起错误,我们在B机器上测试下服务端的端口是否通

[root@yolks2 tmp]# !telnet
telnet 192.168.61.130 873
Trying 192.168.61.130...
telnet: connect to address 192.168.61.130: No route to host

可以看到没有ping通端口,判断可能是由于防火墙,可以选择关闭firewalld,需要A、B机器都关闭掉测试

systemctl stop firewalld

B机器继续telnet测试A服务端,发现已经畅通,q退出

[root@yolks2 tmp]# !telnet
telnet 192.168.61.130 873
Trying 192.168.61.130...
Connected to 192.168.61.130.
Escape character is '^]'.
@RSYNCD: 31.0

A服务端注释掉配置实现免密同步

B机器开始同步

[root@yolks2 tmp]# rsync -avP /tmp/rsync_0719.txt 192.168.61.130::test/yolks2.txt
sending incremental file list
rsync_0719.txt
             88 100%    0.00kB/s    0:00:00 (xfr#1, to-chk=0/1)

sent 188 bytes  received 35 bytes  21.24 bytes/sec
total size is 88  speedup is 0.39

A机器配置文件中的目录查看B机器的文件是否同步过来

[root@yolks1 tmp]# cd rsync/
[root@yolks1 rsync]# ls
yolks2.txt

相对应的也可以更换上面命令的源目录和目标目录即可实现更新服务端文件到本地

如果设置auth users和secrets file后:

  • 服务端的命令行
rsync -avP /tmp/rsync_0719.txt test@192.168.61.130::test/yolks2.txt         (test为/etc/rsyncd.passwd里的用户)
  • 客户端的命令行
rsync -avL test@192.168.61.130::test/yolks2.txt /tmp/yolks_yolks/ --password-file=/etc/pass

Linux系统日志 /var/log/messages

当系统出错时,会不停的向/var/log/messages写东西。所以系统自己带了日志切割功能 : logrotate

查看日志切割配置文件

cat /etc/logrotate.conf

内存中系统日志

dmesg

清除内存中系统日志

dmesg -c

查看正确的用户登录历史日志

last //二进制文件路径(/var/log/wtmp)

查看失败的用户登录历史日志

lastb //二进制文件路径(/var/log/btmp)

查看安全日志

less /var/log/secure

screen工具

screen 是一款虚拟终端

安装screen

yum install -y screen

进入虚拟终端

screen

退出screen虚拟终端,但不关闭 : Ctrl+a 再按 d

查看虚拟终端列表

screen -ls

进入指定虚拟终端

screen -r 对应号

自定义虚拟终端名称

screen -S "Ask_screen"

完全退出虚拟终端

exit

拓展

  1. Linux日志文件总管logrotate http://linux.cn/article-4126-1.html
  2. xargs用法详解