shell脚本:centos7安装ncftp实现目录批量上传到ftp

ftp命令的缺陷

在FTP中,put命令通常用于上传单个文件,而不是整个文件夹。如果你想要上传整个文件夹,可以使用ncftp命令行工具或者其他支持递归上传的FTP客户端。

以下是使用ncftp命令行工具进行递归上传文件夹的示例:

#!/bin/bash

# 设置变量
FTP_SERVER="192.xx.xx.xx"
FTP_USER="user-xxx"
FTP_PASS="passwd-xxx"
LOCAL_DIR="/path/to/local/folder"
REMOTE_DIR="/path/on/remote/server/"

# 使用ncftp命令上传文件夹
ncftp -u $FTP_USER -p $FTP_PASS $FTP_SERVER << EOF
cd $REMOTE_DIR
mkdir $(basename "$LOCAL_DIR")
cd $(basename "$LOCAL_DIR")
lcd $LOCAL_DIR
put -R ./*
bye
EOF

请将/path/to/local/folder替换为实际要上传的本地文件夹的路径,将/path/on/remote/server/替换为FTP服务器上要存储文件夹的远程目录路径。

在脚本中,我们使用ncftp命令连接到FTP服务器,并在输入重定向中提供了一系列的命令。-u-p选项用于提供FTP用户名和密码进行身份验证。然后,我们依次执行了以下FTP命令:

  • cd: 切换到远程目录。
  • mkdir: 在远程服务器上创建与本地文件夹同名的文件夹。
  • cd: 切换到新创建的远程文件夹。
  • lcd: 切换到本地文件夹。
  • put -R: 递归上传本地文件夹到远程服务器。

通过使用支持递归上传的FTP客户端,如ncftp,你可以在Shell脚本中上传整个文件夹到指定的FTP服务器。

安装ncftp

yum install epel-release -y

yum install ncftp -y

ncftp一次上传多个目录

在FTP协议中,put -R命令是用于递归上传一个目录及其子目录的内容到远程服务器的。它并不支持一次上传多个目录。

如果你想要一次上传多个目录,你可以编写一个循环或使用其他的脚本逻辑来实现。以下是一个示例脚本,演示了如何一次上传多个目录:

#!/bin/bash

# 设置变量
FTP_SERVER="192.xx.xx.xx"
FTP_USER="user-xxx"
FTP_PASS="passwd-xxx"
REMOTE_DIR="/path/on/remote/server/"

# 定义本地目录列表
LOCAL_DIRS=(
  "/path/to/local/dir1"
  "/path/to/local/dir2"
  "/path/to/local/dir3"
)

# 使用ncftp命令上传多个目录
for dir in "${LOCAL_DIRS[@]}"; do
  ncftpput -R -u $FTP_USER -p $FTP_PASS $FTP_SERVER $REMOTE_DIR "$dir"
done

在脚本中,我们首先定义了一个LOCAL_DIRS数组,其中包含要上传的多个本地目录路径。然后,使用for循环遍历该数组,使用ncftpput命令逐个上传每个目录到远程服务器。

请确保将/path/to/local/dir1/path/to/local/dir2等替换为实际要上传的本地目录路径,将/path/on/remote/server/替换为FTP服务器上要存储目录的远程路径。

通过这种方式,你可以在Shell脚本中一次上传多个目录到指定的FTP服务器。

猜你喜欢

转载自blog.csdn.net/a772304419/article/details/132413086
今日推荐