JAVA实现Linux服务器文件上传、删除

1、导入jar包

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

2、yaml文件配置参数

ftp:
  #服务器ip
  host: XXXXXX
  #服务器端口(默认22)
  port: 22
  #登录账号
  username: root
  #登录密码
  password: XXXXXX
  #服务器目录(文件需要保存或从哪个目录删除的地址)
  dst: /mnt/file/

3、封装一个将文件上传Linux服务器和删除的工具类

import com.jcraft.jsch.Channel;
import com.jcraft.jsch.ChannelSftp;
import com.jcraft.jsch.JSch;
import com.jcraft.jsch.Session;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
import org.springframework.web.multipart.MultipartFile;

/**
 * linux服务器图片上传、删除工具类
 */
@Data
@Component
@ConfigurationProperties(prefix = "ftp")
public class SFTPUtil {
    /**
     * 服务器ip
     */
    private String host;
    /**
     * 服务器端口(默认22)
     */
    private int port;
    /**
     * 登录账号
     */
    private String username;
    /**
     * 登录密码
     */
    private String password;
    /**
     * 服务器目录
     */
    private String dst;

    /**
     * 上传linux服务器的方法
     * @param file 文件对象
     */
    public String uploadFileToLinux(MultipartFile file) {
        String fileName = null;
        try {
            //获取文件名并重新命名
            fileName = file.getOriginalFilename();
            fileName = System.currentTimeMillis() + fileName.substring(fileName.lastIndexOf("."));
            //指定文件在服务器上的保存路径
            String filePath = this.dst + fileName;
            // 连接 SFTP 服务器
            JSch jsch = new JSch();
            Session session = jsch.getSession(username, host, port);
            session.setPassword(password);
            session.setConfig("StrictHostKeyChecking", "no");
            session.connect();
            ChannelSftp sftpChannel = (ChannelSftp) session.openChannel("sftp");
            sftpChannel.connect();
            // 将文件上传到服务器
            sftpChannel.put(file.getInputStream(), filePath);
            // 关闭连接
            sftpChannel.disconnect();
            session.disconnect();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return fileName;
    }

    /**
     * 从linux服务器删除
     * @param fileName 文件名称
     */
    public void deleteFileToLinux(String fileName) {
        try {
            JSch jsch = new JSch();
            Session session = jsch.getSession(username, host, port);
            session.setPassword(password);
            session.setConfig("StrictHostKeyChecking", "no");
            session.connect();
            Channel channel = session.openChannel("sftp");
            channel.connect();
            ChannelSftp sftpChannel = (ChannelSftp) channel;
            sftpChannel.rm(this.dst + fileName);
            sftpChannel.disconnect();
            session.disconnect();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1. 配置Linux服务器环境 首先需要配置好Linux服务器的环境,比如安装JDK、Tomcat、MySQL等必要的软件,并将其配置好。 2. 编写自动部署脚本 编写一个自动部署脚本,用于将Java Web项目上传到服务器并部署到Tomcat上。以下是一个示例脚本: ``` #!/bin/bash # 部署目录 deploy_dir=/usr/local/tomcat/webapps # 项目名称 project_name=myproject # 停止Tomcat echo "Stopping Tomcat..." service tomcat stop # 删除旧版本 echo "Removing old version..." rm -rf $deploy_dir/$project_name* # 上传新版本 echo "Uploading new version..." scp /path/to/project.war user@server:/tmp # 解压并部署 echo "Deploying new version..." unzip /tmp/project.war -d $deploy_dir/$project_name chown -R tomcat:tomcat $deploy_dir/$project_name chmod -R 755 $deploy_dir/$project_name # 启动Tomcat echo "Starting Tomcat..." service tomcat start echo "Deployment completed." ``` 3. 配置SSH免密码登录 为了让脚本能够自动上传文件服务器,需要配置SSH免密码登录。具体步骤如下: 1)在本地生成SSH密钥对: ``` ssh-keygen -t rsa ``` 2)将公钥添加到服务器的authorized_keys文件中: ``` cat ~/.ssh/id_rsa.pub | ssh user@server 'cat >> ~/.ssh/authorized_keys' ``` 这样就可以在不输入密码的情况下登录到服务器了。 4. 执行自动部署脚本 将自动部署脚本保存为deploy.sh,并在本地执行该脚本: ``` ./deploy.sh ``` 这样,Java Web项目就会自动部署到Linux服务器上了。每次更新代码后,只需要重新执行该脚本就可以完成部署。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值