• MAC命令行使用FTP并且实现脚本操作FTP的上传下载


    前言

    FTP基本操作

    安装FTP工具

    brew install telnet
    brew install inetutils
    brew link --overwrite inetutils
    

    使用FTP

    登录

    #方式一
    $ ftp
    ftp> open server-ip
    #方式二
    $ ftp server-ip
    

    以上命令之后,按提示输入用户名和密码。
    当出现以下日志,表示连接成功

    Connected to server-ip
    220 (vsFTPd 2.2.2)
    Name (10.0.0.101:username): username
    331 Please specify the password.
    Password:
    230 Login successful.
    

    此时已经进入ftp命令行环境,此时如果进行本地目录或文件操作命令将发生一些变化,如下:

    服务器操作 本地目录操作
    cd 目录名(进入服务器目录) lcd 目录名(进入本机目录)
    cd (退到服务器根目录) lcd (退到本机根目录)
    cd ..(退回到上一级目录) lcd ..(退回到上一级目录)
    pwd !pwd
    ls !ls

    上传文件

    #server-filename 必须显式指明,否则报错:文件名无效
    ftp> put /local/path/filename /remote/path/server-filename
    

    注意:向ftp服务器上传文件有两种模式
    字符模式(ASCII)和二进制模式(Binary)。默认是ASCII模式。一般上传非文本文件要用二进制模式。
    登录ftp后,上传文件前,在ftp>状态下输入bin即可(切换为二进制模式)。 在ftp>状态下输入asc(切换为ASCII模式)

    批量上传

    使用通匹符批量上传文件至服务器,需要注意的一点,mput 不支持绝对路径,应该先进入要上传的本地文件夹及远程文件夹才可以操作。

    ftp> cd /remote/path
    ftp> lcd /local/path
    ftp> mput file*
    local: file.jar remote: imgs.jar
    229 Entering Extended Passive Mode (|||62331|)
    150 Opening data channel for file upload to server of "/local/path/imgs.jar"
    100% |*|   519        2.60 MiB/s    --:-- ETA
    226 Successfully transferred "/local/path/imgs.jar"
    519 bytes sent in 00:00 (19.54 KiB/s)
    

    注意:ftp不支持文件夹上传

    文件下载

    下载服务器中的文件至本地目录中,可选指定下载至本地目录后的文件名称,依然要求提前进入待下载文件的目录中。

    ftp> get remote-filename local-filename
    

    默认本地当前路径,local-filename可省略

    注意:关于下载文件夹, FTP 命令不支持文件夹下载操作

    删除文件

    ftp> delete /remote/path/filename
    

    在服务器中删除文件,可以指定绝对路径,相对其他命令显得比较灵活

    Shell脚本操作FTP

    参考这里

    批量下载脚本代码

    #!/bin/sh
    ftp -v -n 10.11.10.11 [端口用空格分开,默认端口可以不填]<<EOF
    user ftpuser ftppwd
    binary
    cd Down
    lcd ./
    prompt
    mget *
    bye
    EOF
    echo "download from ftp successfully"
    

    下载单个文件脚本代码

    #!/bin/sh
    ftp -v -n 10.11.10.11 [端口用空格分开,默认端口可以不填]<<EOF
    user ftpuser ftppwd
    quote pasv
    passive
    binary
    cd Down
    lcd ./
    prompt
    #get down.txt
    get down.txt note.txt
    bye
    EOF
    echo "download from ftp successfully"
    

    批量上传脚本代码

    #从本地向FTP批量上传文档
    #!/bin/sh
    ftp -v -n 10.11.10.11 [端口用空格分开,默认端口可以不填]<<EOF
    user ftpuser ftppwd
    quote pasv
    passive
    binary
    hash
    cd Up
    lcd ./
    prompt
    mput *
    bye
    #here document
    EOF
    echo "commit to ftp successfully"
    

    上传单个文件脚本代码

    #从本地向FTP上传单个文档
    #!/bin/sh
    ftp -v -n 10.11.10.11 [端口用空格分开,默认端口可以不填]<<EOF
    user ftpuser ftppwd
    quote pasv
    passive
    binary
    cd Up
    lcd ./
    prompt
    put file.txt
    bye
    #here document
    EOF
    echo "commit to ftp successfully"
    
  • 相关阅读:
    可以
    全链路压测方案
    PyTestReport使用
    查看mysql的版本号
    Centos7 下的SVN安装与配置
    confluence中org.apache.tomcat.util.net.NioEndpoint$Acceptor.run Socket accept failed的解决方法
    CentOS7安装部署zabbix3.4操作记录
    Aasible中cryptography兼容性报错解决办法
    windows10中git-bash闪退的解决办法
    jira发送邮件报错
  • 原文地址:https://www.cnblogs.com/shuiche/p/13667477.html
Copyright © 2020-2023  润新知