rsync 同步本地文件到远端

本文介绍了如何通过ssh和rsync命令实现远程文件的同步,并详细解析了rsync命令的参数,如-a、-v、-z、--delete和--exclude等,用于排除特定文件和目录,同时实现删除远程端不再存在的文件。此外,还展示了如何通过ssh执行远程脚本以完成更多自动化任务。

为了方便可以使用密钥登录:

# 将公钥发给需要远程同步的机器上,只需要输入一次密码即可
 ssh-copy-id -i ~/.ssh/id_rsa.pub root@x.x.x.x

想要达到的同步效果:
1. 某些文件不要同步过去
2. 某些目录不要同步过去
3. 远端删除本地删掉的文件
4. 包括子目录在内的所有文件都同步过去

同步命令如下:

ROOT_DIR=$(cd `dirname $0`; pwd)
DIR_NAME=$(basename ${ROOT_DIR})

HOST_IP="x.x.x.x"
HOST_USER="root"

rsync -avz --delete \
--exclude='lib/' \
--exclude='gateway/gateway' \
--exclude='WinPcap_4_1_3.exe' \
--exclude='*.log' \
${ROOT_DIR}/ ${HOST_USER}@${HOST_IP}:/tmp/${DIR_NAME}

参数说明:
1. -a, --archive 归档模式,表示以递归方式传输文件,并保持所有文件属性,等于-rlptgoD
2. -v, --verbose 详细模式输出
3. -z, --compress 传输的时候压缩文件
4. --delete 删除远端上本地不存在的文件
5. --exclude 不包含哪些文件,要特别注意这里是模式匹配的,如果目录名和文件名一致,需要将路径也指定进去,不然同步会不完整,配置的时候需要观察一下,嗯,也不可以使用绝对路径,指定目录用’lib/’、也可用通配符’*/log’、也可以直接是文件名’WinPcap_4_1_3.exe’、或包含路径的文件名’gateway/gateway’

当然了,因为自己想要的不只是目录同步,所以呢,也可以配合ssh来做一些其它的事情
ssh执行命令如下:

ssh ${HOST_USER}@${HOST_IP} "bash /tmp/${DIR_NAME}/build.sh"
<think>嗯,用户问的是rsync能不能同步远端服务器。这是个很实用的技术问题,估计用户正在搭建文件同步环境。从基础命令来看,用户可能刚接触服务器维护,需要清晰易懂的答案。 rsync当然支持远程同步,这是它的核心功能之一。需要解释清楚两种主要方式:ssh协议和rsync守护进程模式。ssh更常用也安全,而守护进程适合大规模同步。示例命令要包含端口等实用细节,用户很可能需要直接复制使用。 安全问题必须强调,毕竟涉及服务器权限。特别是ssh密钥登录部分,很多新手会忽略权限设置。顺便提醒排除目录的功能,实际工作中经常用到这个特性。 最后的衍生问题要覆盖不同使用场景:归档模式对比普通复制、增量同步原理、权限处理等。第五个问题特意加入图形界面工具,有些用户可能更习惯可视化操作。这些问题既能深化理解,又能解决用户后续可能遇到的困惑。 </think>是的,**rsync 完全可以同步远端服务器**。这是 rsync 的核心功能之一,通常通过 **SSH 协议** 或 **rsync 守护进程(daemon)模式** 实现。 ### 🔑 主要方式: 1. **通过 SSH(最常用且安全)** 基本语法: ```bash rsync [选项] 源文件/目录 用户名@远程服务器IP:目标路径 ``` **示例**(将本地 `/home/user/data` 同步到远程服务器的 `/backup`): ```bash rsync -avz -e "ssh -p 2222" /home/user/data/ user@192.168.1.100:/backup/ ``` - `-a`:归档模式(保留权限、时间等) - `-v`:显示详细过程 - `-z`:压缩传输 - `-e "ssh -p 2222"`:指定 SSH 端口(默认 22 可省略) 2. **通过 rsync 守护进程** 需在远程服务器配置 `rsyncd.conf`,语法: ```bash rsync [选项] 源文件/目录 用户名@远程服务器IP::模块名/目标路径 ``` **示例**: ```bash rsync -av /local/dir/ remoteuser@server::backup/module/ ``` ### ⚠️ 注意事项: - **SSH 密钥认证**:推荐使用密钥登录(避免频繁输密码),通过 `ssh-keygen` 和 `ssh-copy-id` 配置。 - **目录斜杠**:源路径结尾加 `/`(如 `data/`)表示同步目录*内容*;不加 `/`(如 `data`)会同步目录*本身*。 - **带宽限制**:用 `--bwlimit=KBPS` 限制速度(例如 `--bwlimit=1000` 限制 1000KB/s)。 - **排除文件**:`--exclude='*.tmp'` 排除特定文件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值