文件同步工具rsync
Rsync是一款开源的、快速的、多功能的、可实现全量及增量的本地或远程数据同步备份的优秀工具。Rstync软件适用于unix/linux/windows等多种操作系统平台。
Rsync英文全称为Remotesynchronization,即远程同步。从软件的名称就可以看出来,Rsync具有可使本地和远程两台主机之间的数据快速复制同步镜像、远程备份的功能,这个功能类似ssh带的scp命令,但又优于scp命令的功能,scp每次都是全量拷贝,而rsync可以增量拷贝。当然,Rsync还可以在本地主机的不通分区或目录之间全量及增量的复制数据,这又类似cp命令,但同样也优于cp命令,cp每次都是全量拷贝,而rsync可以增量拷贝。此外,利用Rsync还可以实现删除文件和目录功能,这又相当于rm命令。
一个rsync相当于scp,cp,rm,并且优于他们每一个命令。
在同步备份数据时,默认情况下,Rsync通过其独特的”quick check”算法,它仅同步大小或者最后修改时间发生变化的文件或目录,当然也可以根据权限,属主等属性的变化同步,但需要制定相应的参数,甚至可以实现只同步一个文件里有变化的内容部分,所以,可以实现快速的同步备份数据。
rsync的特性
支持拷贝特殊文件如链接文件,设备等。
可以有排除指定文件或目录同步的功能,相当于打包命令tar的排除功能。
可以做到保持源文件或目录的权限、时间、软硬链接、属主、组等所有属性均不改变-p。
可以实现增量同步,既只同步发生变化的数据,因此数据传输效率很高。
可以使用rcp,rsh,ssh等方式来配合传输文件(rsync本身对数据不加密)。
可以通过sockert(进程方式)传输文件和数据(服务端和客户端)。
支持匿名或认证(无需系统用户)的进程模式传输,可实现方便安全的进行数据备份及镜像。
注意:需要注意拷贝的时候源目录加“/”和不加“/”的区别(加“/”表示只拷贝该目录之下的文件;不加“/”表示连该目录一起拷贝)
安装命令: yum install -y rsync
已加载插件:fastestmirror
base | 3.6 kB 00:00:00
extras | 3.4 kB 00:00:00
updates | 3.4 kB 00:00:00
(1/2): extras/7/x86_64/primary_db | 149 kB 00:00:01
(2/2): updates/7/x86_64/primary_db | 2.7 MB 00:00:01
Loading mirror speeds from cached hostfile
* base: mirrors.cqu.edu.cn
* extras: mirrors.163.com
* updates: mirrors.163.com
正在解决依赖关系
--> 正在检查事务
---> 软件包 rsync.x86_64.0.3.1.2-4.el7 将被 安装
--> 解决依赖关系完成
依赖关系解决
=========================================================================================
Package 架构 版本 源 大小
=========================================================================================
正在安装:
rsync x86_64 3.1.2-4.el7 base 403 k
事务概要
=========================================================================================
安装 1 软件包
总下载量:403 k
安装大小:815 k
Downloading packages:
rsync-3.1.2-4.el7.x86_64.rpm | 403 kB 00:00:00
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
正在安装 : rsync-3.1.2-4.el7.x86_64 1/1
验证中 : rsync-3.1.2-4.el7.x86_64 1/1
已安装:
rsync.x86_64 0:3.1.2-4.el7
完毕!
rsync常用选项
-a包含-rtplgoD
-r同步目录时要加上,类似cp时的-r选项
-v同步时显示一些信息,让我们知道同步的过程
-l保留软链接
-L加上该选项后,同步软链接时会把源文件给同步
-p保持文件的权限属性
-o保持文件的属主
-g保持文件的属组
-D保持设备文件信息
-t保持文件的时间属性
--delete删除DEST中SRC没有的文件
--exclude过滤指定文件,如--exclude "logs"会把文件名包含logs的文件或目录过滤掉,不同步
-P显示同步过程,比如速率,比-v更加详细
-u加上该选项后,如果DEST中的文件比SRC新,则不同步
-z传输时压缩
rsync通过ssh同步
打开两个虚拟机,两者可以通信,其中一个IP是192.168.133.130,另外一个IP192.168.133.132,两个事先都要安装好rsync包,yum install -y rsync
然后开始同步文件(推文件),输入root密码
在第二台虚拟机上查看同步的文件
也可以第二台虚拟机的文件传到本机上(拉文件)
指定端口传输文件,-e "ssh -p 22"
inux系统日志
linux系统日志
/var/log/messages 是系统总的日志
[root@localhost ~]# ls /var/log/messages
/var/log/messages
[root@localhost ~]# du -sh !$
du -sh /var/log/messages
140K /var/log/messages
通过logrotate工具实现日志自动切割
[root@localhost ~]# ls /var/log/messages*
/var/log/messages /var/log/messages-20180523 /var/log/messages-20180611
查看logrotate配置文件,日志每周切割一次,保留4个,创建新的文件,使用日期作为后缀名,是否要压缩
[root@localhost ~]# 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.
查看 /etc/logrotate.d/syslog 文件
[root@localhost ~]# 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
}
dmesg命令
dmesg命令会把系统硬件相关的日志列出来,保存在内存中
dmesg -c清空系统硬件相关的日志
/var/log/dmesg 系统启动日志,与dmesg命令无关
last命令
查看你正确的登录历史;调用的文件/var/log/wtmp,这是个二进制文件,只能用last查看
[root@localhost ~]# last
root pts/0 192.168.88.1 Thu Jun 21 17:15 still logged in
root pts/0 192.168.88.1 Thu Jun 21 16:58 - 17:13 (00:14)
reboot system boot 3.10.0-327.el7.x Thu Jun 21 16:58 - 17:21 (00:23)
root tty1 Mon Jun 11 18:53 - crash (9+22:05)
reboot system boot 3.10.0-327.el7.x Mon Jun 11 18:52 - 17:21 (9+22:29)
root pts/0 192.168.88.1 Mon May 28 16:22 - crash (14+02:30)
reboot system boot 3.10.0-327.el7.x Mon May 28 16:21 - 17:21 (24+01:00)
root pts/0 192.168.88.1 Wed May 23 18:08 - crash (4+22:12)
root pts/0 192.168.88.1 Wed May 23 17:52 - 18:02 (00:10)
reboot system boot 3.10.0-327.el7.x Wed May 23 17:39 - 17:21 (28+23:42)
reboot system boot 3.10.0-327.el7.x Wed May 23 17:37 - 17:21 (28+23:44)
root pts/1 192.168.88.1 Wed May 23 16:55 - crash (00:42)
root pts/0 192.168.88.1 Wed May 23 16:20 - crash (01:16)
reboot system boot 3.10.0-327.el7.x Wed May 23 16:18 - 17:21 (29+01:03)
root pts/0 192.168.88.1 Mon May 21 19:29 - crash (1+20:48)
reboot system boot 3.10.0-327.el7.x Mon May 21 19:29 - 17:21 (30+21:52)
root pts/0 192.168.88.1 Mon May 21 18:55 - crash (00:33)
reboot system boot 3.10.0-327.el7.x Mon May 21 18:53 - 17:21 (30+22:28)
root pts/1 192.168.88.1 Sun May 13 22:02 - crash (7+20:51)
root pts/0 192.168.88.1 Sun May 13 19:54 - crash (7+22:59)
root tty1 Sun May 13 19:49 - crash (7+23:04)
reboot system boot 3.10.0-327.el7.x Sun May 13 19:49 - 17:21 (38+21:32)
wtmp begins Sun May 13 19:49:18 2018
lastb命令
查看登陆失败的用户,对应的文件/var/log/btmp,也是二进制文件
安全日志
/var/log/secure,登录系统验证成功,就会记录一个日志,没有成功也会记录
screen工具
screen可以理解为一个虚拟的终端
场景:有时我们执行一条命令或者脚本,需要很长时间(几小时或几天),为了不让任务意外中断,有两种方法解决
- 将任务丢到后台,然后加一个日志输出,命令nohup command &,nohup后面接命令加上日志再加上&符号
- screen工具,将命令放到这个终端中执行,在退出远程终端前,将screen丢到后台去
首先安装screen命令,yum install -y screen,安装完成后输入screen命令回车,进入screen的窗口,其实就是一个虚拟终端;执行命令vmstat 1,然后先按ctrl+a,再按d键,screen就进入后台执行命令了。
然后输入screen -ls命令,查看任务
[root@localhost ~]# screen -ls
There is a screen on:
2673.pts-0.localhost (Attached)
1 Socket in /var/run/screen/S-root.
回到screen后台,输入screen -r (id号)
[root@localhost ~]# screen -r 2673
There is a screen on:
2673.pts-0.localhost (Attached)
There is no screen to be resumed matching 2673.
如果不需要screen后台,输入exit即可,screen可以允许多个终端后台同时运行,想进那个后台,就输入screen -r (对应的id号)screen自定义名称,screen -S (自定义名称),进入后台,也可以输入screen -r (自定义名称)。