当前位置: 首页 > 工具软件 > 复制增量 > 使用案例 >

scp(安全拷贝)和rsync(增量复制)

胥智
2023-12-01
  1. scp(安全拷贝)
    又称为全量复制,每次复制都会复制所有文件。
    使用:

scp -r 源文件用户名A@主机名1:path1 目标文件用户名B@主机名2:path2
-r: 递归,复制目录
执行过程:

在主机1上,使用A用户读取path1的文件
再使用用户B登录到主机2,在主机2的path2路径执行写入!
要求: 用户名A@主机名1 对path1有读权限
用户名B@主机名2 对path2有写权限

  1. rsync (远程同步)
    可以只同步变化的文件(对比文件的修改时间)!增量同步!

使用:

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
  1. 编写脚本 touch copy.sh
#!/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

 类似资料: