我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Java实现定时备份文件

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Java实现定时备份文件

本文实例为大家分享了Java如何定时备份文件的具体实现代码,供大家参考,具体内容如下

程序思路:

1.空目录不备份,但非空目录都备份

2.源目录 source 要递归他下面所有的文件和目录 存入List

3.循环这个list,创建每个文件的目录

4.开始复制

以下代码实现了定时备份路径为e:\\a的文件,每30秒进行一次备份,时间可修改。


public class Test12 {

    public static void main(String[] args) throws InterruptedException {

        Timer t = new Timer();
        t.scheduleAtFixedRate(new MyTask(),new Date(),1000*30);

        for(int i = 0;i<10000;i++){
            Thread.sleep(1000);
            System.out.println("warning");
        }


    }

}

class MyTask extends TimerTask{

    static final String SOURCE = "e:\\a";
    static String DEST;

    @Override
    public void run() {

        Date d = new Date();
        DateFormat df = new SimpleDateFormat("yyyy-MM-dd_HH-mm-ss");
        DEST = "e:\\dest_" + df.format(d);
        File file = new File(SOURCE);
        File dest = new File(DEST);

        if(dest.exists()){
            deleteAll(dest);
        }
        System.out.println("创建备份目录?"+dest.mkdirs());
        List<File> list = new ArrayList<File>();

        getAllFile(file,list);

        backUp(list,dest);
    }

    //备份
    private static void backUp(List<File> list, File dest) {

        if (list == null || list.size() <= 0) {
            return;
        }
        for (File f : list) {
            String fpath = f.getAbsolutePath();     //取出绝对路径        e:\\a
            String newpath = fpath.replace(SOURCE, DEST);
            System.out.println("对应的新路径" + newpath);
            File newFile = new File(newpath);
            if (newFile.getParentFile().exists() == false) {
                System.out.println("创建" + newFile + "的父目录成功?" + newFile.getParentFile().mkdirs());
            }
            if (f.isFile()) {
                copy(f, newFile);
            }
        }

    }

