在 Linux 系统中,rcp 和 scp 都是用于远程文件传输的命令工具。
- rcp(Remote Copy Protocol):rcp 是一种远程文件复制协议,用于在本地和远程主机之间传输文件。它使用 rsh(Remote Shell)协议来建立远程连接,并使用明文传输数据。使用 rcp 命令可以将文件从本地复制到远程主机,或者从远程主机复制文件到本地。
示例:
rcp local_file remote_username@remote_ip:remote_file
rcp remote_username@remote_ip:remote_file local_file
- scp(Secure Copy Protocol):scp 是基于 SSH(Secure Shell)协议的远程文件复制工具,提供了更高的安全性。它使用 SSH 连接进行加密传输,确保数据的机密性和完整性。与 rcp 类似,scp 也可以在本地和远程主机之间复制文件。
示例:
scp local_file remote_username@remote_ip:remote_file
scp remote_username@remote_ip:remote_file local_file
cp 和 scp 的作用是将文件从本地主机复制到远程主机,或者从远程主机复制文件到本地主机。这在需要在不同主机之间传输文件时非常有用,例如备份文件、同步数据等。同时,由于 scp 使用 SSH 连接进行加密传输,因此在需要保证传输安全性的场景中更常用。
一般局域网中我们使用rcp即可。
如果我们要从一台机器把文件和目录同步到其他机器,可以制作脚本文件,如下runRcp.sh 脚本就是实现从本机将/home/xtwh/kaifa/exe/下所有文件和目录拷贝到远程机器相同的目录下:
vi runRcp.sh
rcp -rp /home/xtwh/kaifa/exe/* 192.168.30.42:/home/xtwh/kaifa/exe/
但是这样每拷贝一个机器就要更改脚本。
要将脚本文件 runRcp.sh
改为带参数的形式,可以使用 shell 脚本的特殊变量 $1
、$2
等来接收传入的参数。以下是修改后的脚本示例:
#!/bin/bash
# 检查参数数量
if [ $# -ne 1 ]; then
echo "Usage: $0 <destinationIp>"
exit 1
fi
# 获取传入的参数
destinationIp=$1
# 执行 rcp 命令
rcp -rp /home/xtwh/kaifa/exe/* "$destinationIp":/home/xtwh/kaifa/exe/
在上述示例中,$1
表示第一个参数,即目标地址。在脚本开始处添加参数数量检查,确保只有一个参数传入。脚本接收目标地址参数后,将其赋值给 destination_address
变量。然后,使用变量 "$destinationIp"
替代原始的固定目标地址,实现动态传入参数。
保存修改后的脚本文件并执行时,可以通过以下方式传入目标地址参数:
./runRcp.sh 192.168.30.42
其中,192.168.30.42
将作为目标地址参数传入脚本就实现了想要的功能,这样这同一个脚本可以轻松实现多个机器的文件和目录同步。
扫描二维码关注公众号,回复:
16393441 查看本文章