rsync 通过服务的方式同步
通过服务的方式首先我们要开启一个服务, 它的架构是 cs 架构客户端和服务端服务端开启一个服务, rsync 服务, 并且要监听一个端口, 默认为 873, 并且这个端口是可以自定义的开启服务后, 客户端究竟可以通过 873 这个端口和服务端进行通信
它的命令格式有两个::
例如: rsync -av test1/ 192.168.133.130::module/dir/
自启动服务前, 我们要编辑配置文件, 配置文件的默认路径为 /etc/rsyncd.conf
启动方式为 rsync --daemon
首先我们先启动它的服务, 下面有一个 rsyncd.conf 的样例
- port=873(指定端口, 也可以自定义端口)
- log file=/var/log/rsync.log(指定日志文件)
- pid file=/var/run/rsyncd.pid(指定 pid 文件)
- address=192.168.133.130(指定监听的 IP, 如果不写, 就监听所以有 IP, 我们也可以写多个 IP)
- [test](指定块名)
- path=/root/rsync(指定数据存放路径)
- use chroot=true(安全参数, 如果有文件没能同步过来, 那么就把参数改为 false)
- max connections=4(最大连接数, 假设服务器很多, 我们就可以定义连接数)
- read only=no(是否只读, 如果制度的情况下改成 true, 这个参数就是在服务端写数据的时候, 如果服务端定义了只读, 就写不进去了)
list=true(列出远程服务器上所有模块, 如果改成 false 则列不出来列出模块名的命令为
rsync --port = 端口名 IP 这是一个安全选项, 如果模块名暴露, 就会容易被被人攻击)
- uid=root(指定传输文件时以哪个用户的身份传输)
- gid=root(指定传输文件时以哪个用户的身份传输)
- auth users=test(指定传输时要使用的用户名)
- secrets file=/etc/rsyncd.passwd(指定密码文件编辑这个文件用 vi 去打开, 它的格式为用户名: 密码然后将这个问价的权限改为 600 在同步的时候既要在 IP 前加上用户名, 运行后输入用户密码但是如果先到 shell 脚本中, 这样写会很麻烦, 我们还有一个办法, 在客户端也定义一个密码文件, 里面只写一个密码, 权限改为 600 这时候在同步的时候加参数 --passwd = 客户端文件的路径加文件名例如: rsync -avL test@192.168.133.130::test/test1$tmp/test8/ --password-file=/etc/pass.txt)
- hosts allow=192.168.133.132 (定义允许那些 IP 同步如果是多个 IP, 就用空格隔开, 也可以写 IP 段)
将它复制到配置文件中去
如果我们重新设定端口, 则要重新启动服务并且在同步的同时要指定端口
例如: rsync -avPL --port 端口号
然后我们启动服务
[root@linletao-001 111]# rsync --daemon
然后我们查看一下他是否启动成功
- [root@linletao-001 111]# ps aux|grep rsync
- root 1101 0.0 0.0 112676 984 pts/0 R+ 20:37 0:00 grep --color=auto rsync
然后我们查看一下他监听的端口
- [root@linletao-001 ~]# netstat -lntp
- Active Internet connections (only servers)
- Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
- tcp 0 0 0.0.0.0:22 0.0.0.0: LISTEN 796/sshd
- tcp 0 0 127.0.0.1:25 0.0.0.0: LISTEN 880/master
- tcp 0 0 192.168.1.106:873 0.0.0.0: LISTEN 1141/rsync
- tcp6 0 0 :::22 ::: LISTEN 796/sshd
- tcp6 0 0 ::1:25 :::* LISTEN 880/master
我们看到监听的端口为 873, 而且我们也给他设定一个监听 IP, 如果不写监听 IP, 他就是绑定 0.0.0.0 全部的 IP
现在服务端我们已经弄好了, 然后我们开始运行命令
[root@localhost tmp]# rsync -av /tmp/aming.txt 192.168.1.106::test/aming-02.txt
这时候冒号后面跟的是模块的名字, 模块命就是在配置文件中用括起来的, 这个模块名代表的路径就是我们设定的 path=/root/rsync, 所以备份的文件就放到了 / root/rsync 这个路径下
但是执行完命令后出现报错
- [root@localhost tmp]# rsync -av /tmp/aming.txt 192.168.1.106::test/aming-02.txt
- rsync: failed to connect to 192.168.1.106 (192.168.1.106): No route to host (113)
- rsync error: error in socket IO (code 10) at clientserver.c(122) [sender=3.0.9]
没有路由到远程机
遇到这种问题第一考虑网络的连通性
- [root@localhost tmp]# ping 192.168.1.106
- PING 192.168.1.106 (192.168.1.106) 56(84) bytes of data.
- 64 bytes from 192.168.1.106: icmp_seq=1 ttl=64 time=0.690 ms
- 64 bytes from 192.168.1.106: icmp_seq=2 ttl=64 time=0.439 ms
- ^C
- --- 192.168.1.106 ping statistics ---
- 2 packets transmitted, 2 received, 0% packet loss, time 1000ms
- rtt min/avg/max/mdev = 0.439/0.564/0.690/0.127 ms
网络可以 ping 通
然后查看端口
- [root@localhost tmp]# telnet 192.168.1.106 873
- Trying 192.168.1.106...
- telnet: connect to address 192.168.1.106: No route to host
发现端口不同, 出现这种情况, 我们第一要考虑的是 iptables 的问题
我们先查看一下 iptables
- [root@localhost tmp]# iptables -lnv
- iptables v1.4.21: unknown option "iptables"
- Try `iptables -h or iptables --help for more information.
- [root@localhost tmp]# iptables -nvL
- Chain INPUT (policy ACCEPT 0 packets, 0 bytes)(以下省略)
发现真的是由于 iptables 的原因导致的
然后我们将 firewalld 给停掉
- [root@localhost tmp]# iptables -lnv
- Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
- pkts bytes target prot opt in out source destination
- Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
- pkts bytes target prot opt in out source destination
- Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
- pkts bytes target prot opt in out source destination
这样我们就停掉了
然后我们再去另一台机器看看
- [root@linletao-001 ~]# iptables -nvL
- Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
- pkts bytes target prot opt in out source destination
- 3223 285K ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
- 2 168 ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0
- 40 2608 ACCEPT all -- lo 0.0.0.0/0 0.0.0.0/0
- 2 100 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22
- 2476 2089K REJECT all -- * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
- Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
- pkts bytes target prot opt in out source destination
- 0 0 REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
- Chain OUTPUT (policy ACCEPT 2969 packets, 341K bytes)
- pkts bytes target prot opt in out source destination
发现这台设备的 iptables 也开启了, 所以我们也要关闭它
然后再回到刚才的设备查看端口是否通畅
- [root@localhost tmp]# telnet 192.168.1.106 873
- Trying 192.168.1.106...
- Connected to 192.168.1.106.
- Escape character is ^].
- @RSYNCD: 30.0
这时, 端口已经通了退出时按 Ctrl 加, 再输入 quit 退出
然后再运行 rsync -av /tmp/aming.txt 192.168.1.106::test/aming-02.txt 这条名命令
- [root@localhost tmp]# rsync -av /tmp/aming.txt 192.168.1.106::test/aming-02.txt
- Password:
这里需要我们输入密码, 这是因为我们在编辑配置文件的时候定义了一条, auth users=test 和 secrets file=/etc/rsyncd.passwd, 这个是用来定义密码的我们可以在这两条前面加 #来注释关掉它
然后我们在运行这条命令
- [root@localhost tmp]# rsync -avP /tmp/aming.txt 192.168.1.106::test/aming-02.txt
- sending incremental file list
- aming.txt
- 1159 100% 0.00kB/s 0:00:00 (xfer#1, to-check=0/1)
- sent 1232 bytes received 27 bytes 2518.00 bytes/sec
- total size is 1159 speedup is 0.92
这样我们就同步成功了如果我们以后发现有用:: 的, 他就是用了 rsyncd.conf
然后我们去另一台设备查看文件是否通过过去了
- [root@linletao-001 tmp]# ls /tmp/rsync
- aming-02.txt
已经同步过去了
反过来我们么也可以将这个文件拉倒本机上来
- [root@localhost tmp]# rsync -avP 192.168.1.106::test/aming-02.txt /tmp/123.txt
- receiving incremental file list
- aming-02.txt
- 1159 100% 1.11MB/s 0:00:00 (xfer#1, to-check=0/1)
- sent 45 bytes received 1266 bytes 2622.00 bytes/sec
- total size is 1159 speedup is 0.88
也成功了
linux 系统日志
日志每天都记录了系统的各项数据所以我们在遇到问题的时候应该第一时间去查看我们的系统日志, linux 系统中有很多重要的日志
1./var/log/messages: 系统总日志, 好多信息都记录在这个文件中除非某项服务有定义单独的日志这个日志每天都会写, 久而久之就会很大所以系统有一个日志切割机制, 当日志增长到一定级别后就会自动切割
[root@linletao-001 ~]# ls /var/log/messages*/var/log/messages /var/log/messages-20180305 /var/log/messages-20180311 /var/log/messages-20180320 /var/log/messages-20180328
我们可以看到这些日志后面都跟了一些日期, 这就证明它是按日期切割的, 那他是这样做到的呢?
logrotate, 他就是用来切割日志的, 为了防止日志无限制的增加它的配置文件 / etc/logrotate.conf
- [root@linletao-001 ~]# cat /etc/logrotate.conf
- see "man logrotate" for details
- rotate log files weekly
- weekly(按周切割)
- keep 4 weeks worth of backlogs
- rotate 4(保留 4 个)
- create new (empty) log files after rotating old ones
- create(创建新文件)
- use date as a suffix of the rotated file
- dateext(后缀名 ext 代表日期)
以下省略
dmesg 命令
将系统里面的硬件先关的日志列出来, 它保存在内存中, 它并不是一个文件比如我们的硬盘或者网卡出现问题, 他都会记录在这里我们除了看 / var/log/messages 外, 还要运行这个命令查看硬件的故障和错误参数 - c 可以清空内容, 但重启后又会自动添加内容
/var/log/dmesg
这是一个日志文件, 他是记录系统启动的日志, 和 dmesg 命令没有关系
last 命令, 调用的文件 / var/log/wtmp
用来查看正确的登陆历史, 他是一个二进制文件, 不能 cat 查看, 只能用 last 来查看
lastb 命令查看登录失败的用户, 对应的文件时 / var/log/btmp /var/log/secure
他是记录登录失败的日志他也是一个二进制文件, 不能 cat 查看
/var/log/secure 安全日志
他会记录登录相关以及 pam 相关等等的日志如果有人暴力破解我们设备, 那么也会记录到这个文件中
screen 工具
虚拟终端比如我们运行一个脚本, 要运行很长时间, 而且他会输出一些东西, 也即意味着中途不能中断
有两个办法解决, 首先就是放到后台去执行, 用命令 nohup + 执行命令 + 日志 +& 符号即使终端断开, 他依然会在后台执行虽然解决理了防止任务中断的问题, 但是没有办法实时查看任务输出的东西, 毕竟他在后台
还有一种方法就是将任务放在这个终端中, 然后我们退出之前把这个 screen 放到后台去, 随用随调
screen 直接回车就进入了虚拟终端
ctral a 组合键再按 d 退出虚拟终端, 但不是结束
screen -ls 查看虚拟终端列表
screen -r id 进入指定的终端
screen -S (自定义名字)
来源: http://www.bubuko.com/infodetail-2542386.html