📜  用于从远程 FTP 服务器上的源目录下载文件的 Shell 脚本

📅  最后修改于: 2022-05-13 01:57:33.417000             🧑  作者: Mango

用于从远程 FTP 服务器上的源目录下载文件的 Shell 脚本

在本文中,我们将编写一个 shell 脚本,使用 FTP 将服务器中某个目录中的文件下载到本地计算机。建议在阅读本文之前先了解一些 FTP 知识,但这不是必需的。

在编写shell脚本之前,我们先看看如何直接使用命令下载文件,然后我们将其扩展为脚本。

用于下载文件的FTP命令是“get”“mget” ,分别用于下载单个或多个文件。这些命令应该在 FTP 提示中输入。文件总是从服务器上的“当前目录”下载。没有办法指定从哪个目录下载,所以在下载之前我们首先要切换到需要的源目录。

用于下载文件的命令列表(示例显示在下面的问题中):

1. get filename         #download file
2. mget file1 file2     #download multiple files
3. cd dirname              #change remote directory
4. lcd dirname          #change local directory
5. ftp hostname          #login to ftp server
6. bye                    #terminate ftp connection and quit ftp

考虑以下问题以了解使用 FTP 下载文件:



将服务器内部的src目录下的“f1.txt”和“program1.c”2个文件下载到本地计算机的dst目录下。

用于从远程 FTP 服务器上的源目录下载文件的 Shell 脚本

当前服务器和本地目录结构

下载的逐步实现:

步骤 1:首先,使用“ftp hostname”命令登录到 ftp 并输入登录详细信息。

用于从远程 FTP 服务器上的源目录下载文件的 Shell 脚本

第一步:登录FTP

步骤 2:使用“cd src”切换到服务器上的 src 目录,并使用“lcd dst”切换到本地计算机上的 dst 目录。

步骤 2:更改到服务器和本地计算机上的所需目录

第 3 步:现在输入“ mget file1.txt program1.c”来下载文件。然后键入“bye”终止 FTP 连接并退出 FTP 提示。

Step3:下载文件并退出ftp

在 Stepwise 中执行下载的 shell 脚本:

步骤 1:首先,将 FTP 登录详细信息存储在脚本内的变量中。这些值不会改变,因此您不需要每次都询问用户,并且可以方便地登录服务器。

HOST = "192.168.0.104"    #Server's hostname
USER = "lapowner"            #Server login username
PASSWORD = "1234asdf@Z"    #Server login password

第 2 步:通过脚本的参数将源目录和要下载的文件列表作为输入。

SOURCE = $1        
#$1 is the first argument to the script

ALL_FILES="${@:2}" 
#${@:2} is the list of arguments without the first one

第 3 步:使用参数 -inv 或 -i -n -v 编写 FTP 命令。

参数说明如下:

ParameterDescription
-iDisable interactive mode in ftp. By using this, ftp will not ask for confirmation for every file being downloaded.
-nHelps to log in manually to ftp using “user $USERNAME $PASSWORD”. Without, this ftp would assume your local desktop’s username as the server’s username.
-vVerbose mode for ftp. This makes the output more detailed.

此外,通过使用“<<”的输入重定向向 FTP 提供 FTP 命令(如 mget 等)。使用“EOF”标记FTP输入的开始和结束。

ftp -inv $HOST <

第 4 步:使用参数 i) 源目录和 ii) 文件列表运行脚本:

./script.sh file1     
#for downloading file1

./script.sh *.c file1 
#for downloading file1 and all c files

从远程 FTP 服务器上的源目录下载文件的完整 Shell 脚本:

#!/bin/bash

HOST = "192.168.0.104"
USER = "lapowner"
PASSWORD = "1234asdf@Z"

SOURCE = $1
ALL_FILES = "${@:2}"

ftp -inv $HOST <

输出:

用于从远程 FTP 服务器上的源目录下载文件的 Shell 脚本