    //复制
    private static void copy(File inFile, File outFile) {
        FileInputStream fis = null;
        FileOutputStream fos = null;
        boolean isFlag = false;

        try {
            fis = new FileInputStream(inFile);
            fos = new FileOutputStream(outFile);

            byte[] bs = new byte[1024];
            int length = -1;
            while ((length = fis.read(bs)) != -1) {
                fos.write(bs, 0, length);
            }
            fos.flush();
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if (fos != null) {
                try {
                    fos.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            if (fis != null) {
                try {
                    fis.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }

    //递归获取原目录下所有的文件信息
    private static void getAllFile(File source, List<File> list) {
        if (source.isDirectory()) {
            //查看子目录 listFile()
            File[] fs = source.listFiles();
            if (fs != null && fs.length > 0) {
                //说明有子目录或子文件
                for (File ff : fs) {
                    getAllFile(ff, list);
                }
            }

        }
        list.add(source);

    }

    //递归删除
    private static void deleteAll(File f) {
        if (f.isDirectory()) {
            File[] fs = f.listFiles();
            if (fs != null && fs.length > 0) {
                for (File file : fs) {
                    deleteAll(file);
                }
            }
        }
        System.out.println(f + "删除成功?" + f.delete());
    }

}

再为大家补充一段:


import java.util.Calendar;
import java.util.Date;
import java.text.SimpleDateFormat;
import java.io.IOException;
import java.io.PrintStream;
 
public class Backup 
{
 public static void main(String[] args) 
 {
  Runtime runtime = Runtime.getRuntime();
  Calendar calendar = Calendar.getInstance();
  SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd_HHmmss");
  String currentTime = dateFormat.format(calendar.getTime());
  Process p = null;
  PrintStream print = null;
  StringBuilder buf = new StringBuilder();
  for(String a : args){
   buf.append(a);
   buf.append(" ");
  }
  String databases = buf.toString();
  
  try{
   p = runtime.exec("cmd /c mysqldump -uroot -p1234 -B "+databases+">"+currentTime+".sql.bak");
  }catch (IOException e){
   if( p != null ){
    p.destroy();
   }
   try{
    print = new PrintStream(currentTime+"_backup_err.log");
    dateFormat.applyPattern("yyyy-MM-dd HH:mm:ss");
    currentTime = dateFormat.format(calendar.getTime());
    print.println(currentTime+"  backup failed.");
    e.printStackTrace(print);
    print.flush();
   }catch (IOException e2){
 
   }finally{
    if(print!=null){
     print.close();
    }
   }
  }
 }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程网。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Java实现定时备份文件

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

vbs如何实现文件夹定时自动备份

小编给大家分享一下vbs如何实现文件夹定时自动备份,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!代码如下:/*==========================
2023-06-08

linux实现对上传文件的定时备份、增量备份的方法

介绍 如果你们使用的是类似阿里云的OSS存储服务,那么可以使用服务提供的定时备份,这样可以不用考虑在服务器上做文件备份。 实际上想实现基础的备份还是非常简单的,我们平常使用tar、unzip等命令打包文件,在这个基础上编写一个shell脚本
2022-06-03

Mysql5.7定时备份的实现

1、找到mysql安装路径D:\xxx\MYSQL\MySQL Workbench CE 6.0.8下的mysqldump.exe,由于脚本执行该程序要求路径下不能有空格(如果路径有空格则会生成0kb的备份文件),所以拷贝mysqldump
2022-05-18

Linux实现定时备份MySQL数据库并删除30天前的备份文件

1. mysql5.6以上版本 2. 修改 /etc/my.cnf 文件# vim /etc/my.cnf [client] host=localhost user=你的数据库用户 password='你的数据库密码'3. 编写数据库脚本
2022-06-04

Centos7备份文件时备份文件加入备件日期

linux是以文件为基础来管理系统中的设备、接口、文件、启动及应用软件,因为在本时过程中,对应用系统的.conf文件、脚本软件、shell等在编辑时都要求先做备份。一般我对重要文件进行操作时,都要对文件先
2022-06-04

Node定时备份MySQL的实现

本文主要介绍了Node定时备份MySQL的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
2023-05-17

python 脚本实现备份文件

'''功能:备份文件版本:1.0作者:白'''import  os,time,sysd_dir = '/data/backup/'d_file = 'system_bak.tar.gz's_dir = ['/etc','/boot','/v
2023-01-31

mongodb定时备份数据怎么实现

要定时备份MongoDB数据,可以使用以下几种方法实现:使用MongoDB的内置工具:MongoDB提供了mongodump命令行工具,可以用来备份MongoDB数据库。可以使用操作系统的定时任务工具(如cron)来定时执行mongodum
mongodb定时备份数据怎么实现
2024-04-09

怎么用python实现文件备份

这篇文章主要介绍“怎么用python实现文件备份”,在日常操作中,相信很多人在怎么用python实现文件备份问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么用python实现文件备份”的疑惑有所帮助!接下来
2023-06-29

怎么在linux中定时备份MySQL数据库并删除备份文件

怎么在linux中定时备份MySQL数据库并删除备份文件?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。一丶选择一个比较大位置来保存备份文件(创建文件就行)使用mkdir来创
2023-06-09

Python 实现文件的全备份和差异备份详解

Python实现文件的全备份和差异备份 之前有写利用md5方式来做差异备份,但是这种md5方式来写存在以下问题:md5sum获取有些软连接的MD5值存在问题不支持对空目录进行备份,因为md5sum无法获取空目录的md5值权限的修改md5su
2022-06-04

Mysql如何在linux中实现定时备份

在实际项目中,数据库是要经常备份的,就是为了防止突发情况,前段时间,我的数据库就遭遇了入侵要支付B特比的,结果数据全没了,哎,还好当时只是个测试库,不过有了这次危机,也就开始意识到了这个问题了。 先写个测试的数据库备份命令:#!/bin/s
2022-05-23

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录