制作Ubuntu下带参数的远程拷贝命令脚本

本文介绍了Linux系统中的rcp和scp命令,分别用于非加密和加密的远程文件传输。重点讲解了它们的用法示例以及如何通过编写脚本实现文件和目录的批量同步,特别是通过shell脚本接收参数以简化操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在 Linux 系统中,rcp 和 scp 都是用于远程文件传输的命令工具。

  1. 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
  1. 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 将作为目标地址参数传入脚本就实现了想要的功能,这样这同一个脚本可以轻松实现多个机器的文件和目录同步。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值