Linux rcp 命令超全解析|远程文件复制用法 + 安全避坑指南

📅 2026/8/4 6:14:24 👁️ 阅读次数 📝 编程学习
Linux rcp 命令超全解析|远程文件复制用法 + 安全避坑指南

一、命令简介

rcp(remote copy)命令用于在本地主机与远程主机之间,或两台远程主机之间复制文件或目录。它基于 rsh(remote shell)协议实现,通过适当的配置可以实现无需密码的文件传输,旨在简化跨主机的文件复制操作。

注意:由于 rcp 使用明文传输且安全性较低,在现代环境中,scp 或 rsync(基于 SSH)是更安全、更推荐的文件传输工具。rcp 通常仅在内网可信环境或历史遗留系统中使用。


二、语法格式

基本语法格式如下:

bash

运行

rcp [选项] 源文件/目录 目标文件/目录 rcp [选项] 源文件1 源文件2 ... 目标目录

远程文件路径格式:

plaintext

[用户名@]主机名:路径

如果省略用户名,则默认使用当前本地用户名。 如果路径中包含特殊字符(如空格、$、* 等),需用单引号 ''、双引号 "" 或反斜线 \ 进行转义。


三、常用选项及说明

表格

选项说明
-p保留源文件或目录的属性,包括拥有者、所属组、权限与最后修改时间。
-r递归复制,用于复制整个目录及其子目录和文件。
-x对传输的所有数据进行加密(使用 DES 加密,安全性仍较弱)。
-k请求 Kerberos 票据认证(如果系统支持)。

注意:标准 rcp 通常不支持 -P(指定端口)选项。


四、示例用法

1. 基本文件复制

将本地文件复制到远程主机:

bash

运行

rcp test.txt server1:/tmp/

复制本地文件 test.txt 到远程主机 server1 的 /tmp 目录下,文件名不变。

bash

运行

rcp test.txt alice@server1:/home/alice/

使用远程用户名 alice 进行复制。

从远程主机复制文件到本地:

bash

运行

rcp server1:/var/log/app.log .

将远程主机 server1 上的 /var/log/app.log 复制到当前目录。


2. 目录复制(递归)

bash

运行

rcp -r mydata server1:/backup/

将本地目录 mydata 递归复制到远程主机的 /backup 目录下。

bash

运行

rcp -r server1:/var/www/html ./web_backup

将远程目录 /var/www/html 复制到本地的 ./web_backup 目录。


3. 保留文件属性

bash

运行

rcp -p important.conf server1:/etc/

复制文件并保留原始时间戳、权限等属性。


4. 复制多个文件

bash

运行

rcp file1.txt file2.jpg file3.pdf server1:/shared/

将多个本地文件复制到远程主机的同一目录下。


五、注意事项

1. 安全性警告

rcp 默认不加密传输内容(除非使用 -x 选项,但其加密强度不足),用户名、密码(如有)及文件内容均可能被窃听。

强烈建议在生产环境或公网中使用 scp、sftp 或 rsync over SSH 替代。

2. 配置要求

要使 rcp 无需密码工作,通常需要配置以下一项或多项:

  • /etc/hosts 或 DNS:确保主机名可解析。
  • ~/.rhosts 或 /etc/hosts.equiv:设置信任主机(极不安全,不推荐)。
  • 启用 rsh 服务:通常需安装并启动 rsh-server 或 rsh 包。

3. 常见问题

  • “Permission denied”:检查目标目录权限、rhosts 配置及 rsh 服务状态。
  • “Connection refused”:远程主机的 rsh 服务未运行或防火墙屏蔽了端口(默认 514)。
  • 路径含特殊字符:使用引号包裹远程路径,如 rcp local.txt server:'/path with spaces/file'。

4. 替代命令推荐

表格

场景推荐命令优点
安全文件复制scp基于 SSH,加密传输,配置简单
安全目录同步rsync -avz -e ssh增量同步,效率高,支持压缩

5. 兼容性说明

大多数现代 Linux 发行版已不再预装 rcp,需手动安装 rsh 或 rcp 软件包。


六、总结

rcp 是一个历史悠久的远程文件复制工具,因其安全性缺陷,仅建议在封闭、可信的测试环境或旧系统中使用。新项目或生产环境应优先选用基于 SSH 的安全传输工具。