數據備份方法及系統的制作方法
【技術領域】
[0001]本發明涉及數據處理技術領域,更具體地說,涉及一種數據備份方法及系統。
【背景技術】
[0002]為了防止計算機中的數據丟失或損壞,需要對計算機中的數據進行備份,以便在數據出現損壞或丟失的時候,可以通過備份的數據進行恢復。
[0003]當前的數據備份方案眾多,主要方案有直接備份和多線程備份。直接備份方案簡單,但備份性能差。多線程方案實現方式通常為:每個文件創建一個線程對該文件進行備份。多線程方案較直接備份方案備份性能有所提高。
[0004]發明人在實現本發明的過程中發現,目前的多線程備份方法中,文件數等于線程數,需要頻繁創建和回收線程,消耗大量的CPU資源,備份性能仍然較低。
【發明內容】
[0005]本發明的目的是提供一種數據備份方法及系統,以提高備份性能。
[0006]為實現上述目的,本發明提供了如下技術方案:
[0007]一種數據備份方法,包括:
[0008]建立若干個線程池;
[0009]按數據存儲目錄獲取待備份數據;
[0010]將從同一數據存儲目錄獲取的待備份數據傳輸給所述若干個線程池中的同一個線程池;
[0011]線程池中的若干個線程用于對接收到數據進行備份。
[0012]上述方法,優選的,線程池對所接收到的數據進行數據備份的過程包括:
[0013]將所接收到的待備份數據按數據文件分配給不同的線程進行數據備份。
[0014]上述方法,優選的,還包括:
[0015]當第一線程池中的所有線程都處于繁忙狀態時,若還有未備份的待備份數據,則將所述待備份數據加入到與所述第一線程池對應的隊列中;所述第一線程池為所述若干個線程池中的任意一個線程池;
[0016]當所述第一線程池中有空閑線程時,從與所述第一線程池對應的隊列中讀取一數據文件并分配給該空閑線程進行數據備份。
[0017]上述方法,優選的,所述按數據存儲目錄獲取待備份數據基于腳本語言實現;線程池進行數據備份的過程基于java語言實現。
[0018]上述方法,優選的,所述腳本語言為:shell腳本語言,或者,Python腳本語言,或者,ruby腳本語言。
[0019]—種數據備份系統,包括:
[0020]建立模塊,用于建立若干個線程池;
[0021]獲取模塊,用于按數據存儲目錄獲取待備份數據;
[0022]傳輸模塊,用于將從同一數據存儲目錄獲取的待備份數據傳輸給所述若干個線程池中的同一個線程池;
[0023]備份模塊,用于維護所述若干個線程池,線程池中的若干個線程用于對接收到數據進行備份。
[0024]上述系統,優選的,所述線程池具體用于,將所接收到的待備份數據按數據文件分配給不同的線程進行數據備份。
[0025]上述系統,優選的,還包括:
[0026]隊列管理模塊,用于當第一線程池中的所有線程都處于繁忙狀態時,若還有未備份的待備份數據,則將所述待備份數據加入到與所述第一線程池對應的隊列中;所述第一線程池為所述若干個線程池中的任意一個線程池;
[0027]讀取模塊,用于當所述第一線程池中有空閑線程時,從與所述第一線程池對應的隊列中讀取一數據文件并分配給該空閑線程進行數據備份。
[0028]上述系統,優選的,所述獲取模塊基于腳本語言實現;所述備份模塊基于java語言實現。
[0029]上述系統,優選的,所述腳本語言為:shell腳本語言,或者,Python腳本語言,或者,ruby腳本語言。
[0030]通過以上方案可知,本申請提供的一種數據備份方法及系統,建立若干個線程池,將屬于同一個數據存儲目錄的數據分配給同一個線程池,即每個線程池負責一個目錄的數據的備份,每個線程池中的線程負責目錄中不同數據的備份,從而不需要頻繁創建和回收線程,降低CPU資源的消耗,提高了數據備份性能。而且,采用多線程池進行數據備份,加大了并發備份數據分布的范圍,降低了同時備份小文件集的可能性,從而增強了數據備份的穩定性。
【附圖說明】
[0031]為了更清楚地說明本發明實施例或現有技術中的技術方案,下面將對實施例或現有技術描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發明的一些實施例,對于本領域普通技術人員來講,在不付出創造性勞動的前提下,還可以根據這些附圖獲得其他的附圖。
[0032]圖1為本申請實施例提供的數據備份方法的一種實現流程圖;
[0033]圖2為本申請實施例提供的數據備份方法的系統架構圖的示例圖;
[0034]圖3為本申請實施例提供的數據備份系統的一種結構示意圖。
[0035]說明書和權利要求書及上述附圖中的術語“第一”、“第二”、“第三” “第四”等(如果存在)是用于區別類似的部分,而不必用于描述特定的順序或先后次序。應該理解這樣使用的數據在適當情況下可以互換,以便這里描述的本申請的實施例能夠以除了在這里圖示的以外的順序實施。
【具體實施方式】
[0036]下面將結合本發明實施例中的附圖,對本發明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發明一部分實施例,而不是全部的實施例。基于本發明中的實施例,本領域普通技術人員在沒有付出創造性勞動前提下所獲得的所有其他實施例,都屬于本發明保護的范圍。
[0037]本發明實施例提供的數據備份方法及系統可以用于數據備份服務器。該服務器可以是待備份數據所在的服務器,也就是源數據所在服務器。當然,本發明實施例中,數據備份服務器也可以是與源數據所在服務器相互獨立的服務器。
[0038]請參閱圖1,圖1為本申請實施例提供的數據備份方法的一種實現流程圖,可以包括:
[0039]步驟S11:建立若干個線程池;
[0040]步驟S12:按數據存儲目錄獲取待備份數據;
[0041]可以預先由用戶配置備份參數,該備份參數可以包括:待備份數據的源路徑、備份數據的目的地址以及線程池的數目。待備份數據的源路徑即為數據存儲目錄。可以根據配置參數中的線程池的數目建立線程池。其中,線程池的數目和每個線程池中線程的數量可以根據數據備份服務器的硬件配置確定。所配置的線程池的數量和每個線程池中線程的個數只要能保證數據備份服務器的數據處理速度達到預設要求即可。例如,對于一般的PC機(如,4G內存,4核或8核的CPU)而言,線程池數量可以為3個,每個線程池中線程的數量可以為10個,具體還可以根據PC機的實際運行情況進行調優。
[0042]可選的,在配置備份參數時,還可以設置備份過濾條件,從而可以按數據存儲目錄獲取符合條件的待備份數據,也就是說,所配置的每個數據存儲目錄下只獲取符合條件的數據,不符合條件的數據則不再獲取。另外,若用戶未設置備份過濾條件,則所配置的每個數據存儲目錄下的所有數據都獲取。
[0043]本發明實施例中,步驟S11和步驟S12的具體執行順序不做具體限定,可以先執行步驟S11,再執行步驟S12,或者,先執行步驟S12,再執行步驟S11,或者,步驟S11和步驟S12同時進行。