rsync服务

rsync命令可以通过执行服务的方式实时增量同步文件和目录

● 先编辑配置文件/etc/rsyncd.conf 若更改配置文件路径需指定--config-file=

● 再启动服务rsync --daemon 默认监听端口873,可自定义

● 使用格式:rsync -av test1/ 192.168.192.128::module/dir/

● 使用格式:rsync -avzu /tmp/mysql.sql user@ipaddress::[模块名]/ –port=873 –password-file=/etc/rsyncd.passwd

● 编辑配置文件/etc/rsyncd.conf

port=873 监听端口默认为873,可自定义log file=/var/log/rsync.log 指定日志pid file=/var/run/rsyncd.pid 指定pidaddress=192.168.202.130 可以定义绑定的ip[test] 为模块名,自定义path=/root/rsync 指定该模块对应在哪个目录下use chroot=true

是否限定在该目录下,默认为true,当有软连接时,需要改为fasle,如果为true就限定为模块默认目录max connections=4 指定最大可以连接的客户端数read only=no

是否为只读,如果是no的话,客服端推送给服务端的时候不成功,这时候要改成yeslist=true 是否可以列出模块名 rsync --port 8730 172.16.37.139:: 如果为yes的话会列出客户端所有的模块名字。 uid=root 以哪个用户的身份来传输gid=root 以哪个组的身份来传输auth users=test 指定验证用户名,可以不设置,不设置默认不用密码,设置的话安全性更高点secrets file=/etc/rsyncd.passwd 指定密码文件,如果设定验证用户,这一项必须设置,设定密码权限为400.hosts allow=192.168.192.128 1.1.1.1 2.2.2.2 192.168.192.0/24

//设置可以允许访问的主机,可以是网段,多个Ip地址用空格隔开

●再启动服务rsync --daemon

[root@localhost ~]# rsync --daemon

●检查虚拟机上服务是否已经启动

0[root@localhost ~]# ps aux |grep rsync
 
root 2473 0.0 0.0 114640 536 ? Ss 21:21 0:00 rsync --daemonroot 2475 0.0 0.0 112656 988 pts/0 R+ 21:21 0:00 grep --color=auto rsyn

●检查虚拟机上服务监听的端口是否为873

  • 会看到监听的端口为873
  • 这里并且指定监听的IP,若是不写监听的IP,就会绑定0.0.0.0,就是所有的网段,全部的IP
[root@localhost ~]# netstat -lntp
 
Active Internet connections (only servers)Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 2033/master tcp 0 0 192.168.192.128:873 0.0.0.0:* LISTEN 2473/rsync tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1149/sshd tcp6 0 0 ::1:25 :::* LISTEN 2033/master tcp6 0 0 :::22 :::* LISTEN 1149/sshd [root@localhost ~]#

●检查虚拟机上path指定的路径

● 若是指定root,权限有可能不好把握,所以放在tmp目录下

● 修改/etc/rsyncd.conf目录中的

  • 将path=/root/rsync改为path=/tmp/rsync
  • 并新建目录mkdir=/tmp/rsync
[root@localhost ~]# vim /etc/rsyncd.conf将path=/root/rsync改为path=/tmp/rsync[root@localhost ~]# mkdir /tmp/rsync

●在虚拟机上设置权限——>这里设置的777权限是为了方便测试

[root@localhost ~]# chmod 777 /tmp/rsync

Linux系统日志

  • /var/log/messages //是linux系统一个总的日志——>除非某些服务,有定义单独的日志
  • /etc/logrotate.conf 日志切割配置文件
  • 参考日志文件文章
  • dmesg命令
  • /var/log/dmesg 日志
  • last命令,调用的文件/var/log/wtmp
  • lastb命令查看登录失败的用户,对应的文件时/var/log/btmp
  • /var/log/secure

系统日志

  • /var/log/messages //是linux系统一个总的日志——>除非某些服务,有定义单独的日志
  • 系统中存有一个日志切割机制,日志的滚动,在增长到一定级别就会自动切割
[root@hf ~]# [root@hf ~]# ls /var/log/messages/var/log/messages[root@hf ~]# less !$less /var/log/messages[root@hf ~]# du -sh !$du -sh /var/log/messages388K /var/log/messages

