2014-03-25 131 views
-1

我是shell腳本中的新手,請問如何編寫備份腳本。我在目標目錄中有以下格式的數據。shell中的備份腳本

StoreID_date_time.zip

像:

-rw------- 1 rupesh ldapusers 8267310 Mar 22 12:00 44_22032014_115629.zip 

-rw------- 1 rupesh ldapusers 8269938 Mar 22 12:07 44_22032014_120013.zip 

-rw------- 1 rupesh ldapusers 8267110 Mar 22 12:14 44_22032014_120704.zip 

-rw------- 1 rupesh ldapusers 8254223 Mar 22 14:25 45_22032014_142155.zip 

-rw------- 1 rupesh ldapusers 7871060 Mar 22 12:11 48_22032014_120813.zip 

-rw------- 1 rupesh ldapusers 8314418 Mar 22 12:22 48_22032014_121038.zip 

-rw------- 1 rupesh ldapusers 8254699 Mar 24 12:13 49_22032014_145338.zip 

現在我想用下面的方式備份文件:

備份目錄:/backup/date/storeid/zip文件店

,如:

/backup/22032014/44/44_22032014_115629.zip,44_22032014_120013.zip...so on 

/backup/22032014/45/45_22032014_142155.zip 

/backup/22032014/48/48_22032014_120813.zip,48_22032014_121038.zip 

/backup/22032014/49/49_22032014_145338.zip 

次日/backup/23032014/respective_storeIDfolder&files

請給一些提示或代碼示例這樣我就可以移動前言。

回答

1

我已經編碼在最低限度的步驟沒有做一個真正的檢查,但驗證了它。它適用於我在我的包裝盒上創建的一些虛擬文件:)

#!/bin/bash 


for i in $(find * -type f -iname '*.zip') 
do 
    echo "Zip file : "$i 
    store_id=$(echo $i | cut -d "_" -f 1 ); 
    timestamp=$(echo $i | cut -d "_" -f 2 ); 
    echo Store id = ${store_id} 
    # I am assuming all these directories here will be of teh same pattern name. Else put a numeric check down. 
    mkdir -p /backup/${timestamp}/${store_id} 
    cp -f $i /backup/${timestamp}/${store_id}/ 
done; 
+0

非常感謝您 – Rups

+0

MY Pleasure。讓我們知道它是否有效! –

+0

它完美的工作。謝謝。我做了一些更改,現在備份路徑變爲/ backup/store_id/timestamp。現在我希望每個store_id僅包含最近的三個日期文件,如:/ backup/44/21032014,22032014,23032014,如果24032014來了,請刪除21032014 so.on – Rups