码迷,mamicode.com
首页 > 系统相关 > 详细

十(7)rsync:介绍、常用选项、通过ssh同步、通过服务同步、linux系统日志、screen

时间:2018-03-10 00:12:50      阅读:229      评论:0      收藏:0      [点我收藏+]

标签:rsync

                        rsync工具介绍

rsync:数据备份工具(remote sync)。

rsync不仅可以远程同步数据(类似scp),而且可以本地同步数据(类似cp),但是不同于cp或scp的一点是,如果数据存在的话它不会覆盖以前的数据,而是会先判断已存在的数据是否和新的数据有差异,只有数据不同时才会把不同的部分覆盖。

 (系统如果没有rsync命令,安装:yum install -y rsync)

技术分享图片

(如:有两台机器A、B,要把A的数据每小时都备份到B下,而且A的文件世事刻刻都在更新,如果我们每小时在备份的时候使用的是 cp 操作,则每次都是把B上的文件都覆盖一次,这样我们耗费的时间就很久(如果内容很大)。但是使用rsync则会把A和B之间数据不同的部分进行覆盖,这样耗费的时间就会断,耗费带宽也会小)




1.使用rsync 对本地文件进行操作:

rsync -av /etc/passwd /tmp/1.txt   (把/etc/passwd 同步到/tmp下,命名为1.txt)

技术分享图片


2.使用rsync远程同步 (进行远程同步必须远程机器和本地机器都得安装有rsync工具)

格式:rsync [选项]  备份文件数据  [user@]ip: 目标地址

([user@]可以省略 ,表示拷贝到user这个用户下。“:”后面跟路径)

rsync -av /tmp/1.txt root@192.168.136.134:/tmp/2.txt


技术分享图片


其他选项

 rsync格式

 rsync [OPTION] … SRC   DEST


 rsync [OPTION] … SRC   [user@]host:DEST      把文件同步到远程机器上,[user@]可以省略,如果不加这个选项,则我们在执行这条命令时是什么用户(如在root用户下),则会同步到远程机器ip和执行这条命令时用户(root用户,如果远程机器没有这个目录则会报错)下。两则保持统一。


 rsync [OPTION] … [user@]host:SRC   DEST    //把远程机器的内容同步到本地机器中

 rsync [OPTION] … SRC   [user@]host::DEST

 rsync [OPTION] … [user@]host::SRC   DEST

[option] :选项         SRC : 源目录、文件      DEST:目标目录、文件


                                 rsync常用选项


 -a 包含-rtplgoD这些选项

 -r 同步目录时要加上,类似cp时的-r选项

 -v 同步时显示一些信息(速度,字节等),让我们知道同步的过程

 -l 保留软连接(A->B同步时,把软链接保存到B,但B无软链接的源文件,软链接在B上会            报错,失效。)

 -L 加上该选项后,同步软链接时会把源文件给同步

 -p 保持文件的权限属性

 -o 保持文件的属主

 -g 保持文件的属组

 -D 保持设备文件信息

 -t 保持文件的时间属性

 --delete 删除DEST(目标目录)中SRC(源目录)没有的文件,加这个选项则会同步成一模一样(A有1.txt 2.txt  B有3.txt,同步时加--delete则会把B中的3.txt删除) 

 --exclude 过滤指定文件,如--exclude “logs”会把文件名包含logs的文件或者目录过滤掉,不同步

 -P 显示同步过程,比如速率,比-v更加详细

 -u 加上该选项后,如果DEST中的文件比SRC新,则不同步

 -z 传输时压缩,则可以省时间,节省带宽。


做试验(本地)源目录/root/111/      目标目录:/tmp/

1.rsync -av /root/111/ /tmp/111_dest/

技术分享图片

但是此时的软链接文件是失效的

技术分享图片

加上-L 同步软链接时会把源文件给同步

rsync -avL/root/111/ /tmp/111_dest/ (虽然-a中此时有小l,但是L在则会先执行-L功能)

技术分享图片


(因为一开始软链接失效,所以再次操作时,先把B上的软链接指向先做成有效,如下图:)

技术分享图片


2.在/tmp/111_dest/下创建多一个文件new.txt

 touch /tmp/111_dest/new.txt

使用 --delete  删除DEST(目标目录)中SRC(源目录)没有的文件

(删除/tmp/111_dest/new.txt)

 技术分享图片


