linux 学习笔记-036-日常运维-rsync 通过服务同步,linux 系统日志,screen 工具

发布于 2018-01-30  310 次阅读


rsync 通过服务同步

编辑配置文件/etc/rsyncd.conf,启动服务 rsync --daemon

格式:rsync -av test1/ 192.168.133.130::module/dir/

rsyncd.conf 样例:

port=873

log file=/var/log/rsync.log

pid file=/var/run/rsyncd.pid

address=172.17.1.240

[test]

path=/tmp/rsync

#为了容易把握权限,把这个文件放到/tmp 下,需要手动创建 rsync 文件夹,并赋予 777 权限

use chroot=true

max connections=4

read only=no

list=true

uid=root

gid=root

auth users=test

secrets file=/etc/rsyncd.passwd

hosts allow=172.17.1.241 172.17.1.0/24

配置文件详解:

port:指定在哪个端口启动 rsyncd 服务,默认是 873 端口。

log file:指定日志文件。

pid file:指定 pid 文件,这个文件的作用涉及服务的启动、停止等进程管理操作。

address:指定启动 rsyncd 服务的 IP。假如你的机器有多个 IP,就可以指定由其中一个启动 rsyncd 服务,如果不指定该参数,默认是在全部 IP 上启动。

[]:指定模块名,里面内容自定义。

path:指定数据存放的路径。

use chroot true|false:表示在传输文件前首先 chroot 到 path 参数所指定的目录下。这样做的原因是实现额外的安全防护,但缺点是需要以 roots 权限,并且不能备份指向外部的符号连接所指向的目录文件。默认情况下 chroot 值为 true,如果你的数据当中有软连接文件,阿铭建议你设置成 false。

max connections:指定最大的连接数,默认是 0,即没有限制。

read only ture|false:如果为 true,则不能上传到该模块指定的路径下。

list:表示当用户查询该服务器上的可用模块时,该模块是否被列出,设定为 true 则列出,false 则隐藏。

uid/gid:指定传输文件时以哪个用户/组的身份传输。

auth users:指定传输时要使用的用户名。

secrets file:指定密码文件,该参数连同上面的参数如果不指定,则不使用密码验证。注意该密码文件的权限一定要是 600。格式:用户名:密码

hosts allow:表示被允许连接该模块的主机,可以是 IP 或者网段,如果是多个,中间用空格隔开。

当设置了 auth users 和 secrets file 后,客户端连服务端也需要用用户名密码了,若想在命令行中带上密码,可以设定一个密码文件

rsync -avL test@172.17.1.240::test/test1/  /tmp/test8/ --password-file=/etc/pass

其中/etc/pass 内容就是一个密码,权限要改为 600

实例 01:

配置服务端:

