学习linux17

本文介绍了Linux系统下的数据备份工具rsync,包括安装、常用选项和使用实例,如本地和远程同步数据,详细解析了rsync的参数设置,如-a、-v、-z等,并展示了通过ssh和服务方式的同步方法。此外,还提到了日志文件和screen虚拟终端的相关内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

学习笔记

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值