连接到远程服务器并遍历指定目录下的所有文件。它会找到名称以error.2023-03-23开头的文件,并将它们从服务器复制到本地计算机

需要用到依赖包:

        <dependency>
            <groupId>com.jcraft</groupId>
            <artifactId>jsch</artifactId>
            <version>0.1.55</version>
        </dependency>

代码如下

import java.io.*;
import java.util.*;
import com.jcraft.jsch.*;

public class CopyErrorFiles {
    public static void main(String[] args) {
        // 远程服务器的主机名或IP地址
        String hostname = "your_server_hostname";
        // 登录远程服务器的用户名
        String username = "your_username";
        // 登录远程服务器的密码
        String password = "your_password";
        // 远程文件的基本路径
        String remoteBasePath = "/home/hadoop/cdp-rm/error/";
        // 本地文件的基本路径
        String localBasePath = "/path/to/local/files/";
        // 要复制的文件名称前缀
        String filePrefix = "error.2023-03-23";

        try {
            // 创建JSch对象
            JSch jsch = new JSch();
            // 创建会话对象并连接到远程服务器
            Session session = jsch.getSession(username, hostname, 22);
            session.setPassword(password);
            session.setConfig("StrictHostKeyChecking", "no");
            session.connect();

            // 创建SFTP通道并连接到远程服务器
            ChannelSftp channel = (ChannelSftp)session.openChannel("sftp");
            channel.connect();

            // 列出远程目录下所有文件
            Vector<ChannelSftp.LsEntry> remoteFiles = channel.ls(remoteBasePath);

            // 遍历所有匹配的文件并复制到本地计算机
            for (ChannelSftp.LsEntry remoteFile : remoteFiles) {
                if (!remoteFile.getAttrs().isDir() && remoteFile.getFilename().startsWith(filePrefix)) {
                    String remoteFilePath = remoteBasePath + remoteFile.getFilename();
                    String localFilePath = localBasePath + remoteFile.getFilename();
                    // 复制远程文件到本地计算机
                    channel.get(remoteFilePath, localFilePath);
                    System.out.println("Copied " + remoteFilePath + " to " + localFilePath);
                }
            }

            // 断开SFTP通道和会话连接
            channel.disconnect();
            session.disconnect();

            System.out.println("All files copied successfully.");
        } catch (JSchException | SftpException e) {
            e.printStackTrace();
        }
    }
}

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注