rsync 免密传输(同步)文件

本文介绍了如何使用rsync命令进行远程文件同步,并详细讲解了末尾斜线的规则和免密登录的设置方法,包括密钥生成与拷贝,以提升备份效率。

语法格式

在这里插入图片描述

Pull: rsync [OPTION...] [USER@]HOST:SRC... [DEST]
Push: rsync [OPTION...] SRC... [USER@]HOST:DEST

注意:rsync命令使用中,关于末尾斜线(/)的说明:

  • 如果源参数的末尾有斜线,就会复制指定目录下的内容,而不复制目录本身;
  • 如果源参数的末尾没有斜线,则会复制目录本身;
  • 目标参数末尾的斜线没有作用;

同步备份

假设希望将另一台主机(IP:192.168.7.60)备份到本地 /mydir/backup/ 目录下,可以使用的命令如下:

rsync -avP root@192.168.7.60:/repos/src/ /mydir/backup/

默认每次同步备份文件的时候,是需要输入 root 密码的。

免密设置

生成密钥

在本地主机上生成密码文件,命令如下:

ssh-keygen

输入这个命令后,一路回车即可。此时会在 ~/.ssh/ 下生成 id_rsa.pub 文件。

拷贝公钥到远端服务器

ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.7.60

再次尝试同步

rsync -avP root@192.168.7.60:/repos/src/ /mydir/backup/

此时就无需再输入密码了。
Enjoy it!

Reference

http://zh.wikipedia.org/zh-cn/Rsync
https://www.linuxprobe.com/use-rsync-file.html

