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.
扩展
- Linux日志文件总管logrotate http://linux.cn/article-4126-1.html
- xargs用法详解 http://blog.csdn.net/zhangfn2011/article/details/6776925