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
拓展
- Linux日志文件总管logrotate http://linux.cn/article-4126-1.html
- xargs用法详解