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

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

扫描二维码关注公众号,回复: 16393441 查看本文章

猜你喜欢

转载自blog.csdn.net/weixin_39466327/article/details/132466291