首页 > 数据库 >java通过连接ssh来实现postgres数据库的数据备份

java通过连接ssh来实现postgres数据库的数据备份

时间:2023-09-21 15:45:27浏览次数:58  
标签:jsch java postgres 数据备份 channelExec session jcraft String

引入依赖

<dependency>
            <groupId>com.jcraft</groupId>
            <artifactId>jsch</artifactId>
            <version>0.1.54</version>
            <scope>compile</scope>
        </dependency>

  

import com.jcraft.jsch.ChannelExec;
import com.jcraft.jsch.JSch;
import com.jcraft.jsch.Session;

public class RemotePostgreSQLBackup {
    public static void main(String[] args) {
        String sshHost = "192.168.11.12";
        String sshUsername = "root";
        String sshPassword = "123456";
        String pgDumpCommand = "pg_dump -U postgres -d db_test -t allproject4490 -f /home/backup_file11.bak";

        try {
            // 创建SSH会话
            JSch jsch = new JSch();
            Session session = jsch.getSession(sshUsername, sshHost);
            session.setPassword(sshPassword);
            session.setConfig("StrictHostKeyChecking", "no");
            session.connect();

            // 打开SSH通道并执行pg_dump命令
            ChannelExec channelExec = (ChannelExec) session.openChannel("exec");
            channelExec.setCommand(pgDumpCommand);
            channelExec.connect();

            // 等待命令执行完成
            while (!channelExec.isClosed()) {
                Thread.sleep(1000);
            }

            // 关闭通道和会话
            channelExec.disconnect();
            session.disconnect();

            System.out.println("远程数据库备份成功");

        } catch (Exception e) {
            e.printStackTrace();
            System.err.println("远程数据库备份失败");
        }
    }
}

 

备份数据命令(allproject4490 是要备份的表名)
pg_dump -U postgres -d geodb -t allproject4490 -f /home/backup_file.bak
数据恢复命令
psql -U postgres -d geodb -f /home/backup_file.bak

 

标签:jsch,java,postgres,数据备份,channelExec,session,jcraft,String
From: https://www.cnblogs.com/james-roger/p/17720095.html

相关文章

  • 基于Java开发的数字化询价招标采购系统(SRM系统源码)
    在如今商业环境中,企业的采购流程变得越来越重要。传统的采购方式可能存在诸多弊端,例如效率低下、信息不透明、易滋生腐败等。为了解决这些问题,许多企业开始转向SRM(供应商关系管理)系统。本文将详细介绍SRM数字询价招标系统,包括其概念、功能和优势。系统展示和获取代码方式在文末。......
  • Java中获取类加载路径和项目根路径
    publicclassTest{publicstaticvoidmain(String[]args){//LIVETEMPLATEpsvm+Tab键soutTesttest=newTest();try{test.showURL();}catch(Exceptione){e.printStackTrace();}......
  • JAVA应用XFire框架来实现WebServie的大文件传输功能之二(上传)
    xml文件:<?xmlversion="1.0"encoding="UTF-8"?><beansxmlns="http://xfire.codehaus.org/config/1.0"><service><name>HelloWorldService</name><namespace>http://localhost:8090......
  • JAVA应用XFire框架来实现WebServie的大文件传输功能之一(下载)
    下面是文件下载功能,可以实现大文件的断点续传,其原理是把服务端先把文件内容Byte[]转换成Base64编码字符串返回给客户端,然后客户端接收到后再把该Base64编码过的字符串转换成Byte[],最后写入文件。     至于断点续传的设计很简单,服务端留有一个定位参数,每次读取文件之前,都先定......
  • Javascript闭包(Closure)
    闭包(closure)是Javascript语言的一个难点,也是它的特色,很多高级应用都要依靠闭包实现。下面就是我的学习笔记,对于Javascript初学者应该是很有用的。一、变量的作用域要理解闭包,首先必须理解Javascript特殊的变量作用域。变量的作用域无非就是两种:全局变量和局部变量。Javascript语言......
  • JAVA中常用IO流类:FileReader和FileWriter
    1,FileWriter类(字符输出流类)构造方法:FileWriterfw=newFileWriter(StringfileName);//创建字符输出流类对象和已存在的文件相关联。文件不存在的话,并创建。                                            如:FileWriterfw=new......
  • java通过jdbc复制表数据实现备份
    importorg.apache.commons.lang3.StringUtils;importorg.slf4j.Logger;importorg.slf4j.LoggerFactory;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.stereotype.Service;importjava.sql.*;@Servicepublicclass......
  • 【JavaWeb3】Maven环境搭建
    前言:为什么要学习Maven?在JavaWeb开发中,需要使用大量的jar包,我们手动导入很麻烦,而学习Maven它可以帮我们自动配置和导入这些jar包Maven作为依赖管理工具,能够管理规模庞大jar包。使用Maven后,依赖对应的Jar包能够自动下载、方便、快捷且规范。Maven作为构建管理工具。当我们使用......
  • 无涯教程-JavaScript - COUNTIFS函数
    描述COUNTIFS函数将多个条件应用于跨多个范围的单元格,并计算满足所有条件的次数。语法COUNTIFS(criteria_range1,criteria1,[criteria_range2,criteria2]…)争论Argument描述Required/Optionalcriteria_range1Thefirstrangeinwhichtoevaluatetheassociat......
  • 基于Java开发的工作流审批系统(成熟源码)
    前言目前市场上有很多开源平台没有整合工作流,即使有,也是价格不菲的商业版,来看这篇文章的估计也了解了行情,肯定不便宜。我这个快速开发平台在系统基础功能(用户管理,部门管理…)上整合了工作流,你可以直接用来开发ERP,OA,CRM等企业级应用,不用再担心如何再去花大量的时间集成工作流进来。......