3.过滤 --exclude(先删除在测试:rm -rf /tmp/111_dest/*)

rsync -avL --exclude "*.txt" /root/111/ /tmp/111_dest/

(同步时过滤所有 .txt文件)

技术分享图片

支持多个 --exclude连写

rsync -avL --exclude "*.txt" --exclude "cansheng*" /root/111/ /tmp/111_dest/


4.-P选项   显示同步过程,比如速率,比-v更加详细 

技术分享图片



5. -u选项

DEST中的文件比SRC新,则不同步

/tmp/111_dest/的文件4913内容更改,新增内容(源/root/111/4913文件下无内容

 rsync -avPu /root/111/ /tmp/111_dest/

技术分享图片


                                                  

                                                 rsync通过ssh同步

技术分享图片

(现有A机器:192.168.136.133; B机器:192.168.136.134。并且两台机器能相互通信)


 1.A-->B

rsync -av /etc/passwd root@192.168.136.134:/tmp/cansheng.txt

技术分享图片

  B-->A

rsync -avP  root@192.168.136.134:/tmp/cansheng.txt  /tmp/123.txt

技术分享图片


2.指定端口: -e "ssh -p 端口号"

-e "ssh -p 22"  指定对方22端口

rsync -avP -e "ssh -p 22" /etc/passwd root@192.168.136.134:/tmp/cansheng.txt

技术分享图片


ssh -p 端口号+ip (远程连接命令)

技术分享图片



                                rsync通过服务同步

通过服务同步:首先要开始一个服务(架构是c/s,客户端和服务端,服务端开启一个rsync服务,并且监听一个端口(默认873,但是可以自定义),客户端就可以通过873端口和服务端进行通信)

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

(A:服务端,B客户端)

开启服务前:(对A机器)

1.修改配置文件:/etc/rsyncd.conf

    rsyncd.conf样例

  添加以下内容:

    port=873

    log file=/var/log/rsync.log

    pid file=/var/run/rsyncd.pid

    address=192.168.136.133

    [test]

    path=/tmp/rsync   (首先这个目录要存在,不存在就创建mkdir /tmp/rsync。修改权限方便实验:chmod 777 /tmp/rsync)

    use chroot=false

    max connections=4

    read only=no

    list=true

    uid=root

    gid=root

    auth users=test

    secrets file=/etc/rsyncd.passwd       --》定义密码的       

    hosts allow=192.168.136.134 

    

技术分享图片

技术分享图片

2.启动服务:rsync --daemon

(查看服务启动是否成功 :ps aux |grep rsync)

技术分享图片

netstat -lntp  查看监听端口

技术分享图片


3.在B机器上同步一个文件到A

 rsync -avP /tmp/cansheng.txt 192.168.136.133::test/cansheng-02.txt

(::后面的test是在上诉配置文件中/etc/rsyncd.conf定义的模块名技术分享图片,这里代表test=/tmp/rsync)


出现报错:

技术分享图片

出现这种问题首先查看网路的联通性:ping 192.168.136.133

若通,则测试监听端口是否同。命令:telnet ip 端口

telnet 192.168.136.133 873  (yum install -y telnet)

如果测试端口有问题

技术分享图片

此时报错:

首先判断是否iptables的问题 iptables -nvL 

技术分享图片(有问题)

若是iptables 问题,则把firewalld停掉(A和B机器都停掉):systemctl stop firewalld


此时再次执行:telnet 192.168.136.133 873 

(出现图中信息则正确,退出则为:ctrl+u+]  后 qiut)

技术分享图片


再运行:在B机器上同步一个文件到A

 rsync -avP /tmp/cansheng.txt 192.168.136.133::test/cansheng-02.txt

技术分享图片


(输入密码即可。那么这个输入的密码实在哪里定义呢?答案是:/etc/rsyncd.conf中


技术分享图片的secrets file定义,如果不想输入密码,则删除或注释掉进行)

(为什么视频中auth users也注释掉?)


技术分享图片

(同步成功,A中有同步的文件存在技术分享图片


(/etc/rsync/conf 文件修改了要重启,但是重启了端口不会变(netstat -lntp 查看

但是/etc/rsync/conf 文件修改了use chroot=false这行则不用重启 )



      修改端口:8730 (B:运行命令时要指定端口--port 8730)

技术分享图片

killall rsync 

ps aux |grep rsync

技术分享图片

启动服务:rsync --daemon

netstat -lntp

技术分享图片

rsync -avP  192.168.136.133::test/  /tmp/test/

(因为修改了端口此时运行这条命令会出错)

技术分享图片

修改命令后,端口不在是默认的873。运行命令时要指定端口号 --port 8730

rsync -avP --port 8730 192.168.136.133::test/  /tmp/test/

技术分享图片



在配置文件中/etc/rsyncd.conf

中添加的内容里

技术分享图片auth users=test 指定传输时要使用的用户名。

(上述实验中我们把auth users=test和secrets file注释了操作的,一下是删掉这两行注释)

在同步时使用指定用户和密码:

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

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



密码文件:/etc/rsyncd.passwd

vim /etc/rsyncd.passwd

技术分享图片

然后修改文件权限:chmod 600 /etc/rsyncd.passwd

B机器上执行:rsync -avP /tmp/test --port=8730 test@192.168.136.133::test/

(这是就要设置密码和输入密码了。)

技术分享图片


怎么在同步时不用手动输入密码呢?

在客户端也定义一个密码文件:(如:/etc/rsync_pass.txt)

    vi /etc/rsync_pass.txt  在文件中直接写入我们在服务端A:/etc/rsyncd.passwd文件中用户名的密码进行(只写密码)


修改文件权限600:chmod 600  /etc/rsync_pass.txt



此后在同步时再加上一个选项 --password-file=密码文件路径


rsync -avP /tmp/test --port=8730 --password-file=etc/rsync_pass.txt  test@192.168.136.133::test/

这时候同步就不需要在客户端B手动输入密码:

技术分享图片


(总结:当我们在这两个选项中设定了用户和密码文件时,如果想在客户端同步且不用手动输入命令

auth users=test

secrets file=/etc/rsyncd.passwd

首先编辑服务端密码文件(vi /etc/rsyncd.passwd 添加内容,格式:用户名:密码

接着修改该文件(vi /etc/rsyncd.passwd)权限600,chmod 600 /etc/rsyncd.passwd

再在客户端上定义一个密码文件:(如:/etc/rsync_pass.txt)在文件里直接添加刚刚服务端文件定义的密码

再修改该文件权限600 ,chmod 600 /etc/rsync_pass.txt

最后执行同步命令即可

)






                      Linux系统日志 

我们的服务在运行的时候,当出现了问题往往能通过相应的日志文件来检查到出现的错误

日志文件记录了系统每日的各种事情(监控系统状态,排查系统故障等),通过日志来检查错误发生的原因,或者受到攻击时攻击者留下的痕迹。

技术分享图片


日志切割配置文件: /etc/logrotate.conf  (

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

)

(系统为了防止日志过于大,可以实现了切割。命令:ls /var/log/messages*可以查看到切割后的文件

   技术分享图片

 )

cat /etc/logrotate.conf

技术分享图片


命令:dmesg (会把系统硬件相关的日志列出来,但是都是保存在内存中)

技术分享图片

dmesg -c 把内存中的日志清空,但是重启又会加载


/var/log/dmesg 日志  系统启动的一个日志(与命令dmesg没关联)

技术分享图片


命令 :last     查看正确登录的历史   (命令:last 是调用 /var/log/wtmp(二进制文件))

技术分享图片


命令:lastb  查看 登录失败的用户信息 ,调用/var/log/btmp二进制文件

技术分享图片


安全日志:/var/log/secure

技术分享图片

当我们的机器受到黑客破解我们的登录密码或者其他操作时这个安全日志就会有记录



                             screen工具

(使用场景:有一个脚本需要运行几个小时或几天,过程中若断网该怎么解决?

为了避免断网造成中断有两种方法:

1.任务放到后台执行,加一个日志输出

 nohup command(执行命令) &

如:nohup /user/local/sbin/xxx.sh &

(使用nohup将任务放置后台执行,执行后会生成nohup的一个文件,这文件就是防止进程意外中断,并会把输出信息记录到nohup文件中)

nohup不能时刻将输出内容显示在屏幕上

2.screen工具(yum install -y screen)

命令:screen  直接回车就进入了虚拟终端

screen +任务/命令 (此时任务不会中断)

技术分享图片


ctral a组合键再按d退出虚拟终端,但不是结束(把screen放到后台)

screen -ls 查看虚拟终端列表


技术分享图片


把screen再调回来 screen -r id号

screen -r 3895

( screen -r id 进入指定的终端)

终止(杀死)screen进程: exit

exit 后screen -ls 则没screen任务了

技术分享图片

screen -ls 查看虚拟终端列表



当我们要执行很多个screen时,为了方便的知道到底相应id对应的任务是什么:

进入screen时定义相应的名字:

screen -S 定义的名字 (screen -S vmstat_test)

技术分享图片

这个时候进入到指定终端screen,就有两种方法:

1. screen -r id

2. screen -r 定义的名字




十(7)rsync:介绍、常用选项、通过ssh同步、通过服务同步、linux系统日志、screen

标签:rsync

原文地址:http://blog.51cto.com/13589255/2084717

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!