whyclj
2020-10-20 2a1aa055a75826211327ce37a7ad761bb7016c68
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
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();
                }
            }
        }
    }
}