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()); Listlist = new ArrayList(); getAllFile(file,list); backUp(list,dest); } //備份 private static void backUp(Listlist, 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, Listlist) { 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(); } } } } }
以上就是本文的全部內容,希望對大家的學習有所幫助
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69901823/viewspace-2790935/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Linux實現定時備份MySQL資料庫並刪除30天前的備份檔案LinuxMySql資料庫
- gitlab自動定時備份檔案,備份失敗傳送郵件Gitlab
- Linux作業系統定時備份檔案方法Linux作業系統
- linux實現mysql資料庫每天自動備份定時備份LinuxMySql資料庫
- BMMySQL定時備份資料庫(全庫備份)的實現meuMySql資料庫
- 檔案共享服務之實時備份(inotify+rsync)
- MySQL 定時備份MySql
- 實戰-MySQL定時增量備份(2)MySql
- sql檔案備份SQL
- MySQL資料庫定時備份的幾種實現方法MySql資料庫
- 實戰-MySQL定時全量備份(1)MySql
- MySQL 定時增量備份MySql
- MYSQL定時備份(一)MySql
- oracle 控制檔案及引數檔案何時自動備份Oracle
- Networker備份windows檔案Windows
- ManagerDB 備份檔案管理與異地備份
- 實現MySQL資料庫的實時備份MySql資料庫
- 『無為則無心』Python基礎 — 43、檔案備份的實現Python
- MYSQL定時任務-定時清除備份資料MySql
- win10如何備份桌面檔案 win10怎樣備份桌面檔案Win10
- 使用 NineData 實現備份集的實時查詢
- Oracle設定多個歸檔路徑生成多份歸檔日誌,Rman備份時也只備份其中的一份歸檔日誌Oracle
- ORACLE常用定時備份指令碼Oracle指令碼
- 定時備份MySQL資料庫MySql資料庫
- Java實現檔案切割拼接Java
- Python實現騰訊雲CDB備份檔案自動上傳到COSPython
- 【RMAN】Oracle中如何備份控制檔案?備份控制檔案的方式有哪幾種?Oracle
- python保留7天備份檔案Python
- Java如何實現定時任務?Java
- 【備份】RMAN中對控制檔案的幾種備份方法
- 網站搬家時匯入SQL Server備份檔案失敗網站SQLServer
- win10系統如何備份檔案 win10系統備份檔案在哪裡Win10
- Mysql定時備份資料指令碼MySql指令碼
- 資料庫定時備份linux篇資料庫Linux
- Linux下Mysql定時自動備份LinuxMySql
- MSSQL-最佳實踐-利用檔案組實現冷熱資料隔離備份方案SQL
- Linux基楚操作指引【檔案改名、檔案備份、檔案刪除】Linux
- 實戰:xfs檔案系統的備份和恢復