10.28-10.35 预习笔记

28.rsync工具介绍

用来同步的工具,很重要和实用,在工作中可能每天都用到,yum install -y rsync

不仅可以实现文件通过远程从A机器传输到B机器,也可以在本机的目录间同步

1)需求:

现有两个目录A/B,A目录的数据在不断更新,需要每小时都把A目录拷贝到B目录一次

使用rsync工具实现增量的拷贝,只同步有变更过的文件

 

29-30.rsync常用工具

1)-a选项,实际上-a选项包含了下面介绍的其他选项的功能如r/t/p/g/l/o/D,所以平时使用-a选项就足够了

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

  • -l,保留软连接,把软连接的文件本身拷贝到目标目录中去

  • -p (perm),保留文件权限

  • -o,保留文件属主,如果对方没有该属主,就显示uid

  • -g,保留文件属组

  • -D, 保留设备文件信息

  • -t,保留文件的时间属性,atime/ctime/mtime

2)-v (verb),显示同步过程的信息,如拷贝的哪些文件,用了多少时间,拷贝了多少字节,传输的时间速度

3)-L,会同步软链接的源文件

4)--delete, 会删除DEST(目标目录)中SRC(源目录)没有的文件

5)--exclude, 用来过滤指定文件,支持通配

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

7)-u (update), 如果DEST中的文件比SRC新,则不同步

例如A目录中1、2、3三个文件,B目录中有1、2、4三个文件,1、2文件是之前同步过的,但是我们后来改动了B目录中的1文件,所以mtime比A目录中的1文件新,那么再次同步A到B时,B中的1文件将会被保留不被同步

8)-z (zip),传输的时候压缩,目的为了快速,节省带宽,传输之前压缩,传输之后自动解压缩

可以用于远程传输或者传输文件较多较大时使用

 

我们用下图的root下面的111目录做实验

10.28-10.35 预习笔记_第1张图片

 

我们可以看到111/目录下有文件,子目录和软链接

  • rsync -av /root/111/ tmp/111_dest/

10.28-10.35 预习笔记_第2张图片

我们可以发现软链接emma.1.txt也被同步过来了

  • 如果我们加上-L选项,可以发现111目录中的emma.1.txt源文件被同步过来了

-L的作用就是把软连所指向的源文件拷贝到目标文件、目录中

10.28-10.35 预习笔记_第3张图片

10.28-10.35 预习笔记_第4张图片

 

  • --delete, 我们在/tmp/111_dest下新创建一个文件为new.txt,而/root/111/中没有这个文件,再使用rsync -avL --delete /root/111/ /tmp/111_dest/同步,可以看见同步过程删除了111_dest中new.txt,再ls /tmp/111_dest看,发现new.txt被删除掉了

10.28-10.35 预习笔记_第5张图片

  • --exclude, 如果我们同步的时候想要过滤掉/root/111目录中的txt结尾的文件,就可用rsync -avL --exclude "*.txt" /root/111/ /tmp/111_dest/, 再用ls /tmp/111_dest看,发现所有txt结尾的文件都被过滤掉了只保留了123目录

--exclude支持多个条件并列,写成--exclude --exclude

10.28-10.35 预习笔记_第6张图片

  • -P, 可以显示出速率,如果同步文件很大时可以看得出传输的速率

10.28-10.35 预习笔记_第7张图片

  • -u, 可以不覆盖目标文件中新修改的文件,如我们修改了/tmp/111_dest中的1.txt,再同步加-u选项,使用cat查看/root/111/1.txt 和/tmp/111_dest/1.txt,可以发现后者仍然保留没有被覆盖

文件的新是以mtime为准的

10.28-10.35 预习笔记_第8张图片

 

31.rsync通过ssh同步

1)A机器到B机器通过ssh的方式进行传输

语法 rsync -option (av,L,--delete...) SRC ip address:DEST 称作推文件,把本机的文件同步到远程的其他机器上去

例如我们想要把/root/111/同步到远程ip为192.168.224.130的/tmp/emma1目录下就可以写成

rsync -av /root/111/ 192.168.224.130:/tmp/emma1,然后输入对方机器的密码

 

我们也可以把远程机器的文件拉回来,写成rsync -av 192.168.224.130:/tmp/emma1 /root/111/,输入对方机器的密码

2)可以指定连接对方远程的端口

-e “ssh -p 端口号”

rsync -av -e "ssh -p 22" /root/111/ 192.168.224.130:/tmp/emma1, 就可以连接对方的22端口来进行同步

注:ssh -p 端口号 ip地址,输入密码,可以远程登录到另外一台机器上

我们也可以通过修改ssh的配置文件来修改ssh端口/etc/ssh/sshd_config,可以找到port改成想要的端口,然后再重启sshd服务 systemctl restart sshd

 

32-33.rsync通过服务同步

1)首先由两台机器192.168.224.128和192.168.224.130

192.168.224.128作为服务端,192.168.224.130作为客户端

在192.168.224.128新建配置文件

touch /etc/rsyncd.conf, 然后添加如下模板内容

port=873

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

如我我们指定了端口不是873,那么在同步时需要加选项--port 端口, 例如我们指定端口为8730,那么同步时就要加端口--port 8730

log file=/var/log/rsync.log

指定日志文件

pid file=/var/run/rsyncd.pid

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

address=192.168.224.128

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

[test]

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

path=/tmp/rsync

指定数据存放的路径,也就是模块的路径

use chroot=true

安全参数

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

