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();
|
}
|
}
|
}
|
}
|
}
|