●在查看日志的时候,会发现日志自动切割了

●linux系统中有一个logrotate服务,会自动切割日志,防止无限制的增加

[root@hf ~]# ls /var/log/messages*/var/log/messages /var/log/messages-20171120 /var/log/messages-20171203/var/log/messages-20171112 /var/log/messages-20171127[root@hf ~]#

●查看日志文件cat /etc/logrotate.conf

[root@hf ~]# cat /etc/logrotate.conf# see "man logrotate" for details //会告诉你查看logrotate的帮助文档# rotate log files weeklyweekly //每周切割一次# keep 4 weeks worth of backlogsrotate 4 //切割四个# create new (empty) log files after rotating old onescreate //创建一个新的文件# use date as a suffix of the rotated filedateext //这是它的后缀名# uncomment this if you want your log files compressed#compress //是否需要压缩,压缩成 .tar.gz # RPM packages drop log rotation information into this directoryinclude /etc/logrotate.d //这个目录下还有一些文件# no packages own wtmp and btmp -- we'll rotate them here/var/log/wtmp { //切割该文件,每个月切割一次 monthly create 0664 root utmpminsize 1M rotate 1}/var/log/btmp { //切割该文件,指定权限,属主,属组 missingok monthly create 0600 root utmp rotate 1}# system-specific logs may be also be configured here.[root@hf ~]#

  • 查看 /etc/logrotate.d/syslog 文件
  • 它会为cron,maillog,messages,secure,spooler这几个日志进行切割
  • messages日志是由 syslogd 服务决定的,所以 kill -HUP 就会重新加载这个日志
  • 还有一个脚本,shell命令行,在把日志切割后(挪走),改名字生成新的日志
  • Linux系统有一个特点,一个服务写一个文件的时候,并不是按照文件名去写的,而是根据inode来写的
[root@hf ~]# ls /etc/logrotate.dppp samba syslog wpa_supplicant yum[root@hf ~]# cat /etc/logrotate.d/syslog/var/log/cron/var/log/maillog/var/log/messages/var/log/secure/var/log/spooler{ sharedscripts postrotate/bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true endscript}[root@hf ~]#

dmesg命令

  • dmesg命令,会把系统硬件相关的日志列出来
  • 这个日志是保存在内存中的,并不是一个文件
  • 假如你的网卡有问题了,硬盘损坏了,都会记录在这个日志中
  • dmesg -c //清空当前日志
  • 但是一重启这个系统,又会生成这些日志

/var/log/dmesg日志文件

  • /var/log/dmesg //这是一个日志文件
  • 这个日志文件和 dmesg命令 没有任何关联
  • 它是系统启动的一个日志,记录的信息

last命令

  • last命令,查看你正确的登录历史
  • 调用的文件/var/log/wtmp
  • 记录是是谁,在哪里,来源IP,时间,登录的时长都会有记录
  • /var/log/wtmp日志是一个二进制文件,不能直接cat查看的,只能用last命令去查看
[root@hf ~]# lastroot pts/0 192.168.74.1 Thu Dec 7 01:41 still logged in reboot system boot 3.10.0-123.el7.x Thu Dec 7 01:36 - 05:38 (04:01) root pts/1 192.168.74.1 Wed Dec 6 05:11 - 05:13 (00:01) root pts/0 192.168.74.1 Wed Dec 6 01:27 - crash (1+00:09) reboot system boot 3.10.0-123.el7.x Wed Dec 6 01:26 - 05:38 (1+04:11) root pts/0 192.168.74.1 Tue Dec 5 01:38 - crash (23:48) reboot system boot 3.10.0-123.el7.x Tue Dec 5 01:37 - 05:38 (2+04:00) root pts/0 192.168.74.1 Mon Dec 4 03:23 - down (02:57) root pts/0 192.168.74.1 Sun Dec 3 17:42 - 03:23 (09:40) 等等等,只截取了一部分[root@hf ~]# ls /var/log/wtmp/var/log/wtmp

