linux日常运维4

rsync工具介绍

remote synchronize一款实现远程同步功能的软件,它在同步文件的同时,可以保持原来文件的权限、时间、软硬链接等附加信息。

  •  rsync特性
    能更新整个目录和树和文件系统;
  有选择性的保持符号链链、硬链接、文件属于、权限、设备以及时间等;
  对于安装来说,无任何特殊权限要求;
  对于多个文件来说,内部流水线减少文件等待的延时;
  能用rsh、ssh 或直接端口做为传输入端口;
  支持匿名rsync 同步文件,是理想的镜像工具;
  增量拷贝;
  • rsync 命令格式
rsync [OPTION]... SRC(源文件/目录) DEST(目标文件/目录          本地拷贝
rsync [OPTION]... SRC [USER@]HOST:DEST                      本地拷贝至远程
rsync [OPTION]... [USER@]HOST:SRC DEST                      远程拷贝至本地
rsync [OPTION]... [USER@]HOST::SRC DEST 
rsync [OPTION]... SRC [USER@]HOST::DEST 
  • rsync 示例
yum install  -y  rsync

[root@localhost ~]# rsync -av /etc/passwd /tmp/q.txt

[root@localhost ~]# rsync -av /tmp/1.txt 192.168.1.11:/tmp/2.txt  //拷贝至远程时需要远程机器也安装rsync工具
  • rsync 常用选项

-a 包含-rtplgoD
-r 同步目录时要加上,类似cp时的-r选项
-v 同步时显示一些信息,让我们知道同步的过程
-l 保留软连接
-L 同步软链接时会把软连接源文件同时同步
-p 保持文件的权限属性
-o 保持文件的属主
-g 保持文件的属组
-D 保持设备文件信息
-t 保持文件的时间属性
--delte 删除DEST中SRC没有的文件
--exclude 过滤指定文件,如--exclude “logs”会把文件名包含logs的文件或者目录过滤掉,不同步
-P 显示同步过程,比如速率,比-v更加详细
-u 加上该选项后,如果DEST中的文件比SRC新,则不同步
-z 传输时压缩

  • rsync 同步数据方式

从一台机器拷贝文件到另一台机器,需要安装openssh-clients

  • ssh同步数据

[root@localhost 111]# rsync -av 111/ 192.168.1.22:/tmp/111_dest

[root@localhost 111]# rsync -av -e "ssh -p 22" 111/ 192.168.1.22:/tmp/111_dest
  • 通过服务方式同步

1.要编辑配置文件/etc/rsyncd.conf

rsyncd.conf样例:

port=873
log file=/var/log/rsync.log
pid file=/var/run/rsyncd.pid
address=192.168.133.130
[test]
path=/tmp/rsync
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=192.168.133.132 1.1.1.1 2.2.2.2  192.168.133.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 [email protected]::test/test1/  /tmp/test8/ --password-file=/etc/pass 
 其中/etc/pass内容就是一个密码,权限要改为600

linux系统日志

 /var/log/messages
 /etc/logrotate.conf 日志切割配置文件
 参考https://my.oschina.net/u/2000675/blog/908189
 dmesg命令
 /var/log/dmesg 日志
 last命令,调用的文件/var/log/wtmp
 lastb命令查看登录失败的用户,对应的文件时/var/log/btmp
 /var/log/secure

  • /var/log/messages 
    linux系统一个总的日志——>除非某些服务,有定义单独的日志
[xzl@yvsy home]$ ls /var/log/messages
/var/log/messages
[xzl@yvsy home]$ ls /var/log/messages*
/var/log/messages  /var/log/messages-20180823  /var/log/messages-20180826
[xzl@yvsy home]$ 

系统中存有一个日志切割机制,日志的滚动,在增长到一定级别了,就会自动切割.在查看日志的时候,会发现日志自动切割了。

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

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

[xzl@yvsy home]$ 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

# 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.
[xzl@yvsy home]$ 
  • 查看 /etc/logrotate.d/syslog 文件

它会为cron,maillog,messages,secure,spooler这几个日志进行切割 
messages日志是由 syslogd 服务决定的,所以 kill -HUP 就会重新加载这个日志 
还有一个脚本,shell命令行,在把日志切割后(挪走),改名字生成新的日志 
Linux系统有一个特点,一个服务写一个文件的时候,并不是按照文件名去写的,而是根据inode来写的

[xzl@yvsy home]$ ls /etc/logrotate.d
bootlog  fail2ban  nginx  ppp  syslog  wpa_supplicant  yum
[xzl@yvsy home]$ cat /etc/logrotate.d/syslog 
/var/log/cron
/var/log/maillog
/var/log/messages
/var/log/secure
/var/log/spooler
{
    missingok
    sharedscripts
    postrotate
	/bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true
    endscript
}
[xzl@yvsy home]$ 

dmesg命令

dmesg命令,会把系统硬件相关的日志列出来,这个日志是保存在内存中的,并不是一个文件。 
假如你的网卡有问题了,硬盘损坏了,都会记录在这个日志中

  • dmesg -c 
    清空当前日志,但是一重启这个系统,又会生成这些日志

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

last命令

查看你正确的登录历史,调用的文件/var/log/wtmp 
记录你是谁,在哪里,来源IP,时间,登录的时长都会有记录 
/var/log/wtmp日志是一个二进制文件,不能直接cat查看的,只能用last命令去查看

[xzl@yvsy home]$ last
xzl      pts/1        125.121.70.115   Fri Aug 31 11:17   still logged in   
root     pts/1        125.121.70.115   Fri Aug 31 11:15 - 11:16  (00:00)    
root     pts/1        116.225.24.207   Fri Aug 31 10:59 - 11:01  (00:01)    
root     pts/1        121.13.165.136   Fri Aug 31 10:53 - 10:54  (00:00)    
andy     pts/0        120.84.201.205   Fri Aug 31 10:48 - 13:15  (02:27)    
andy     pts/0        120.84.140.140   Mon Aug 27 11:49 - 14:02  (02:12)    
andy     pts/0        120.84.140.140   Mon Aug 27 10:25 - 10:37  (00:12)    
andy     pts/1        112.93.190.41    Fri Aug 24 13:31 - 15:52  (02:20)    
andy     pts/0        112.93.212.200   Fri Aug 24 11:42 - 14:13  (02:30)    
andy     pts/0        112.93.212.200   Thu Aug 23 11:51 - 14:12  (02:21)    
reboot   system boot  3.10.0-229.el7.x Thu Aug 23 11:47 - 14:46 (8+02:59)   
andy     pts/1        112.93.212.200   Thu Aug 23 11:18 - 11:45  (00:27)    
andy     pts/0        112.93.212.200   Thu Aug 23 10:00 - 11:45  (01:45)    
reboot   system boot  3.10.0-229.el7.x Thu Aug 23 09:47 - 11:46  (01:58)    
root     pts/0        112.93.212.200   Thu Aug 23 09:18 - crash  (00:29)    
reboot   system boot  3.10.0-229.el7.x Thu Aug 23 09:13 - 11:46  (02:32) 
......
[xzl@yvsy home]$ last /var/log/wtmp 

wtmp begins Fri Jul 17 01:17:15 2015

安全日志

  • /var/log/secure 
    比如登录操作系统,验证成功会在这里记录一个日志,失败也会去记录

screen工具

 为了不让一个任务意外中断
 nohup command &
 screen是一个虚拟终端
 yum install -y screen
 screen直接回车就进入了虚拟终端
 ctrl a组合键再按d退出虚拟终端,但不是结束
 screen -ls 查看虚拟终端列表
 screen -r id 进入指定的终端
 screen -S aming
 screen -r aming

screen

screen,虚拟的一个屏幕,也可以理解为一个虚拟的终端

需求: 
执行一个脚本,需要一天一夜,而且脚本会输出一些东西出来,这就意味着这个脚本不能中途断开,保证脚本不中断,有两种方法

  • 方法一 

把这个任务丢到后台去,然后加一个日志的输出

命令nohup command &——>nohup 加执行命令 加日志 再加一个&符号
这时即使你的终端断开,依旧会在后台执行——>虽然解决了任务中断的问题,但是没有办法实时查看输出的内容
  • 方法二 

screen工具,可以把要执行的命令,放到这个终端里,然后在退出pts/0之前,可以把screen丢到后台去,随时用, 随时查看

  • 安装screen包 

yum install -y screen

在安装完成后,直接敲screen命令,回车,会进入到screen,进入到一个窗口,这个窗口就是一个虚拟终端
在虚拟终端,执行vmstat 1命令,然后 ctrl+a键 同时按,随后再按 d键 ,就把screen丢到后台了
执行screen -ls 命令,列出当前所有的session
执行screen -r 再加查看到的id 命令,再回到虚拟终端
这时若不需要screen了,直接杀死,按 exit 即可
再次 screen -ls 查看,会发现没有screen
  • screen命令,多个虚拟终端同时运行 
    screen可以执行多个虚拟终端,同时运行 
    若想进入到其中一个,指定id即可
[root@xzl-linux ~]# screen -ls
There is a screen on:
	2793.pts-0.xzl-linux	(Detached)
1 Socket in /var/run/screen/S-root.

扩展

  1. Linux日志文件总管logrotate http://linux.cn/article-4126-1.html
  2. xargs用法详解 http://blog.csdn.net/zhangfn2011/article/details/6776925

猜你喜欢

转载自blog.csdn.net/xzl18779631005/article/details/82255151