Linux命令-rcp(远程文件复制)
Linux命令-rcp(远程文件复制)
- 命令语法
- 常用选项
- 远程路径格式
- 场景化实例
- 1. 从远程主机复制文件到本地
- 2. 从本地复制文件到远程主机
- 3. 在远程主机之间复制文件
- 4. 递归复制整个目录结构
- 5. 实际生产环境应用(不推荐)
- 6. 迁移到 scp 的对照示例
- 7. 文件校验对比
- 迁移指南:rcp 到 scp/rsync
- 安全最佳实践
快速参考:rcp(Remote Copy)用于在 Unix/Linux 主机之间通过 rsh 协议复制文件。该命令使用明文传输,无加密机制,已被scp和rsync完全取代,仅建议在封闭隔离网络中临时使用。
安全警告:rcp 不加密传输数据(包括密码),极易被中间人攻击截获。强烈建议使用
scp或rsync over SSH替代。
命令语法
rcp[选项]源文件 目标文件rcp[选项]源文件... 目标目录常用选项
| 选项 | 说明 |
|---|---|
-r | 递归复制整个目录 |
-p | 保留源文件的修改时间和权限 |
-k | 要求 Kerberos 认证 |
-x | 开启 DES 加密(仍不安全) |
远程路径格式
# 基本格式rcpuser@host:远程路径 本地路径rcp本地路径 user@host:远程路径场景化实例
1. 从远程主机复制文件到本地
# 复制单个文件rcproot@192.168.1.100:/etc/hosts /tmp/hosts_backup# 复制并保留时间属性rcp-puser@server:/var/log/syslog ./syslog_backup2. 从本地复制文件到远程主机
# 上传文件到远程rcp./deploy.tar.gz admin@10.0.0.5:/opt/deploy/# 递归上传目录rcp-r./website/ user@web-server:/var/www/3. 在远程主机之间复制文件
# 从 host1 复制到 host2(需要 host1 能访问 host2)rcpuser1@host1:/data/export.csv user2@host2:/data/import.csv4. 递归复制整个目录结构
# 复制整个项目目录rcp-rpdeveloper@build-server:/home/project/output/ ./output/# 查看复制进度(配合其他工具)rcp-rsource/ dest/&&echo"复制完成"5. 实际生产环境应用(不推荐)
# 在隔离网络中的批量部署脚本#!/bin/bashSERVERS="192.168.100.10 192.168.100.11 192.168.100.12"forhostin$SERVERS;doecho"部署到$host..."rcp-p/opt/app/app.war deployer@$host:/opt/tomcat/webapps/doneecho"批量部署完成"6. 迁移到 scp 的对照示例
# rcp 用法(不安全)rcp-ruser@old-server:/data/ /backup/# scp 等价用法(安全)scp-ruser@old-server:/data/ /backup/# rsync 更高效(增量传输)rsync-avzuser@old-server:/data/ /backup/# 使用 SSH 密钥认证scp-i~/.ssh/deploy_key-ruser@server:/app/ ./app/7. 文件校验对比
# rcp 复制后手动校验rcpuser@remote:/large/file.dat ./file.dat md5sum ./file.datsshuser@remote"md5sum /large/file.dat"# 对比两个哈希值确保一致# 相比之下 rsync 自动校验rsync-avcuser@remote:/large/file.dat ./file.dat迁移指南:rcp 到 scp/rsync
# 1. 基本文件复制# rcp: rcp file.txt user@host:/path/# scp: scp file.txt user@host:/path/# 2. 递归目录# rcp: rcp -r dir/ user@host:/path/# scp: scp -r dir/ user@host:/path/# 3. 保留属性# rcp: rcp -p file user@host:/path/# scp: scp -p file user@host:/path/# 4. 增量同步(rsync 独有优势)rsync-avz--progressdir/ user@host:/path/安全最佳实践
核心原则:永远不要在生产环境或任何网络中使用 rcp。即使是内网,也应使用 SSH 协议传输。
# 检查系统是否安装了 rcp(通常已废弃)whichrcp2>/dev/null||echo"rcp 未安装,这是好事"# 如必须使用,配置 .rhosts 限制访问# /etc/hosts.equiv 或 ~/.rhostsecho"trusted-host.example.com trusted-user">>~/.rhostschmod600~/.rhosts# 迁移后禁用 rsh 服务sudosystemctl disable rsh.socket2>/dev/nullsudosystemctl stop rsh.socket2>/dev/null