rsync通过服务同步(上)
在使用该方法进行同步之前需要先在服务的开启相应服务同时要监听一个端口(可自定义),默认是监听873端口,开启服务之前编辑rsync配置文件“/etc/rsyncd.conf”(将服务添加进去)然后直接使用命令:“rsync --daemon(服务名称)”进行同步。或者将配置文件写到一个自定义文件中,使用命令“rsync --configfile”进行同步。
配置完成后客户端可以通过指定端口与服务端进行通信。
配置服务
编辑配置文件:
[root@yong-01 ~]# vim /etc/rsyncd.conf
port=873
#指定启动rsync服务的端口,如果不指定,默认为873端口
log file=/var/log/rsync.log
#指定日志文件
pid file=/var/run/rsyncd.pid
#指定pid文件,这个文件的作用涉及服务的启动、停止等进程操作。
address=192.168.180.134
#指定启动rsyncd服务的IP。假如你的机器有多个IP,就可以指定由其中一个启动rsyncd服务,如果不指定该参数,默认是在全部IP上启动。
[test]
#指定模块名,里面内容自定义
path=/tmp/rsync
#指定数据存放的路径
use chroot=true
#use chroot=true/false:安全参数,表示在传输文件前首先chroot到path参数所指定的目录下。这样做的原因是实现额外的安全防护,但缺点是需要以root权限,并且不能备份指向外部的符号连接所指向的目录文件。默认情况下chroot值为true,如果你的数据当中有软连接文件,建议设置成false。
max connections=4
#指定最大的连接数,默认是0,即没有限制。
read only=no
#read only ture|false:如果为true,则不能上传到该模块指定的路径下。
list=true
#表示当用户查询该服务器上的可用模块时,该模块是否被列出,设定为true则列出(此时功能类似于tab),false则隐藏。
uid=root
gid=root
#指定传输文件时以哪个uid和gid的身份进行。
#auth users=test
#指定传输时要使用的用户名
#secrets file=/etc/rsyncd.passwd
#指定密码文件,该参数连同上面的参数如果不指定,则不使用密码验证。
#注意:该密码文件的权限一定要是600。格式:“用户名:密码”
hosts allow=192.168.180.135 192.168.180.0/24
#表示被允许连接该模块的主机,可以是IP或者网段,如果是多个,中间用空格隔开。
说明: 当设置了auth users和secrets file后,客户端连服务端也需要用用户名密码了,若想在命令行中带上密码,可以设定一个密码文件“/etc/pass”,然后执行命令:“ rsync -avL [email protected]4::test/test1/ /tmp/test8/ --password-file=/etc/pass”,其中/etc/pass内容就是一个密码,权限要改为600(文件内容格式为:“用户名:密码”)。
启动服务
开启服务:
[root@yong-01 ~]# rsync --daemon
检测服务状态:
[root@yong-01 ~]# ps aux |grep rsync
root 9155 0.0 0.0 114644 552 ? Ss 23:22 0:00 rsync --daemon
root 9159 0.0 0.0 112664 976 pts/0 S+ 23:23 0:00 grep --color=auto rsync
[root@yong-01 ~]# 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 1114/sshd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1463/master
tcp 0 0 192.168.180.134:873 0.0.0.0:* LISTEN 2487/rsync
tcp6 0 0 :::22 :::* LISTEN 1114/sshd
tcp6 0 0 ::1:25 :::* LISTEN 1463/master
添加path的相应目录:
[root@yong-01 ~]# mkdir /tmp/rsync
更改目录权限:
[root@yong-01 ~]# chmod 777 /tmp/rsync
注: 在配置文件中设定path时注意所给予的权限,安全起见不要直接使用root目录!!!
配置文件中“[]”为模块,里面内容为模块名称,该模块代表的路径即为path指定的路径。
使用服务进行同步
在客户端进行同步:同步到服务端
[root@yong-02 ~]# rsync -avP /tmp/ipt.txt 192.168.180.134::test/test0515.txt
rsync: failed to connect to 192.168.180.134 (192.168.180.134): No route to host (113)
rsync error: error in socket IO (code 10) at clientserver.c(122) [sender=3.0.9]
同步遇到的错误,没有路由到主机
检查端口873是否是通的:
telnet 192.168.180.134 873 (如果没有telnet 需要安装 yum install -y telnet)
端口还是不通 继续ping通说明网络正常,要检查iptables -nvL
继续检查iptables -nvL ,停掉firewalld systemctl stop firewalld 当然服务机上也需停掉这个firewalld
到这一步就说明873端口通了 退出该命令时使用Ctrl+],然后输入quit即可!
[root@yong-02 ~]# telnet 192.168.180.134 873
Trying 192.168.180.134...
Connected to 192.168.180.134.
Escape character is '^]'.
@RSYNCD: 30.0
实验:
在客户端进行同步:同步到服务端
[root@yong-02 ~]# rsync -avP /tmp/ipt.txt 192.168.180.134::test/test0515.txt
sending incremental file list
ipt.txt
472 100% 0.00kB/s 0:00:00 (xfer#1, to-check=0/1)
sent 543 bytes received 27 bytes 1140.00 bytes/sec
total size is 472 speedup is 0.83
将服务端数据同步到本机(客户端):
[root@yong-02 ~]# rsync -avP 192.168.180.134::test/test0515.txt /tmp/test0515.txt
receiving incremental file list
test0515.txt
472 100% 460.94kB/s 0:00:00 (xfer#1, to-check=0/1)
sent 45 bytes received 579 bytes 1248.00 bytes/sec
total size is 472 speedup is 0.76
[root@yong-02 ~]# ls /tmp/test0515.txt
/tmp/test0515.txt
#######################################
在服务端查看同步结果:
[root@yong-01 ~]# ls /tmp/rsync/test0515.txt
/tmp/rsync/test0515.txt
telnet命令
telnet命令用于登录远程主机,对远程主机进行管理。telnet因为采用明文传送报文,安全性不好,很多Linux服务器都不开放telnet服务,而改用更安全的ssh方式了。
rsync通过服务同步(下)
编辑rsync配置文件,将服务机端口改为port=8730
重启rsync服务
安装killall工具:“yum install -y psmisc”。
杀死所有rsync进程:
[root@yong-01 ~]# killall rsync
启动:
[root@yong-01 ~]# rsync --daemon
检测:
[root@yong-01 ~]# ps aux |grep rsync
root 2992 0.0 0.0 114652 528 ? Ss 22:30 0:00 rsync --daemon
root 2994 0.0 0.0 112676 984 pts/0 R+ 22:30 0:00 grep --color=auto rsync
[root@yong-01 ~]# 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 1114/sshd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1463/master
tcp 0 0 192.168.180.134:8730 0.0.0.0:* LISTEN 2992/rsync
tcp6 0 0 :::22 :::* LISTEN 1114/sshd
tcp6 0 0 ::1:25 :::* LISTEN 1463/master
进行同步
[root@yong-02 ~]# rsync -avP /tmp/ipt.txt 192.168.180.134::test/test0515.txt
rsync: failed to connect to 192.168.180.134 (192.168.180.134): Connection refused (111)
rsync error: error in socket IO (code 10) at clientserver.c(122) [sender=3.0.9]
说明: 因未开放8730端口,所以此时同步数据会报错!那么如何进行同步呢?方法如下:加上--port 8730
[root@yong-02 ~]# rsync -avP /tmp/ipt.txt --port 8730 192.168.180.134::test/test0515.txt
sending incremental file list
sent 28 bytes received 8 bytes 72.00 bytes/sec
total size is 472 speedup is 13.11
说明: 使用--port选项指定端口号。
Linux系统日志
- /var/log/messages 系统总日志
- /etc/logrotate.conf 日志切割配置文件
- /var/log/dmesg 系统启动日志
- /var/log/scure 安全日志文件
dmesg命令
查看系统硬件相关的日志。dmesg命令被用于检查和控制内核的环形缓冲区。kernel会将开机信息存储在ring buffer中。您若是开机时来不及查看信息,可利用dmesg来查看。开机信息保存在:/var/log/dmesg文件里。
在该日志中可以查看系统有哪些硬件故障。
语法: dmesg [option]
Options:
-c:清除日志(系统重启会重新生成)
-n:指定记录信息的层级
last命令
last命令用于显示用户最近登录信息。单独执行last命令,它会读取/var/log/wtmp的文件,并把该给文件的内容记录的登入系统的用户名单全部显示出来。
lastb命令
lastb命令用于显示用户错误的登录列表,此指令可以发现系统的登录异常。单独执行lastb命令,它会读取位于/var/log目录下,名称为btmp的文件,并把该文件内容记录的登入失败的用户名单,全部显示出来。(/var/log/btmp)
logrotate命令
logrotate命令用于对系统日志进行轮转、压缩和删除,也可以将日志发送到指定邮箱。使用logrotate指令,可让你轻松管理系统所产生的记录文件。每个记录文件都可被设置成每日,每周或每月处理,也能在文件太大时立即处理。您必须自行编辑,指定配置文件,预设的配置文件存放在/etc/logrotate.conf文件中。
安装logrotate工具: yum install logrotate crontabs
logrotate扩展:https://my.oschina.net/u/2000675/blog/908189
Logrotate可配置参数,可使用man命令来查询:
compress 通过gzip压缩转储以后的日志
nocompress 不压缩
copytruncate 用于还在打开中的日志文件,把当前日志备份并截断
nocopytruncate 备份日志文件但是不截断
create mode owner group 转储文件,使用指定的文件模式创建新的日志文件
nocreate 不建立新的日志文件
delaycompress 和 compress 一起使用时,转储的日志文件到下一次转储时才压缩
nodelaycompress 覆盖 delaycompress 选项,转储同时压缩。
errors address 专储时的错误信息发送到指定的Email 地址
ifempty 即使是空文件也转储,这个是 logrotate 的缺省选项。
notifempty 如果是空文件的话,不转储
mail address 把转储的日志文件发送到指定的E-mail 地址
nomail 转储时不发送日志文件
olddir directory 转储后的日志文件放入指定的目录,必须和当前日志文件在同一个文件系统
noolddir 转储后的日志文件和当前日志文件放在同一个目录下
prerotate/endscript 在转储以前需要执行的命令可以放入这个对,这两个关键字必须单独成行
postrotate/endscript 在转储以后需要执行的命令可以放入这个对,这两个关键字必须单独成行
daily 指定转储周期为每天
weekly 指定转储周期为每周
monthly 指定转储周期为每月
rotate count 指定日志文件删除之前转储的次数,0 指没有备份,5 指保留5 个备份
tabootext [+] list 让logrotate 不转储指定扩展名的文件,缺省的扩展名是:.rpm-orig, .rpmsave, v, 和 ~
size size 当日志文件到达指定的大小时才转储,bytes(缺省)及KB(sizek)或MB(sizem)
screen工具
Screen是一款由GNU计划开发的用于命令行终端切换的自由软件。用户可以通过该软件同时连接多个本地或远程的命令行会话,并在其间自由切换。GNU Screen可以看作是窗口管理器的命令行界面版本。它提供了统一的管理多个会话的界面和相应的功能。
安装screen工具:yum install -y screen
- 将一个任务放入后台
# nohup command >[日志文件] 2>[日志文件] &
screen语法:
screen [option] [参数]
在每个screen session 下,所有命令都以 ctrl+a(C-a) 开始:
Ctrl-a d -> detach,暂时离开当前session,将目前的 screen session (可能含有多个 windows) 丢到后台执行,并会回到还没进 screen 时的状态,此时在 screen session 里,每个 window 内运行的 process (无论是前台/后台)都在继续执行,即使 logout 也不影响。
- 查看当前screen下的任务
[root@yong-01 ~]# screen -ls
There is a screen on:
3212.pts-0.yong-01 (Detached)
1 Socket in /var/run/screen/S-root.
- 返回screen session
[root@yong-01 ~]# screen -r 3212(screen的id)
- 终止screen:在screen session执行如下命令即可
[root@yong-01 ~]# exit
- 为screen指定作业名
[root@1 ~]# screen -S "test_screen"
说明: 这样做的目的是方便区分每个screen任务。
扩展:xargs命令
xargs命令是给其他命令传递参数的一个过滤器,也是组合多个命令的一个工具。它擅长将标准输入数据转换成命令行参数,xargs能够处理管道或者stdin并将其转换成特定命令的命令参数。xargs也可以将单行或多行文本输入转换为其他格式,例如多行变单行,单行变多行。xargs的默认命令是echo,空格是默认定界符。这意味着通过管道传递给xargs的输入将会包含换行和空白,不过通过xargs的处理,换行和空白将被空格取代。xargs是构建单行命令的重要组件之一。
xargs命令用法1
xargs用作替换工具,读取输入数据重新格式化后输出。
- 多行输入单行输出
[root@yong-01 ~]# cat test.txt
1 2
3 4
a b
c d
[root@yong-01 ~]# cat test.txt |xargs
1 2 3 4 a b c d
- xargs -n 指定每行输出单元数量
[root@yong-01 ~]# cat test.txt |xargs -n4
1 2 3 4
a b c d
- xargs -d 指定分隔符#
[root@yong-01 ~]# echo "test#test#test#test" | xargs -d# -n2
test test
test test
扩展
1. Linux日志文件总管logrotate http://linux.cn/article-4126-1.html
2. xargs用法详解 http://blog.csdn.net/zhangfn2011/article/details/6776925