[root@am-01:~#] vim /etc/rsyncd.conf

port=873

log file=/var/log/rsync.log

pid file=/var/run/rsyncd.pid

address=172.17.1.240

[test]

path=/tmp/rsync

#为了容易把握权限,把这个文件放到/tmp 下,需要手动创建 rsync 文件夹,并赋予 777 权限

use chroot=true

max connections=4

read only=no

list=true

uid=root

gid=root

#auth users=test

#secrets file=/etc/rsyncd.passwd

#上面两句是为了定义密码,为方便做这个实验,先关闭

hosts allow=172.17.1.241 172.17.1.0/24

[root@am-01:~#] rsync --daemon

[root@am-01:~#] ps -aux | grep rsync

root       4635  0.0  0.0 114656   524 ?        Ss   22:45   0:00 rsync --daemon

root       4638  0.0  0.0 112672   980 pts/0    S+   22:46   0:00 grep --color=auto rsync

[root@am-01:~#] netstat -lntp

Active Internet connections (only servers)

Proto Recv-Q Send-Q   Local Address     Foreign Address     State       PID/Program name    

tcp      0     0     172.17.1.240:873   0.0.0.0:*           LISTEN          4635/rsync          

tcp      0     0     0.0.0.0:22         0.0.0.0:*           LISTEN          1471/sshd           

tcp      0     0     127.0.0.1:25       0.0.0.0:*           LISTEN          2104/master         

tcp6     0     0     :::22              :::*                LISTEN          1471/sshd           

tcp6     0     0     ::1:25             :::*                LISTEN          2104/master    

[root@am-01:~#] mkdir /tmp/rsync

[root@am-01:~#] chmod 777 /tmp/rsync/

[root@am-01:~#] systemctl stop firewalld.service    #为方便实验,关闭 firewalld,实际环境需要放行端口

配置客户端:

[root@am-02:~#] systemctl stop firewalld.service    #为方便实验,关闭 firewalld,实际环境需要放行端口

[root@am-02:~#] telnet 172.17.1.240 873    #使用 telnet 命令测试对端 873 端口是否可联通,没 telnet 命令需要安装 telnet 包

Trying 172.17.1.240...

Connected to 172.17.1.240.

Escape character is '^]'.

@RSYNCD: 30.0

^]

telnet> quit

Connection closed.

[root@am-02:~#] rsync -avP /tmp/1.txt 172.17.1.240::test/2.txt

sending incremental file list

1.txt

        1272 100%    0.00kB/s    0:00:00 (xfer#1, to-check=0/1)



sent 1341 bytes  received 27 bytes  2736.00 bytes/sec

total size is 1272  speedup is 0.93

检查服务端:

[root@am-01:~#] ls /tmp/rsync/

2.txt

实例 02:

其他配置不变,继续做下面实验

测试 use chroot 选项:

当前 use chroot 为 true

服务端:

[root@am-01:~#] cd /tmp/rsync/

[root@am-01:/tmp/rsync#] ln -s /etc/passwd ./3.txt

[root@am-01:/tmp/rsync#] ll

总用量 4

-rw-r--r-- 1 root root 1272 1 月  17 18:46 2.txt

lrwxrwxrwx 1 root root   11 1 月  25 23:19 3.txt -> /etc/passwd

客户端:

[root@am-02:~#] rsync -avPL 172.17.1.240::test/ /tmp/test/

receiving incremental file list

symlink has no referent: "/3.txt" (in test)

created directory /tmp/test

./

2.txt

        1272 100%    1.21MB/s    0:00:00 (xfer#1, to-check=0/2)



sent 48 bytes  received 1439 bytes  2974.00 bytes/sec

total size is 1272  speedup is 0.86

rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1518) [generator=3.0.9]

[root@am-02:~#] ll /tmp/test/

总用量 4

-rw-r--r-- 1 root root 1272 1 月  17 18:46 2.txt

当前 use chroot 为 false

服务端:

[root@am-01:/tmp/rsync#] vim /etc/rsyncd.conf

use chroot=false

客户端:

[root@am-02:~#] rsync -avPL 172.17.1.240::test/ /tmp/test/

receiving incremental file list

created directory /tmp/test

./

2.txt

        1272 100%    1.21MB/s    0:00:00 (xfer#1, to-check=1/3)

3.txt

        1272 100%    1.21MB/s    0:00:00 (xfer#2, to-check=0/3)



sent 67 bytes  received 2714 bytes  1854.00 bytes/sec

total size is 2544  speedup is 0.91

[root@am-02:~#] ll /tmp/test/

总用量 8

-rw-r--r-- 1 root root 1272 1 月  17 18:46 2.txt

-rw-r--r-- 1 root root 1272 1 月  17 18:46 3.txt

实例 03:

其他配置不变,继续做下面实验

测试 port 选项:

服务端:

[root@am-01:/tmp/rsync#] vim /etc/rsyncd.conf

port=8730

[root@am-01:/tmp/rsync#] killall rsync

[root@am-01:/tmp/rsync#] !ps

ps -aux | grep rsync

root       4959  0.0  0.0 112672   980 pts/0    S+   23:31   0:00 grep --color=auto rsync

[root@am-01:/tmp/rsync#] rsync --daemon

[root@am-01:/tmp/rsync#] !ps

ps -aux | grep rsync

root       4961  0.0  0.0 114656   524 ?        Ss   23:31   0:00 rsync --daemon

root       4963  0.0  0.0 112672   980 pts/0    S+   23:31   0:00 grep --color=auto rsync

[root@am-01:/tmp/rsync#] netstat -lnpt

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          1471/sshd           

tcp      0      0    127.0.0.1:25          0.0.0.0:*       LISTEN          2104/master         

tcp      0      0    172.17.1.240:8730     0.0.0.0:*       LISTEN          4961/rsync          

tcp6     0      0    :::22                 :::*            LISTEN          1471/sshd           

tcp6     0      0    ::1:25                :::*            LISTEN          2104/master   

客户端:

[root@am-02:~#] rm -rf /tmp/test/

[root@am-02:~#] rsync -avPL --port 8730 172.17.1.240::test/ /tmp/test/    #--port 选项指定端口

receiving incremental file list

created directory /tmp/test

./

2.txt

        1272 100%    1.21MB/s    0:00:00 (xfer#1, to-check=1/3)

3.txt

        1272 100%    1.21MB/s    0:00:00 (xfer#2, to-check=0/3)



sent 67 bytes  received 2714 bytes  1854.00 bytes/sec

total size is 2544  speedup is 0.91

实例 04:

其他配置不变,继续做下面实验

测试 list 选项:

服务端:

[root@am-01:~#] vim /etc/rsyncd.conf

list=true

客户端:

[root@am-02:~#] rsync --port 8730 172.17.1.240::

test

服务端:

[root@am-01:~#] vim /etc/rsyncd.conf

list=false

[root@am-02:~#] rsync --port 8730 172.17.1.240::    #无任何信息显示

实例 05:

其他配置不变,继续做下面实验

测试密码验证(手工输入密码):

服务端:

[root@am-01:~#] vim /etc/rsyncd.conf

auth users=test

secrets file=/etc/rsyncd.passwd

[root@am-01:~#] vim /etc/rsyncd.passwd

test:123456

[root@am-01:~#] chmod 600 /etc/rsyncd.passwd

客户端:

[root@am-02:~#] rsync -avP /tmp/test/ --port=8730 test@172.17.1.240::test/

Password:

sending incremental file list

3.txt

        1272 100%    0.00kB/s    0:00:00 (xfer#1, to-check=0/3)



sent 1365 bytes  received 27 bytes  397.71 bytes/sec

total size is 2544  speedup is 1.83

测试密码验证(自动输入密码):

客户端:

[root@am-02:~#] vim /etc/rsync_passwd.txt    #在客户端定义一个密码文件,只需要密码

123456

[root@am-02:~#] chmod 600 /etc/rsync_passwd.txt

[root@am-02:~#] touch /tmp/test/123.txt

[root@am-02:~#] rsync -avP --port=8730 --password-file=/etc/rsync_passwd.txt /tmp/test/ test@172.17.1.240::test/

sending incremental file list

./

123.txt

           0 100%    0.00kB/s    0:00:00 (xfer#1, to-check=2/4)



sent 108 bytes  received 30 bytes  92.00 bytes/sec

total size is 2544  speedup is 18.43

Linux 系统日志

/var/log/messages:linux 系统的总日志,系统有自动的日志切割,会隔一段时间自动把这个日志切割

[root@am-02:~#] ls /var/log/messages*

/var/log/messages           /var/log/messages-20180107  /var/log/messages-20180121

/var/log/messages-20180101  /var/log/messages-20180115

/etc/logrotate.conf:日志切割配置文件,用来定义 logrotate 工具

[root@am-02:~#] 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

# 后缀名

# uncomment this if you want your log files compressed

#compress

# 是否压缩

# RPM packages drop log rotation information into this directory

include /etc/logrotate.d



# no packages own wtmp and btmp -- we'll rotate them here

/var/log/wtmp {

    monthly

    create 0664 root utmp

minsize 1M

    rotate 1

}



/var/log/btmp {

    missingok

    monthly

    create 0600 root utmp

    rotate 1

}



# system-specific logs may be also be configured here.

dmesg 命令:把系统中硬件相关的日志列出来,这些日志保存在内存中

/var/log/dmesg:系统启动日志

last 命令:调用文件/var/log/wtmp,用来查看正确的登录历史

lastb 命令:查看登录失败的历史,对应的文件是/var/log/btmp

/var/log/secure:记录登录信息的日志

screen 工具

为了不让一个任务意外中断:nohup command &

虚拟终端:screen,需安装 screen 包

进入一个 screen

[root@am-01:~#] screen

运行一个不能中断的服务后,可以按 ctrl+a+d 退出虚拟终端,任务依然会在后台运行

[root@am-01:~#] screen

[detached from 5188.pts-0.am-01]

screen -ls 查看虚拟终端列表

[root@am-01:~#] screen -ls

There is a screen on:

5188.pts-0.am-01 (Detached)

1 Socket in /var/run/screen/S-root.

screen -r id 进入指定的终端

[root@am-01:~#] screen -r 5188

screen -S “名字”:自定义 screen 的名字

[root@am-01:~#] screen -S "123"

[detached from 5242.123]

screen -r 名字:进入对应名字的 screen

[root@am-01:~#] screen -r 123



[root@am-01 ~]#

退出 screen 使用 exit 即可

扩展

Linux 日志文件总管 logrotate:

http://linux.cn/article-4126-1.html

xargs 用法详解:

http://blog.csdn.net/zhangfn2011/article/details/6776925

logrotate 使用详解:

https://my.oschina.net/u/2000675/blog/908189