Linux rsync命令两个服务器之间同步文件夹

一、简介

rsync 是一个常用的 Linux 应用程序,用于文件同步。它可以在本地计算机与远程计算机之间,或者两个本地目录之间同步>文件(但不支持两台远程计算机之间的同步)。它也可以当作文件复制工具,替代cp和mv命令。

它名称里面的r指的是 remote远程,rsync 其实就是"远程同步"(remote sync)的意思。与其他文件传输工具(如 FTP 或 scp)不同,rsync 的最大特点是会检查发送方和接收方已有的文件,仅传输有变动的部分(默认规则是文件大小或修改时间有变动)。

二、安装

如果本机或者远程计算机没有安装 rsync,可以用下面的命令安装。

使用root用户安装rsync

# Debian
$ sudo apt-get install rsync
# Red Hat
$ sudo yum install rsync -y
# Arch Linux
$ sudo pacman -S rsync

三、实现本地同步

rsync [选项] 源路径 目标路径

rsync -av /testPath1 /testPath2

选项描述

选项描述
-a归档模式,它等价于 -rlptgoD(递归、符号链接、权限、时间戳、组、设备文件、递归目录)
-v详细模式,打印更多信息
-z压缩数据进行传输
-e指定使用的远程shell
–delete删除目标位置有而源位置没有的文件,保持目标同步源数据请根据实际情况选择适当的选项进行同步

四、实现ssh有密码步

从目标机同步到本地:rsync [选项] -e “ssh -p 22” 用户名@IP或域名:源目录 目标目录
从本地同步到目标机:rsync [选项] -e “ssh -p 22” 目标目录 用户名@IP或域名:源目录

默认 -e “ssh -p 22” 可以省略,如果需要调整端口可以带着

rsync -av appcms@remote:/path/to/source /path/to/destination

执行汇报这个错说明没有权限,进行赋权

chmod 644 /etc/crypto-policies/back-ends/openssh.config

在这里插入图片描述

五、实现ssh免密同步

本机生成密钥,直接回车三次即可
ssh-keygen -t rsa
在这里插入图片描述

将密钥推送到目标服务器,输入appcms用户密码
ssh-copy-id appcms@10.20.140.xxx
在这里插入图片描述

公钥将被推到10.20.140.xxx服务器appcms用户的authorized_keys这个文件中
在这里插入图片描述

使用命令测试链接
ssh appcms@10.20.140.xxx
在这里插入图片描述

免密连接成功,使用 exit; 命令退出

六、实现定时免密同步

创建同步sh命令文件,添加以下命令
同步文件夹、打印同步日志、本机没有的文件目标机也删除保持一致

rsync -av --delete /app/appcms/t1/ appcms@10.20.140.xxx:/app/appcms/t3/

root用户设置执行权限

chmod +x /app/appcms/rsycnHtmlToNginxServer.sh

编辑任务文件

crontab -e

添加执行任务

# 每分钟执行一次
* * * * * /app/appcms/rsycnHtmlToNginxServer.sh

查看定时任务执行日志

tail -1000f /var/log/cron

提示“文本文件忙”时,可以将rsycnHtmlToNginxServer.sh文件保存下来,将本文件删除,重新上传并重新赋权即可

在这里插入图片描述

六、使用普通用户定时免密同步(安全性更高)

使用appcms(按实际来)普通用户登录,按第五步创建ssh秘钥

修改私钥名称

mv /home/appcms/.ssh/id_rsa /home/appcms/.ssh/rsa_appcms

将公钥放到目标机(我目标机普通用户也是appcms)
普通用户的authorized_keys文件中,没有时则创建

mkdir /home/appcms/.ssh/
cd /home/appcms/.ssh/
mv authorized_keys

将主机的私钥粘贴进去,保存。

创建同步rsyncAppcms.sh命令文件

vi /home/appcms/rsyncAppcms.sh

添加以下命令,指定使用的私钥,同步文件夹、打印同步日志、本机没有的文件目标机也删除保持一致

nohup rsync -av --delete -e "ssh -i /home/appcms/.ssh/rsa_appcms" /app/appcms/t1/ appcms@10.20.140.xxx:/app/appcms/t3/ &

root用户设置执行权限

chmod +x /home/appcms/rsyncAppcms.sh

在定时任务文件夹中,创建任务文件

vi /etc/cron.d/rsyncAppcmsServer

添加一下内容

# 每分钟执行一次
* * * * * /home/appcms/rsyncAppcms.sh

重启Crontab服务,可以通过以下方法之一操作:

  1. 通过命令重启Crontab服务:
  • 执行命令sudo service cron restart,使用sudo命令获取管理员权限。
  • 执行命令sudo systemctl restart cron,使用systemctl命令重启Cron服务。
  1. 通过命令重启Crontab服务及其配置文件:
  • 执行命令sudo service cron stop停止Crontab服务。
  • 执行命令sudo crontab /etc/crontab重新加载Crontab配置文件。
  • 执行命令sudo service cron start启动Crontab服务。
    注意:这些命令可能会因Linux发行版的不同而有所变化,请根据自己的系统进行适当的调整。
  • 12
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

乾坤鸟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值