screen工具

      是一款由GNU计划开发的用于命令行终端切换的自由软件。用户可以通过该软件同时连接多个本地或远程的命令行会话,并在其间自由切换。GNU Screen可以看作是窗口管理器的命令行界面版本。它提供了统一的管理多个会话的界面和相应的功能。

会话恢复

只要Screen本身没有终止,在其内部运行的会话都可以恢复。这一点对于远程登录的用户特别有用——即使网络连接中断,用户也不会失去对已经打开的命令行会话的控制。只要再次登录到主机上执行screen -r就可以恢复会话的运行。同样在暂时离开的时候,也可以执行分离命令detach,在保证里面的程序正常运行的情况下让Screen挂起(切换到后台)。这一点和图形界面下的VNC很相似。

多窗口

在Screen环境下,所有的会话都独立的运行,并拥有各自的编号、输入、输出和窗口缓存。用户可以通过快捷键在不同的窗口下切换,并可以自由的重定向各个窗口的输入和输出。Screen实现了基本的文本操作,如复制粘贴等;还提供了类似滚动条的功能,可以查看窗口状况的历史记录。窗口还可以被分区和命名,还可以监视后台窗口的活动。 会话共享 Screen可以让一个或多个用户从不同终端多次登录一个会话,并共享会话的所有特性(比如可以看到完全相同的输出)。它同时提供了窗口访问权限的机制,可以对窗口进行密码保护。

GNU's Screen 官方站点:http://www.gnu.org/software/screen/

语法

# screen [-AmRvx -ls -wipe][-d <作业名称>][-h <行数>][-r <作业名称>][-s ][-S <作业名称>]

选项

-A  将所有的视窗都调整为目前终端机的大小。 -d <作业名称>  将指定的screen作业离线。 -h <行数>  指定视窗的缓冲区行数。 -m  即使目前已在作业中的screen作业,仍强制建立新的screen作业。 -r <作业名称>  恢复离线的screen作业。 -R  先试图恢复离线的作业。若找不到离线的作业,即建立新的screen作业。 -s  指定建立新视窗时,所要执行的shell。 -S <作业名称>  指定screen作业的名称。 -v  显示版本信息。 -x  恢复之前离线的screen作业。 -ls或--list  显示目前所有的screen作业。 -wipe  检查目前所有的screen作业,并删除已经无法使用的screen作业。

常用screen参数

screen -S yourname -> 新建一个叫yourname的session screen -ls -> 列出当前所有的session screen -r yourname -> 回到yourname这个session screen -d yourname -> 远程detach某个session screen -d -r yourname -> 结束当前session并回到yourname这个session

在每个screen session 下,所有命令都以 ctrl+a(C-a) 开始。

C-a ? -> 显示所有键绑定信息
C-a c -> 创建一个新的运行shell的窗口并切换到该窗口
C-a n -> Next,切换到下一个 window 
C-a p -> Previous,切换到前一个 window 
C-a 0..9 -> 切换到第 0..9 个 window
Ctrl+a [Space] -> 由视窗0循序切换到视窗9
C-a C-a -> 在两个最近使用的 window 间切换 
C-a x -> 锁住当前的 window,需用用户密码解锁
C-a d -> detach,暂时离开当前session,将目前的 screen session (可能含有多个 windows) 丢到后台执行,并会回到还没进 screen 时的状态,此时在 screen session 里,每个 window 内运行的 process (无论是前台/后台)都在继续执行,即使 logout 也不影响。 
C-a z -> 把当前session放到后台执行,用 shell 的 fg 命令则可回去。
C-a w -> 显示所有窗口列表
C-a t -> time,显示当前时间,和系统的 load 
C-a k -> kill window,强行关闭当前的 window
C-a [ -> 进入 copy mode,在 copy mode 下可以回滚、搜索、复制就像用使用 vi 一样
    C-b Backward,PageUp 
    C-f Forward,PageDown 
    H(大写) High,将光标移至左上角 
    L Low,将光标移至左下角 
    0 移到行首 
    $ 行末 
    w forward one word,以字为单位往前移 
    b backward one word,以字为单位往后移 
    Space 第一次按为标记区起点,第二次按为终点 
    Esc 结束 copy mode 
C-a ] -> paste,把刚刚在 copy mode 选定的内容贴上