学习笔记
Linux文件同步工具-rsync
rsybc是linux系统下的数据备份工具。rsync不仅可以远程同步数据,而且可以本地同步数据,和cp类似,但不同的是它不会覆盖以前的数据,只会同步两个文件不同的部分。
安装rsync
yum install -y rsync
rsync同步数据
[root@qklinux-01 ~]# rsync -av /etc/passwd /tmp/1.txt
sending incremental file list
passwd
sent 1,362 bytes received 35 bytes 2,794.00 bytes/sec
total size is 1,270 speedup is 0.91
rsync远程同步数据:rsync -av /etc/passwd root@192.168.18.138:/tmp/1.txt
[root@qklinux-01 ~]# rsync -av /etc/passwd root@192.168.18.138:/tmp/1.txt
The authenticity of host '192.168.18.138 (192.168.18.138)' can't be established.
ECDSA key fingerprint is SHA256:qSoq7MQm5zLlDDn7I+tJN5wcUKslpA4XtPgvhqTFG0M.
ECDSA key fingerprint is MD5:6a:6f:43:0e:35:68:2b:ce:1a:0b:ae:e8:ac:f5:95:42.
rsync格式OPTION是选项 比如-av
rsync[OPTION]… SRC DEST //SRC是源目录 DEST是目标文件或目录
rsync[OPTION]… SRC [USER@]host:DEST // 源拷贝到远程服务器 USER@也可以省掉
默认的是当前终端用户rsync[OPTION]… [USER@]host:SRC DEST 先写远程 后写本地
rsync[OPTION]… SRC [user@]host: :DEST
rsync[OPTION]… [user@]host::SRC DEST
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 传输时压缩
实验说明本地同步数据/root/111/同步到/tmp/111_dest/并改名
[root@qklinux-01 ~]# rsync -av /root/111/ /tmp/111_dest/
sending incremental file list
./
.12.txt.swp
.12.txt.swx
12.txt
12_txt.swp
qkailinux.log -> yum.log
yum.log.bak
222/
sent 4,613 bytes received 121 bytes 9,468.00 bytes/sec
total size is 4,168 speedup is 0.88
rsync通过ssh同步
远程同步文件
[root@qklinux-01 ~]# rsync -av /etc/passwd 192.168.18.139:/tmp/qkai.txt
root@192.168.18.139's password:
sending incremental file list
passwd
sent 1,362 bytes received 35 bytes 310.44 bytes/sec
total size is 1,270 speedup is 0.91
在02机器上查看同步文件
[root@qklinux-02 ~]# cat /tmp/qkai.txt
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
也可以反着同步回本机
[root@qklinux-01 ~]# rsync -avP 192.168.18.139:/tmp/qkai.txt /tmp/123.txt
root@192.168.18.139's password:
Permission denied, please try again.
root@192.168.18.139's password:
receiving incremental file list
qkai.txt
1,270 100% 1.21MB/s 0:00:00 (xfr#1, to-chk=0/1)
sent 43 bytes received 1,364 bytes 46.13 bytes/sec
total size is 1,270 speedup is 0.90
如果对方端口不是22
[root@qklinux-01 ~]# rsync -avP -e "ssh -p 22" /etc/passwd 192.168.18.139:/tmp/qkai.txt
root@192.168.18.139's password:
sending incremental file list
sent 45 bytes received 12 bytes 16.29 bytes/sec
total size is 1,270 speedup is 22.28
ssh –p 22是一个命令 可以直接连接对方机器
[root@qklinux-01 ~]# ssh -p 22 192.168.18.139
root@192.168.18.139's password:
Last failed login: Sun Apr 21 21:31:49 CST 2019 from 192.168.18.138 on ssh:notty
There was 1 failed login attempt since the last successful login.
Last login: Sun Apr 21 21:23:39 2019 from 192.168.18.1
rsync通过服务同步
步骤:
1.编辑配置问件 /etc/rsyncd.conf
2.启动服务rsync --daemont
3.格式:rsync –av test1/192.168.133.130::module/dir/
配置文件插入新的配置
#vim /etc/rsyncd.conf
port=873
log file=/var/log/rsync.log
pid file=/var/run/rsyncd.pid
address=192.168.18.138
[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.18.139
启动rsync服务
[root@qklinux-01 ~]# rsync –daemon
[root@qklinux-01 ~]# ps aux |grep rsync
root 6674 0.0 0.0 114744 996 pts/0 T 20:18 0:00 rsync -av /etc/passwd root@192.168.18.138:/tmp/1.txt
root 6675 0.0 0.3 178544 3936 pts/0 T 20:18 0:00 ssh -l root 192.168.18.138 rsync --server -vlogDtpre.iLsfxC . /tmp/1.txt
root 7429 0.0 0.0 114744 568 ? Ss 21:51 0:00 rsync --daemon
root 7433 0.0 0.0 112724 988 pts/0 R+ 21:52 0:00 grep --color=auto rsync
[root@qklinux-01 ~]# netstat -lntp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 192.168.18.138:873 0.0.0.0:* LISTEN 7429/rsync
tcp 0 0 0.0.0.0:53 0.0.0.0:* LISTEN 6126/dnsmasq
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 6124/sshd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 6266/master
tcp6 0 0 :::53 :::* LISTEN 6126/dnsmasq
tcp6 0 0 :::22 :::* LISTEN 6124/sshd
tcp6 0 0 ::1:25 :::* LISTEN 6266/master
创建测试目录
[root@qklinux-01 ~]# mkdir /tmp/rsync
[root@qklinux-01 ~]# chmod 777 /tmp/rsync
关闭01和02机器的firewalld
[root@qklinux-01 ~]# systemctl stop firewalld
[root@qklinux-01 ~]# iptables -nvL
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
在01上修改配置文件 关掉定义密码
port=873
log file=/var/log/rsync.log
pid file=/var/run/rsyncd.pid
address=192.168.18.138
[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.18.139
在02机器上同步文件
[root@qklinux-02 ~]# rsync -avP /tmp/qkai.txt 192.168.18.138::test/qkai-02.txt
sending incremental file list
qkai.txt
1,270 100% 0.00kB/s 0:00:00 (xfr#1, to-chk=0/1)
sent 1,364 bytes received 35 bytes 2,798.00 bytes/sec
total size is 1,270 speedup is 0.91
在01上查看同步文件
[root@qklinux-01 ~]# ls /tmp/rsync/
qkai-02.txt
配置文件含义
在/etc/rsyncd.conf文件中
port:指定在哪个端口启动rsyncc服务,默认是873端口
log file :制定日志文件。
pid file:制定pid文件,这个文件的作用涉及服务的启动,停止等进程管理操作。address :指定启动rsync服务的IP。加入你的机器有多个IP,就可以指定由其中一个启动
rsyncd服务,如果不指定该参数,默认是在全部IP上启动。
[]:指定模块名,里面内容自定义
path:指定数据存放的路径。
usr chroot
true|false:表示在传输文件前首先chroot到path参数所指定的目录下。这样做的原因是实现额外的完全防护,但缺点是需要以roots权限,并且不能被封指向外部符号的连接所指向的目录文件。默认情况下chroot值为true,如果你的数据当中有软连接文件,建议设置成false
演示说明:
1. 创建一个软连接文件
[root@qklinux-01 ~]# cd /tmp/rsync/
[root@qklinux-01 rsync]# ls
qkai-02.txt
[root@qklinux-01 rsync]# ln -s /etc/passwd ./12.txt
[root@qklinux-01 rsync]# ls -l
总用量 4
lrwxrwxrwx 1 root root 11 4月 22 09:34 12.txt -> /etc/passwd
-rw-r--r-- 1 root root 1270 4月 14 19:05 qkai-02.txt
在01上修改配置文件
#vim /etc/rsyncd.conf
port=873
log file=/var/log/rsync.log
pid file=/var/run/rsyncd.pid
address=192.168.18.138
[test]
path=/tmp/rsync
use chroot=false
max connections=4
read only=no
list=true
uid=root
gid=root
#auth users=test
#secrets file=/etc/rsyncd.passwd
在02机器上同步目录
[root@qklinux-02 ~]# rsync -avLP 192.168.18.138::test/ /tmp/test/
receiving incremental file list
12.txt
1,270 100% 1.21MB/s 0:00:00 (xfr#1, to-chk=1/3)
sent 43 bytes received 1,404 bytes 125.83 bytes/sec
total size is 2,540 speedup is 1.76
max connections:指定最大的连接数,默认为0,既没有限制
read only ture|false:如果为true,则不能上传到该模块指定的路径下
list:表示当用户查询该服务上的可用模块时,该模块是否被列出,设定为true则出,false则隐藏
–port 8730指定端口
#rsync --port=873 192.168.18.138::
跟改配置文件 隐藏模块名
#vim /etc/rsyncd.conf
list=false
uid/gid:指定传输文件时以那个用户/组的身份传输。
[root@qklinux-01 rsync]# ls -l /tmp/rsync/
总用量 4
lrwxrwxrwx 1 root root 11 4月 22 09:34 12.txt -> /etc/passwd
-rw-r--r-- 1 root root 1270 4月 14 19:05 qkai-02.txt
修改配置文件
[root@qklinux-01 rsync]# fg
vim /etc/rsyncd.conf
#[ftp]
#path = /home/ftp
#comment = ftp export area
port=873
log file=/var/log/rsync.log
pid file=/var/run/rsyncd.pid
address=192.168.18.138
[test]
path=/tmp/rsync
use chroot=false
max connections=4
read only=no
list=true
uid=root
gid=root
#auth users=test //指定用户名
#secrets file=/etc/rsyncd.passwd //指定密码
auth users:指定传输室使用的用户名
secrets
file:指定密码文件,该参数连通上面的参数如果不指定,则不使用密码验证。注意该密码文件的权限一定要是600.格式:用户名:密码hosts allow :表示被允许连接该模块的主机,可以是IP或者网段,如果是多个中间用空格隔开。
当设置了auth users和secrets file后,客户端连服务端也需要用用户名密码了,若想在命令行中带上密码,可以设定一个密码文件。
rsync –avL test@192.168.133.130::test/test1/ /tmp/test/8 –password-file=/etc/pass
其中/etc/pass内容是一个密码,权限要改为600
1. 创建密码文件 设置权限
#vim /etc/rsyncd.passwd
[root@qklinux-01 rsync]# chmod 600 !$
chmod 600 /etc/rsyncd.passwd
2. 在02机器上同步文件 指定用户名 需要输入密码
[root@qklinux-02 ~]# rsync -avP /tmp/test/ --port=873 test@192.168.18.138::test/
Password:
sending incremental file list
./
12.txt
1,270 100% 0.00kB/s 0:00:00 (xfr#1, to-chk=1/3)
qkai-02.txt
1,270 100% 1.21MB/s 0:00:00 (xfr#2, to-chk=0/3)
sent 2,720 bytes received 57 bytes 168.30 bytes/sec
total size is 2,540 speedup is 0.91
3在客户端02机器设置密码文件
[root@qklinux-02 ~]# vi !$
vi /etc/rsync_pass.txt
root@qklinux-02 ~]# chmod 600 /etc/rsync_pass.txt
同步数据不用输入密码
[root@qklinux-02 ~]# rsync -avP /tmp/test/ --port=873 --password-file=/etc/rsync_pass.txt test@192.168.18.138::test/sending incremental file listxt test@192.168.18.138::test/
sent 87 bytes received 12 bytes 198.00 bytes/sec
total size is 2,540 speedup is 25.66
LINUX系统日志
/var/log/messages //系统服务日志
[root@qklinux-01 ~]# ls /var/log/messages
/var/log/messages
*查看系统 可以看到日志自动切割
[root@qklinux-01 ~]# ls /var/log/messages*
/var/log/messages /var/log/messages-20190414
/var/log/messages-20190331 /var/log/messages-20190421
/var/log/messages-20190409
系统中logrotate服务 自动切割日志
[root@qklinux-01 ~]# cat /etc/logrotate.conf
#see "man logrotate" for details
#rotate log files weekly
weekly //每周切割
#keep 4 weeks worth of backlogs //保持周四的
rotate 4 //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.
查看文件
[root@qklinux-01 ~]# ls /etc/logrotate.d
bootlog chrony syslog wpa_supplicant yum
[root@qklinux-01 ~]# cat /etc/logrotate.d/sysylog
cat: /etc/logrotate.d/sysylog: 没有那个文件或目录
[root@qklinux-01 ~]# 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命令,把系统硬件相关日志列出来 可以查看网卡硬盘问题
[root@qklinux-01 ~]# dmesg |head -5
[ 0.000000] Initializing cgroup subsys cpuset
[ 0.000000] Initializing cgroup subsys cpu
[ 0.000000] Initializing cgroup subsys cpuacct
[ 0.000000] Linux version 3.10.0-957.el7.x86_64 (mockbuild@kbuilder.bsys.centos.org) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-36) (GCC) ) #1 SMP Thu Nov 8 23:39:32 UTC 2018
[ 0.000000] Command line: BOOT_IMAGE=/vmlinuz-3.10.0-957.el7.x86_64 root=UUID=3646b5b2-e8b2-449e-9d23-60ddc2eb3bc8 ro crashkernel=auto rhgb quiet LANG=zh_CN.UTF-8
dmesg –c可以清空当前日志
/var/log/dmesg日志文件 系统启动的一个日志记录的信息
last命令
last命令 查看正确的登录历史
[root@qklinux-01 ~]# last |head -5
root pts/1 192.168.18.1 Mon Apr 22 13:03 still logged in
root pts/0 192.168.18.1 Mon Apr 22 09:33 still logged in
root tty1 Mon Apr 22 09:30 still logged in
reboot system boot 3.10.0-957.el7.x Mon Apr 22 09:24 - 13:23 (03:59)
root pts/0 192.168.18.1 Sun Apr 21 19:50 - crash (13:33)
这个日志记录是谁 在哪里和IP来源 时间登陆的时长都会有记录
/var/log/wtmp 日志是一个二进制文件,不能直接cat查看,只能用last命令查看
lastb命令
查看登录失败用户
[root@qklinux-01 ~]# lastb
root tty1 Tue Apr 16 17:26 - 17:26 (00:00)
root tty1 Tue Apr 16 17:26 - 17:26 (00:00)
root tty1 Tue Apr 16 17:26 - 17:26 (00:00)
btmp begins Tue Apr 16 17:26:05 2019
安全日志
/var/log/secure 登陆成功或失败会在这里记录
[root@qklinux-01 ~]# cat /var/log/secure |head -5
Apr 21 22:03:05 qklinux-01 polkitd[5501]: Registered Authentication Agent for unix-process:7533:831878 (system bus name :1.59 [/usr/bin/pkttyagent --notify-fd 5 --fallback], object path /org/freedesktop/PolicyKit1/AuthenticationAgent, locale zh_CN.UTF-8)
Apr 21 22:03:06 qklinux-01 polkitd[5501]: Unregistered Authentication Agent for unix-process:7533:831878 (system bus name :1.59, object path /org/freedesktop/PolicyKit1/AuthenticationAgent, locale zh_CN.UTF-8) (disconnected from bus)
Apr 21 22:29:58 qklinux-01 polkitd[5501]: Registered Authentication Agent for unix-process:7694:993159 (system bus name :1.64 [/usr/bin/pkttyagent --notify-fd 5 --fallback], object path /org/freedesktop/PolicyKit1/AuthenticationAgent, locale zh_CN.UTF-8)
Apr 22 09:24:26 qklinux-01 polkitd[5496]: Loading rules from directory /etc/polkit-1/rules.d
Apr 22 09:24:26 qklinux-01 polkitd[5496]: Loading rules from directory /usr/share/polkit-1/rules.d
screen工具虚拟终端
安装工具
#yum install -y screen
screen-ls 查看一打开的screen会话
[root@qklinux-01 ~]# screen -ls
There is a screen on:
7521.pts-1.qklinux-01 (Detached)
1 Socket in /var/run/screen/S-root.
ctrl+a 按d退出 如果退出后如果想再次登入screen会话 可以使用screen –r 编号
root@qklinux-01 ~]# screen -r 7521
[screen is terminating]
[root@qklinux-01 ~]# screen -ls
No Sockets found in /var/run/screen/S-root.
如果是多个screen会话。screen >ctrl +a 在按d 仅其中一个指定id就可以
[root@qklinux-01 ~]# screen -ls
There are screens on:
7590.pts-1.qklinux-01 (Detached)
7573.pts-1.qklinux-01 (Detached)
7556.pts-1.qklinux-01 (Detached)
3 Sockets in /var/run/screen/S-root.
如果时间久了 不知道screen的作用 需要自定义
#screen -S "test_screen"
[root@qklinux-01 ~]# screen -ls
There are screens on:
7644.test_screen (Detached)
7590.pts-1.qklinux-01 (Detached)
7573.pts-1.qklinux-01 (Detached)
7556.pts-1.qklinux-01 (Detached)
4 Sockets in /var/run/screen/S-root.
直播扩展
rsync的使用场景
日志切割工具logrotate
https://linux.cn/article-4126-1.html
xargs
https://blog.youkuaiyun.com/gb4215287/article/details/78037520