package com.dev.ftpbackup; import java.io.File; import java.util.Date; import com.base.Com; import com.config.AppConfig; /** * ftpÏÂÔØÊý¾ÝÖÜÆÚÔݶ¨Îª2Сʱ;±£´æÊ±¼äΪ6¸öÔ * @author LiJun * */ public class FTPFileBackUp_Thread implements Runnable{ public static final int BACKUP_CYCLE_MIN = 60*60*2; //×î¶Ì±¸·ÝÖÜÆÚ¡¾2¸öСʱ¡¿ public static final int BACKUP_KEEP_MAX = 60*60*24*30*6; //±£Áô×î¾Ãʱ³¤¡¾180Ìì¡¿ public static final String BACKUP_FILEPATH = System.getProperty("user.dir") + File.separator + "ftpbackup/"; public AppConfig appCfg; public FTPFileBackUp_Thread(AppConfig appCfg) { this.appCfg = appCfg; } @Override public void run() { System.out.println(BACKUP_FILEPATH); System.out.println("FTPFileBackUp_Thread start at " + Com.getDateTimeFormat(new Date(), Com.DTF_YMDhms)); Date lastdate = new Date(2000,1,1); //ÉÏÒ»´Î±¸·Ý³É¹¦Ê±¼ä Date now = null; FTPFileUpdateDown ftp = null; while(true) { try { now = new Date(); long timelong = Math.abs((now.getTime()-lastdate.getTime())/1000); if(timelong >= 60*60*2) { boolean isSuccess = false; ftp = new FTPFileUpdateDown(appCfg.getEquie_device_ftp_ip(),appCfg.getEquie_device_ftp_port(),appCfg.getEquie_device_ftp_username(),appCfg.getEquie_device_ftp_password()); if(ftp.ftpLogin()) { //ÏÂÔØ±¸·ÝÎļþ¼Ð1 if(ftp.downLoadDirectory(BACKUP_FILEPATH,appCfg.getEquie_device_ftpbackup_file_path1())) { isSuccess = true; } //ÏÂÔØ±¸·ÝÎļþ¼Ð2 if(ftp.downLoadDirectory(BACKUP_FILEPATH,appCfg.getEquie_device_ftpbackup_file_path2())) { isSuccess = true; } if(isSuccess) { lastdate = now; } ftp.ftpLogOut(); } } //°ÑҪɾ³ýµÄÎļþ°ü×°³ÉÎļþ File file = new File(BACKUP_FILEPATH); if(file.exists()) { //Îļþ»òÎļþ¼ÐÊÇ·ñ´æÔÚ if(file.isDirectory()) { //ÅжÏÊÇ·ñÊÇĿ¼ info(file); } } Thread.sleep(2000); } catch (Exception e) { e.printStackTrace(); } } } //¶¨Ê±É¾³ý³¬¹ý180ÌìµÄÎļþºÍÎļþ¼Ð public static void info(File file) { //»ñµÃÎļþÀïÃæËùÓеÄÎļþ¼°Îļþ¼Ð File[] files = file.listFiles(); for(File f : files) { //»ñµÃ¾ø¶Ô·¾¶ÏµÄÎļþ¼°Îļþ¼Ð File absFile = f.getAbsoluteFile(); long currTime = System.currentTimeMillis(); //µ±Ç°Ê±¼ä long lastTime = absFile.lastModified(); //Îļþ±»×îºóÒ»´ÎÐ޸ĵÄʱ¼ä //ʱ¼ä²î long diffen = (currTime - lastTime)/1000; //System.out.println(diffen); //ɾ³ýÐÞ¸Äʱ¼ä³¬¹ý180ÌìµÄÎļþºÍÎļþ¼Ð if(diffen >= BACKUP_KEEP_MAX) { absFile.delete(); if(absFile.isDirectory()) { info(absFile); absFile.delete(); } } } } }