max connections=4

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

如果有很多客户端连接服务端,就可有队max connection进行限定

read only=no

read only ture|false:如果为true,则不能上传到该模块指定的路径下,客户端无法推送数据到服务端。

list=true

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

uid=root

gid=root

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

auth user=test

指定传输时要使用的用户名

secrets file=/etc/rsyncd.passwd

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

再进行同步的时候就要写成rsync -av /tmp/emma.ln.txt [email protected]::test/emma.ln-02.txt, 然后手动输入密码

如果不想在同步的时候手动输入密码,那就需要在客户端创建一个文件例如/ect/rsyncd_pass.txt, 编辑这个文件内容只需要服务端上的密码无需加用户名了(权限也为600),保存,同步的命令需要加新的参数写成

# rsync -av /tmp/emma.ln.txt --passwd-file=/ect/rsyncd_pass.txt [email protected]::test/emma.ln-02.txt

 

hosts allow=192.168.224.130

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

 

2)在服务端启动服务# rsync --daemon, 我们可以用ps aux |grep rsync和netstat -lntp 来查看服务是否启动和873端口是否被监听

注:停止rsync服务用killall rsync

 

10.28-10.35 预习笔记_第9张图片

3)在服务端创建目录/tmp/rsync,并且把权限设置为777, chmod 777 /tmp/rsync

 

4)然后我们就可以在客户端192.168.224.130推文件给192.168.224.128的服务端了

 

[root@localhost ~]# rsync -av /tmp/emma.ln.txt 192.168.224.128::test/emma.ln-02.txt

highlight 部分要写/etc/rsyncd.conf中自定义模块的名字

 

注:正常情况就同步过去了,但有时会出现如下的error message

"rsync: failed to connect to 192.168.224.128 (192.168.224.128): No route to host (113)

rsync error: error in socket IO (code 10) at clientserver.c(125) [sender=3.1.2]"

那首先要先看是否能正常通信 # ping 192.168.224.128

如果可以ping通,我们就要看873端口是否开放,使用命令# telnet 192.168.224.128 873

如果ping不通就可以查看是否是iptables的关系,如果是就可以systemctl stop firewalld,先禁掉防火墙

一般情况就没问题了

 

34.Linux系统日志 http://note.youdao.com/noteshare?id=03dd889bca1ed99aa058125d29e60d00

Linux系统中会有很多的日志文件,这些文件可以帮助我们了解很多系统的重要事件。这些文件一般都存放在/var/log目录中

1)/var/log/messages, 系统的日志,很重要

系统日志有个自动切割的功能(logrotate),当日志大小到一定程度,会被切割; 所以当我们ls /var/log/messages*的时候可以看到下图

 

  • logrotate是个十分有用的工具,它可以自动对日志进行截断(或轮循)、压缩以及删除旧的日志文件。例如,你可以设置logrotate,让/var/log/foo日志文件每30天轮循,并删除超过6个月的日志。配置完后,logrotate的运作完全自动化,不必进行任何进一步的人为干预。https://my.oschina.net/u/2000675/blog/908189

           我们可以看一下logrotate的默认配置文件

           cat /etc/logrotate.conf, 如下

 

# see "man logrotate" for details

# rotate log files weekly

weekly

每周切割一次

# keep 4 weeks worth of backlogs

rotate 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

RPM包的日志文件被切割在/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/wtmp-记录用户正确登录和退出系统的信息,文件二进制文件无法cat, 可以用#last查看

                         配置文件对这些信息每月切割一次,权限为664,属主为root,属组为utmp

/var/log/btmp {

    missingok

    monthly

    create 0600 root utmp

    rotate 1

}

/var/log/btmp-记录错误的登录信息,如果遇到暴力破解,可以发现这里的信息异常,同样不可以用cat查看,用命令# blast

                         配置文件对这些信息每月切割一次,权限为664,属主为root,属组为utmp

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

 

2)#dmesg

这个命令可以显示出系统终于硬件相关信息,保存内存

如果硬盘或网卡有损坏,在这里就有显示如error等等信息

用-c可以清空硬件日志,但是系统重启之后就会再次自动生成

 

3)/var/log/dmesg

与命令#dmesg没有任何关系,就为记录系统启动信息的日志

 

4)/var/log/secure

记录系统安全,如ssh登录,ftp数据传输等等

 

35.screen工具

现在有个以需求就是要执行一个脚本,脚本的执行时间很长但是中间不可以间断,有两种方法

1)把任务丢到后台去,并把输出追加到日志中

语法 nohup command log&

这种做法保证了任务不会被中断,但是无法实时查看

 

2)screen工具

相当于一种虚拟终端,可以实现任务不被打断,且可以实时调出查看也可以实时退出

  • yum install -y screen

  • 在命令行中写screen,直接回车就可以进入虚拟终端,为了做实验我们创建3个虚拟终端

  • Ctrl a然后在按d,就可以退出虚拟终端,但是没有结束

  • screen -ls,可以查看虚拟列表

如下图我们创建的三个虚拟终端

 

  • 如果我们想要再次进入未结束的虚拟终端可以# screen -r id

  • 但是有个问题,时间长了之后很难记住哪个id的虚拟终端在运行什么任务

我们就可以给虚拟终端自定义名字,screen -S 自定义的名字,再次进入终端可以-r id也可以-r 自定义的名字

  • 如果想要彻底结束终端,在终端里面输入# exit就可以了

你可能感兴趣的:(10.28-10.35 预习笔记)