-mtime +n n*24 小时ago
-atime
24小时是一天,不够24小时的话不会找出那个文件。
man find
File’s data was last modified n*24 hours ago.
x|:将上一个命令所执行的结果作为下一条命令的标准输入
xargs:将上一条命令所执行的结果作为下一条命令的参数
-n:指定显示的参数个数
-d:定义分割符,默认是以空格和换行符
-i|-I:指定替换字符,用于替换。{}
[root@node1 data]# find /data/ -type f -mtime -2|xargs -ti mv {} {}.bak
mv /data/2018-07-07.dp /data/2018-07-07.dp.bak
mv /data/2018-07-08.dp /data/2018-07-08.dp.bak
mv /data/2018-07-06.dp /data/2018-07-06.dp.bak
xxxxxxxxxx
是否支持tcp_wrappers功能?
# ldd /usr/sbin/smbd|grep libwrap 不支持
xxxxxxxxxx
1. cifs工具包
2. 用户名和密码是否写对
3. smb服务是否开启
4. 检查防火墙和selinux
###RSYNC实现数据同步
思考:
以我们目前所学的知识,如何将A主机的一个目录的数据同步到B主机上?
rsync的好姐妹
rsync的特点
xxxxxxxxxx
NAME
rsync — a fast, versatile, remote (and local) file-copying tool
//一种快速、通用、远程(和本地)的文件复制工具
SYNOPSIS
Local: rsync [OPTION...] SRC... [DEST]
Access via remote shell:
//通过远程shell访问(命令)
Pull: rsync [OPTION...] [USER@]HOST:SRC... [DEST]
Push: rsync [OPTION...] SRC... [USER@]HOST:DEST
Access via rsync daemon:
//通过后台程序访问(作为服务)
Pull: rsync [OPTION...] [USER@]HOST::SRC... [DEST]
rsync [OPTION...] rsync://[USER@]HOST[:PORT]/SRC... [DEST]
Push: rsync [OPTION...] SRC... [USER@]HOST::DEST
rsync [OPTION...] SRC... rsync://[USER@]HOST[:PORT]/DEST
xxxxxxxxxx
-v 详细模式输出
-a 归档模式,递归的方式传输文件,并保持文件的属性,equals -rlptgoD
-r 递归拷贝目录
-l 保留软链接
-p 保留原有权限
-t 保留原有时间(修改)
-g 保留属组权限
-o 保留属主权限
-D 等于--devices --specials 表示支持b,c,s,p类型的文件
-R 保留相对路径
-H 保留硬链接
-A 保留ACL策略
-e 指定要执行的远程shell命令
-E 保留可执行权限
-X 保留扩展属性信息 a属性
xxxxxxxxxx
rsync -av /data/ /test 将/data/下的所有文件同步
rsync -av /data /test 将/data目录本身以及目录里的所有文件同步
结论:需要同步的目录后面的斜杠"/"会影响同步的结果
-R:保留相对路径 不管有没有斜杠"/",都会将目录以及目录里的内容一起同步
xxxxxxxxxx
rsync -av /data/ 10.1.1.2:/backup
rsync -av root@10.1.1.2:/backup /data
结论:需要同步的目录后面的斜杠"/"会影响同步的结果
-R:保留相对路径 不管有没有斜杠"/",都会将目录以及目录里的内容一起同步
注意:
rsync同步依赖于sshd服务。
课堂练习1:
将rsync托管给xinetd服务管理(做成daemon服务)有哪些好处?
主要涉及两个知识点: 1、xinetd服务 2、rsyncd.conf配置文件
需求:
将本地的/data目录数据文件使用服务同步到本地的/test目录
思路:
步骤:
① 修改/etc/xinetd.d/rsync子配置文件
xxxxxxxxxx
service rsync
{
disable = no 打开rsync服务功能yes——>no
socket_type = stream
wait = no
user = root 运行身份
server = /usr/bin/rsync
server_args = --daemon 以后台进程的方式运行
log_on_failure += USERID
}
② 创建主配置文件/etc/rsyncd.conf
xxxxxxxxxx
语法:
全局参数:可以指定默认端口、pid文件、ip地址等
motd file=/etc/rsyncd.welcome 欢迎文件,路径自定义[可选]
局部参数
[notes] 共享给客户端看到的名字,名字自定义
path=/share/dir/ 实际共享的服务器路径,名字必须是你要共享的实际路径
③重启xinetd服务
④ 测试验证
xxxxxxxxxx
rsync -a 10.1.1.10:: 查看10.1.1.10这个服务器共享了哪些
rsync -a 10.1.1.10::notes /notes/ 将远程同步到本地notes目录里,这样同步,是不需要密码的
[root@node1 xinetd.d]# rsync -av localhost::notes /test/
欢迎来到传智黑马网络安全+运维课堂来学习
receiving incremental file list
rsync: opendir "/." (in notes) failed: Permission denied (13)
./
sent 30 bytes received 198 bytes 456.00 bytes/sec
total size is 0 speedup is 0.00
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1505) [generator=3.0.6]
分析:
。。。。
解决:
检查防火墙和selinux是否关闭。
总结:
没有密码有好处也有坏处,好处是不需要密码方便写脚本做远程同步;坏处就是不安全,但你可以使用防火墙等来加强安全。
同步可能出现的问题:
如果同步报permission denied这种,可能是服务端selinux没有关闭
同步时间慢:
如果你希望有密码,可以用rsyncd本身自带的secrets file来做用户验证
① 修改主配置文件
xxxxxxxxxx
vim /etc/rsyncd.conf
motd file=/etc/rsyncd.welcome
[notes]
comment=共享给客户端看到的名字,可以自己定义
path=/dir1/share
auth users = user1,user2
secrets file = /etc/rsyncd.secrets
② 创建安全用户,该文件不能被其他人查看
xxxxxxxxxx
vim /etc/rsyncd.secrets
user1:123
user2:123
chmod 600 /etc/rsyncd.secrets
说明: 服务端rsync服务是以什么用户运行,则必须保证secrets file文件拥有者必须是同一个;
假设root运行rsync --daemon,则secrets file的owner也必须是root;secrets file权限必须是600
③ 测试验证
xxxxxxxxxx
[root@MissHou ~]# rsync -a user1@10.1.1.10::notes /dir1/
--delete参数:删除目标路径下的多余的文件(相对源路径下的文件)
课堂练习2:
xxxxxxxxxx
[root@node2 ~]# rsync -av /dir2/ 10.1.1.1::notes
欢迎来到传智黑马网络安全+运维课堂来学习
Password:
@ERROR: auth failed on module notes
rsync error: error starting client-server protocol (code 5) at main.c(1503) [sender=3.0.6]
原因:认证失败
解决:检查密码文件
[root@node2 ~]# rsync -av /dir2/ uu1@10.1.1.1::notes
欢迎来到传智黑马网络安全+运维课堂来学习
Password:
sending incremental file list
ERROR: module is read only 模块只读
rsync error: syntax or usage error (code 1) at main.c(866) [receiver=3.0.6]
rsync: read error: Connection reset by peer (104)
rsync error: error in rsync protocol data stream (code 12) at io.c(759) [sender=3.0.6]
分析:
所有模块默认就是只读的,不允许客户端上传文件,man 5 rsyncd.conf ——>read only = true|false
解决:
vim /etc/rsyncd.conf
[notes]
.....
read only = flase
再次测试上传时,报以下错误:
[root@node2 ~]# rsync -av /dir2/ uu1@10.1.1.1::notes
欢迎来到传智黑马网络安全+运维课堂来学习
Password:
sending incremental file list
./
rsync: failed to set times on "/." (in notes): Operation not permitted (1)
install.log
install.log.syslog
rsync: mkstemp "/.install.log.ooQRLe" (in notes) failed: Permission denied (13)
rsync: mkstemp "/.install.log.syslog.G9QEll" (in notes) failed: Permission denied (13)
sent 62305 bytes received 49 bytes 17815.43 bytes/sec
total size is 62157 speedup is 1.00
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1039) [sender=3.0.6]
原因:客户端默认情况下是以nobody身份上传文件的,模块的路径/data目录本身对于匿名用户没有可写权限
解决:
1. 直接chmod +w /data/ 不推荐
2. 修改配置文件/etc/rsyncd.conf
[notes]
...
read only = false
uid = root
gid = root
需求1:将主机A上的/dir1目录的==数据实时同步==到A主机(本机)的/dir2目录里
xxxxxxxxxx
# tar xf inotify-tools-3.13.tar.gz -C /usr/src/
# cd /usr/src/inotify-tools-3.13/
# ./configure
# make
# make install
安装完后,就会产生下面两个命令
/usr/local/bin/inotifywait 等待 用于监控文件或目录的变化
/usr/local/bin/inotifywatch 看守 用于统计文件系统的访问信息
xxxxxxxxxx
[root@node1 ~]# echo 1 |while read i;do echo $i;done
1
[root@node1 ~]# echo hello |while read i;do echo $i;done
hello
#!/bin/bash
/usr/local/bin/inotifywait -mrq -e modify,move,create,delete,attrib /dir1 |while read events
do
rsync -a --delete /dir1 /dir2/
echo "`date +%F\ %T`出现事件$events" >> /var/log/rsync.log 2>&1
done
# chmod +x 1.sh
# nohup ./1.sh &
-m:一直保持监控
-r:递归
-q:打印事件
--delete 参数:如果目标目录里的数据比源目标多,那么需要删除无用的相关的数据
xxxxxxxxxx
注意:在后台一直执行
需求2:将主机A上的/data目录的数据实时同步到主机B的/backup目录里
xxxxxxxxxx
思路:
错误:
xxxxxxxxxx
错误:
@ERROR: chroot failed //rsyncd.conf文件中path路径不存在导致
rsync error: error starting client-server protocol (code 5) at main.c(1503) [sender=3.0.6]
将主机A上的/share/dir1目录远程同步到主机B上的/backup/dir2目录里,要求如下:
1、把日志记录到/var/log/rsyncd.log
2、共享模块要求隐藏(也就是说客户端查看不到这个模块名)
3、并且同时只能1个客户端连接进行同步这个module
4、只能允许x.x.x.x(ip你自定义)同步这个module
5、只能早上9点到下午6点同步
主机A上的/data/dir1目录和主机B上的/backup目录里的数据实现双向实时同步