用java把本地服务器的两个文件移动到远程服务器对应的路径下并删除本地服务器文件,用密钥方式实现

要使用 Java 将本地服务器上的文件移动到远程服务器并删除本地文件,您需要完成以下步骤:

1. 配置 SSH 密钥认证

确保本地服务器和远程服务器都配置了 SSH 密钥认证。这将允许 Java 代码通过 SSH 协议连接到远程服务器,而不需要密码。

2. 添加 SSH 依赖

您需要使用 Java 的 SSH 客户端库来进行 SSH 连接。常用的库之一是 JSch。您可以在 Maven 项目中添加以下依赖:

xml

<dependency>
    <groupId>com.jcraft</groupId>
    <artifactId>jsch</artifactId>
    <version>0.1.55</version> <!-- 版本号根据需要进行更改 -->
</dependency>

3. 编写 Java 代码

以下是一个示例 Java 代码,演示如何使用 JSch 将本地文件移动到远程服务器并删除本地文件:

java

import com.jcraft.jsch.Channel;
import com.jcraft.jsch.ChannelSftp;
import com.jcraft.jsch.JSch;
import com.jcraft.jsch.Session;

public class FileTransfer {

    public static void main(String[] args) {
        String localFilePath1 = "/path/to/local/file1.txt"; // 本地文件路径
        String localFilePath2 = "/path/to/local/file2.txt";
        String remoteFilePath1 = "/path/to/remote/file1.txt"; // 远程文件路径
        String remoteFilePath2 = "/path/to/remote/file2.txt";
        String remoteHost = "your-remote-host"; // 远程服务器主机名或IP地址
        int remotePort = 22; // SSH端口号
        String remoteUsername = "your-remote-username"; // 远程服务器用户名
        String privateKeyPath = "/path/to/your/private/key"; // 本地SSH私钥路径

        try {
            JSch jsch = new JSch();

            // 添加SSH私钥
            jsch.addIdentity(privateKeyPath);

            // 建立SSH会话
            Session session = jsch.getSession(remoteUsername, remoteHost, remotePort);
            session.setConfig("StrictHostKeyChecking", "no");
            session.connect();

            // 建立SFTP通道
            Channel channel = session.openChannel("sftp");
            channel.connect();

            ChannelSftp sftpChannel = (ChannelSftp) channel;

            // 将文件1从本地上传到远程服务器
            sftpChannel.put(localFilePath1, remoteFilePath1);
            
            // 将文件2从本地上传到远程服务器
            sftpChannel.put(localFilePath2, remoteFilePath2);

            // 删除本地文件1和文件2
            java.io.File localFile1 = new java.io.File(localFilePath1);
            java.io.File localFile2 = new java.io.File(localFilePath2);
            localFile1.delete();
            localFile2.delete();

            // 关闭SFTP通道和SSH会话
            sftpChannel.disconnect();
            session.disconnect();

            System.out.println("文件传输完成并本地文件已删除。");

        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

 

在上面的代码中,替换以下参数为实际值:

  • localFilePath1localFilePath2:本地文件的路径。
  • remoteFilePath1remoteFilePath2:远程服务器上文件的路径。
  • remoteHost:远程服务器的主机名或IP地址。
  • remoteUsername:远程服务器的用户名。
  • privateKeyPath:本地SSH私钥的路径。

这段代码使用 JSch 库建立了 SSH 连接,然后使用 SFTP 通道将文件从本地上传到远程服务器,并删除了本地文件。确保您的本地和远程服务器已经正确配置了 SSH 密钥认证。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值