php 如何通过连接sftp并下载sftp服务器指定目录下的所有文件到本地?

php 如何通过连接sftp并下载sftp服务器指定目录下的所有文件到本地?,第1张

一、下载并安装FTP客户端,例如我现在用的Xftp6。

xftp6中文版是一款高效实用的MS windows 平台专用SFTP、FTP 文件传输工具。xftp6中文版功能强劲,便捷好用,支持MS windows 用户安全地在 UNIX/Linux 和 Windows PC 之间进行文件传输。

二、点击文件->新建

三、在弹出的对话框中输入

四、文件->打开创建的会话, 选择会话,点连接

五、在进入的界面,可以看到服务器文件,找到指定目录然后右键->传输就可以了。

写在最后:

SFTP是SSH File Transfer Protocol的缩写,安全文件传送协议。SFTP与FTP有着几乎一样的语法和功能。SFTP为SSH的其中一部分,是一种传输档案至 Blogger 伺服器的安全方式。其实在SSH软件包中,已经包含了一个叫作SFTP的安全文件信息传输子系统,SFTP本身没有单独的守护进程,它必须使用sshd守护进程(端口号默认是22)来完成相应的连接和答复操作,所以从某种意义上来说,SFTP并不像一个服务器程序,而更像是一个客户端程序。

package jsch

import java.io.File

import java.io.FileInputStream

import java.util.Properties

import com.jcraft.jsch.Channel

import com.jcraft.jsch.ChannelSftp

import com.jcraft.jsch.JSch

import com.jcraft.jsch.JSchException

import com.jcraft.jsch.Session

public class Test {

    protected String host//sftp服务器ip

    protected String username//用户名

    protected String password//密码

    protected String privateKey//密钥文件路径

    protected String passphrase//密钥口令

    protected int port = 22//默认的sftp端口号是22

    /**

     * 获取连接

     * @return channel

     */

    public ChannelSftp connectSFTP() {

        JSch jsch = new JSch()

        Channel channel = null

        try {

            if (privateKey != null && !"".equals(privateKey)) {

                //使用密钥验证方式,密钥可以使有口令的密钥,也可以是没有口令的密钥

                if (passphrase != null && "".equals(passphrase)) {

                    jsch.addIdentity(privateKey, passphrase)

                } else {

                    jsch.addIdentity(privateKey)

                }

            }

            Session session = jsch.getSession(username, host, port)

            if (password != null && !"".equals(password)) {

                session.setPassword(password)

            }

            Properties sshConfig = new Properties()

            sshConfig.put("StrictHostKeyChecking", "no")// do not verify host key

            session.setConfig(sshConfig)

            // session.setTimeout(timeout)

            session.setServerAliveInterval(92000)

            session.connect()

            //参数sftp指明要打开的连接是sftp连接

            channel = session.openChannel("sftp")

            channel.connect()

        } catch (JSchException e) {

            e.printStackTrace()

        }

        return (ChannelSftp) channel

    }

    

    /**

     * 上传文件

     * 

     * @param directory

     *            上传的目录

     * @param uploadFile

     *            要上传的文件

     * @param sftp

     */

    public void upload(String directory, String uploadFile, ChannelSftp sftp) {

        try {

            sftp.cd(directory)

            File file = new File(uploadFile)

            sftp.put(new FileInputStream(file), file.getName())

        } catch (Exception e) {

            e.printStackTrace()

        }

    }

    /**

     * 下载文件

     * 

     * @param directory

     *            下载目录

     * @param downloadFile

     *            下载的文件

     * @param saveFile

     *            存在本地的路径

     * @param sftp

     */

    public void download(String directory, String downloadFile,

            String saveFile, ChannelSftp sftp) {

        try {

            sftp.cd(directory)

            sftp.get(downloadFile,saveFile)

        } catch (Exception e) {

            e.printStackTrace()

        }

    }

    /**

     * 删除文件

     * 

     * @param directory

     *            要删除文件所在目录

     * @param deleteFile

     *            要删除的文件

     * @param sftp

     */

    public void delete(String directory, String deleteFile, ChannelSftp sftp) {

        try {

            sftp.cd(directory)

            sftp.rm(deleteFile)

        } catch (Exception e) {

            e.printStackTrace()

        }

    }

    

    public void disconnected(ChannelSftp sftp){

        if (sftp != null) {

            try {

                sftp.getSession().disconnect()

            } catch (JSchException e) {

                e.printStackTrace()

            }

            sftp.disconnect()

        }

    }

}


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/280437.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-21
下一篇2023-04-21

发表评论

登录后才能评论

评论列表(0条)

    保存