在主机A 使用root用户生成配对密钥
ssh-keygen -t rsa
遇到提示回车默认即可,公钥被存放在用户目录下.ssh 如root用户下 即/root/.ssh/id_rsa.pub就是公钥
将主机A中 /root/.ssh/id_rsa.pub复制到主机B中.ssh 目录并改名authorized_keys 和主机B建立信任,(假设主机B的IP为192.168.2.104)
scp /root/.ssh/id_rsa.pub [email protected]:/root/.ssh/authorized_keys
下面使用ssh scp 等命令不需要输入密码了(使用ssh验证即可)
在有数据的机器执行以下命令
假设 /data 为数据存放目录
192.168.0.104 为需要同步的数据的机器
在/root/创建rsync.sh
vim /root/rsync.sh
并加入#!/bin/bash
rsync -avz /data [email protected]:/data
后按Esc键 输入:wq 退出
如下图
给脚本加权限
chmod 777 /root/rsync.sh
执行脚本验证数据是否同步
同步后设置定时任务 每天凌晨2点执行一次备份
编辑/etc/crontab
在文件最后的#上面添加 * 2 * * * root sudo /root/rsync.sh
如下图
定时任务设置完成后重启定时服务
systemctl restart cron
即可完成定时同步数据,以下是rsync的用法介绍
Rsync高效的数据备份,第一次完全备份,以后都是差异备份
rsync -zvr filename1 filename2
上述代码是将filename1中的文件与filename2中的文件同步,如果将filename2中的文件同步到filename1中,修改代码为:
$ rsync -zvr filename2 filename1
$ rsync -azv filename1 filename2
使用上述命令,将filename2中新同步的文件的时间与filename1中的创建的时间相同,它保留符号链接、权限、时间标记、用户名及组名相同。
$rsync -avz filename1 [email protected]:/home/ubuntu/filename2
上述命令是将本地的filename1同步到远程192.168.0.1的主机上。
注意:如果远程主机的端口不是默认的22端口,假如是3000端口,上述的命令修改为,
rsync -avz '-e ssh -p 4000' filename1 [email protected]:/home/ubuntu/filename2
与步骤3类似,只是将filename1与远程服务器的位置对换一下,
$rsync -avz [email protected]:/home/ubuntu/filename2 filename1
同理如果端口不是22,使用以下命令
$ rsync -avz '-e ssh -p 4000' [email protected]:/home/ubuntu/filename2 filename1
————————————————
-v, --verbose 详细模式输出
-a, --archive 归档模式,表示以递归方式传输文件,并保持所有文件属性,等于-rlptgoD
--delete 删除那些DST中SRC没有的文件
-z, --compress 对备份的文件在传输时进行压缩处理
码
–password-file=FILE 从FILE中得到密码