scp -r 源文件用户名A@主机名1:path1 目标文件用户名B@主机名2:path2
-r: 递归,复制目录
执行过程:
在主机1上,使用A用户读取path1的文件
再使用用户B登录到主机2,在主机2的path2路径执行写入!
要求: 用户名A@主机名1 对path1有读权限
用户名B@主机名2 对path2有写权限
使用:
rsync -rvlt path1 目标文件用户名B@主机名2:path2
-r: 递归,复制目录
-v: 显示复制的过程
-l: 同步软连接
-t: 基于文件的修改时间进行对比,只同步修改时间不同的文件
只能将本机的文件同步到其他机器!
path1是个目录,目录以/结尾,只会同步目录中的内容,不会同步目录本身!
path1是个目录,目录不以/结尾,同步目录中的内容,也会同步目录本身!
1)一般liunx系统默认自带rsync,我们之间使用
常见的选项:
-a,–archive(存档) 归档模式,表示以递归的方式传输文件,并且保持文件属性,等同于加了参数-rlptgoD
-r,–recursive 对子目录以递归模式处理
-l,–links 表示拷贝链接文件
-p , --perms 表示保持文件原有权限
-t , --times 表示保持文件原有时间
-g , --group 表示保持文件原有属用户组
-o , --owner 表示保持文件原有属主
-D , --devices 表示块设备文件信息
-z , --compress 表示压缩传输
-e,指定接收服务器端口,例如: -e ‘ssh -p 22000’
-H 表示硬连接文件
-A 保留ACL属性信息
-P 显示传输进度
–delete 删除那些目标位置有而原始位置没有的文件
rsync -azP --delete /var/www/html/ root@192.168.1.64:/web-back
rsync -azP -e 'ssh -p 22000' --delete /var/www/html/ root@211.149.213.241:/web-back
使用ssh密钥实现无交互备份。做成脚本,将server01上的数据,定期备份到server02上。
[root@server01 ~]# ssh-keygen
[root@server01 ~]# ll -a /root/.ssh/
[root@server01 ~]# ssh-copy-id root@192.168.1.64
相当于你执行了:
scp /root/.ssh/id_rsa.pub root@192.168.1.64:/root/.ssh/authorized_keys
2)配置rsync+inotify实现实时同步
下载地址: https://sourceforge.net/projects/inotify-tools/files/inotify-tools/3.13/inotify-tools-3.13.tar.gz/download
查看是否支持inotify,从kernel 2.6.13开始正式并入内核。
[root@server01 ~]# uname -r
3.10.0-957.5.1.el7.x86_64
上传 inotify-tools-3.13.tar.gz
tar -zxvf inotify-tools-3.13.tar.gz
cd inotify-tools-3.13
./configure 检查安装环境
make -j 4 #make编译,将源代码编译成二进制,可执行的文件
make install # 安装
inotifywait -h
常用参数:
-e 用来指定要监控哪些事件。
这些事件包括: create创建,move移动,delete删除,modify修改文件内容,attrib属性更改。
-m 表示持续监控
-r 表示递归整个目录
-q 表示简化输出信息。
在另一个终端登录,在/var/www/html目录进行相关的操作,然后,回到原来的终端查看监控变化情况。
echo aaa > /var/www/html/a.html
mkdir /var/www/html/test
cp /etc/passwd /var/www/html/test/
rm -rf /var/www/html/test/passwd
#!/bin/bash
inotifywait -mrq -e create,move,delete,modify /var/www/html/ | while read a b c
do
rsync -azP --delete /var/www/html/ root@192.168.10.64:/web-back # 192.168.10.64 备份的服务器
done
登录后复制
chmod +x copy.sh
后台挂载命令
nohup bash copy.sh &
另外启动方法 setid