<think> 首先,用户的问题是:“我想查找rsync实现免密拷贝数据的方法 请问rsync实现免密拷贝数据的方法”。这需要一个清晰的、结构化的回答。 根据系统级指令: - 所有行内数学表达式使用$...$格式,但这里可能没有数学,所以保持文本。 - 独立公式使用$$...$$,但同样,可能不需要。 - LaTeX语法正确:确保任何技术细节正确。 - 使用中文回答:全程中文。 - 生成相关问题:在回答结束时添加相关问题。 - 引用段落末尾添加引用标识:如[^1]、[^2]等。用户提供了引用[1]、[2]、[3],所以我需要在回答中自然地引用这些。 用户提供的引用: - 引用[1]: 关于rsync远程拷贝和进度条显示。 - 引用[2]: 关于rsync和scp的区别,rsync同步方式和选项。 - 引用[3]: 关于rsync本地拷贝,源路径带杠不带杠的区别,以及排除目录的方法。 用户的问题是rsync实现免密拷贝数据的方法。这意味着我需要解释如何使用rsync进行免密码的远程拷贝,通常涉及SSH密钥认证。 关键点: - rsync常用于远程文件拷贝,使用SSH作为传输协议。 - 免密拷贝通过设置SSH公钥认证来实现:在源主机上生成SSH密钥,将公钥添加到目标主机的authorized_keys文件中。 - 这样,当使用rsync时,不需要手动输入密码。 步骤概述: 1. 生成SSH密钥对:在本地主机(拷贝发起方)使用`ssh-keygen`生成密钥。 2. 复制公钥到远程主机:使用`ssh-copy-id`或手动复制公钥到远程主机的`~/.ssh/authorized_keys`文件。 3. 使用rsync命令:指定远程主机和路径,利用SSH连接实现免密拷贝。 在回答中,我需要结构化: - 解释原理。 - 提供步骤。 - 给出示例命令。 - 自然地引用相关段落。 引用用户提供的引用: - 引用[1]提到`rsync -avzP -e "ssh -p1122" root@192.168.1.10:/root/file .`,这展示了使用SSH端口指定,但没涉及免密。 - 引用[2]讨论rsync vs scp,但不直接帮助。 - 引用[3]关于本地拷贝和排除,不直接相关。 用户说“上述引用仅供参考”,所以我需要在回答中引用它们如果相关,但主要基于问题。 用户的问题是免密拷贝的方法,所以我应该专注于SSH密钥设置。 回答结构: 1. 介绍免密拷贝的原理(SSH密钥认证)。 2. 逐步解释设置步骤。 3. 提供示例命令。 4. 结束时生成相关问题。 确保回答真实可靠:基于标准Linux知识。 最终输出: - 中文回答。 - 清晰段落。 - 结束时有相关问题。 相关问题生成:基于主题,如SSH密钥管理、rsync高级用法等。 </think> ### rsync 实现免密拷贝数据的方法 rsync 是一种高效的文件同步工具,常用于本地或远程服务器之间的数据传输。实现免密拷贝的核心是通过 SSH 公钥认证(key-based authentication),避免每次操作时手动输入密码。这种方法依赖于在源主机(发起拷贝的机器)和目标主机(接收拷贝的机器)之间建立信任关系。下面我将逐步解释原理、设置步骤和实际示例。 #### 1. **原理说明** - rsync 在远程拷贝时默认使用 SSH 协议进行加密传输(如命令中包含 `user@remote_host:/path` 格式)。 - 免密拷贝通过 SSH 密钥对实现:源主机生成一对公钥和私钥,将公钥添加到目标主机的 `~/.ssh/authorized_keys` 文件中。这样,SSH 连接时自动验证私钥,跳过密码提示 [^2]。 - 优点:安全(非明文传输)、高效(无需人工干预),适用于自动化脚本或定时任务。 #### 2. **设置步骤** 以下步骤假设您已在源主机上操作(例如本地机器),目标主机为远程服务器。确保两台主机已安装 SSH 和 rsync(通常 Linux 系统默认集成)。 - **步骤 1: 在源主机生成 SSH 密钥对** 运行命令生成密钥(如果已有密钥可跳过)。生成过程中,按 Enter 键跳过所有提示(使用默认路径和空密码)。 ```bash ssh-keygen -t rsa -b 4096 ``` 此命令会在 `~/.ssh/` 目录下创建两个文件:`id_rsa`(私钥)和 `id_rsa.pub`(公钥)。私钥必须保密,切勿泄露。 - **步骤 2: 将公钥复制到目标主机** 使用 `ssh-copy-id` 工具自动完成公钥添加(需知道目标主机的登录密码)。 ```bash ssh-copy-id -p <port> user@remote_host ``` 其中: - `<port>` 是 SSH 端口(默认为 22,如果不同需指定,如引用[1]中提到的 `-p1122`)。 - `user@remote_host` 是目标主机的用户名和 IP 地址或域名(例如 `root@192.168.1.10`)。 执行后,系统会提示输入目标主机的登录密码一次。成功后,公钥自动添加到目标主机的 `~/.ssh/authorized_keys` 文件 [^1]。 - **步骤 3: 测试 SSH 免密登录** 验证配置是否成功: ```bash ssh -p <port> user@remote_host ``` 如果无需输入密码即可登录,说明 SSH 密钥认证生效。 - **步骤 4: 使用 rsync 进行免密拷贝** 现在运行 rsync 命令从源主机拷贝数据到目标主机(或反向),无需密码。示例命令: ```bash rsync -avzP -e "ssh -p <port>" /local/source/path/ user@remote_host:/remote/dest/path/ ``` 参数说明: - `-avzP`: 归档模式(保持文件属性)、详细输出、压缩传输、显示进度条(如引用[1]所述)。 - `-e "ssh -p <port>"`: 指定 SSH 传输协议和端口(端口可选,默认为 22)。 - `/local/source/path/`: 源路径(注意路径结尾带 `/` 表示拷贝目录内容,不带 `/` 表示包括目录本身,如引用[3]所述)。 - `user@remote_host:/remote/dest/path/`: 目标路径(远程主机地址和目录)。 如果拷贝反向(从远程到本地),只需交换路径顺序: ```bash rsync -avzP -e "ssh -p <port>" user@remote_host:/remote/source/path/ /local/dest/path/ ``` #### 3. **关键注意事项** - **权限问题**:确保目标主机的 `~/.ssh/authorized_keys` 文件权限为 600,目录权限为 700(避免 SSH 拒绝连接)。 - **路径格式**:源路径结尾的 `/` 会影响拷贝行为(如引用[3]所述)。例如: - `/path/src/` 拷贝 src 目录下的所有内容到目标路径。 - `/path/src` 拷贝 src 目录本身到目标路径。 - **安全性**:私钥必须保护在源主机上,公钥可公开添加。建议使用 SSH 代理(`ssh-agent`)管理私钥,避免私钥文件暴露。 - **错误排查**:如果失败,检查 SSH 日志(`tail -f /var/log/auth.log`)或添加 `-v` 选项调试(例如 `rsync -avzP -vv`)。 通过这个方法,rsync 可实现高效的免密数据同步,非常适合备份、部署等场景。例如,在引用[2]中提到的,rsync同步本地到远程的文件,并保持属性一致 [^2]。实际操作中,您可能还需结合排除选项(如 `--exclude`)过滤文件,如引用[3]解释的相对路径排除方式 [^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值