2013-07-15 63 views
1

我有一個shell腳本來備份和恢復掃描儀設備的校準。使用通配符複製文件夾和文件

代碼:

if [ "-backup" == "$1" ]; then 
    if [ ! -d $BACKUPDIR ]; then 
    mkdir -p $BACKUPDIR 
    cp -r -d $HOME/Syscan_DocketPORT465 $BACKUPDIR/Syscan_DocketPORT465 
    cp -r -d $HOME/DocuCap_DocketPORT467 $BACKUPDIR/DocuCap_DocketPORT467 
    fi 
elif [ "-restore" == "$1" ]; then 
    if [ -d $BACKUPDIR ]; then 
    cp $BACKUPDIR/Syscan_DocketPORT465/* $HOME/Syscan_DocketPORT465/ 
    cp $BACKUPDIR/DocuCap_DocketPORT467/* $HOME/DocuCap_DocketPORT467/ 
    fi 
fi 

現在,它備份2個文件夾,Syscan_DocketPORT465DocuCap_DocketPORT467。在這些文件夾中有一個名爲Calibration.dat的文件。

我現在需要做的是讓每個文件夾都跟着*_DocketPORT*被備份和恢復,這樣每次添加DocketPORT的新配置時,我們都不需要編輯腳本。

我已經試過這樣:

if [ "-backup" == "$1" ]; then 
    if [ ! -d $BACKUPDIR ]; then 
    mkdir -p $BACKUPDIR 
    cp -r -d $HOME/*_DocketPORT* $BACKUPDIR 
    fi 
elif [ "-restore" == "$1" ]; then 
    if [ -d $BACKUPDIR ]; then 
    cp -r -d $BACKUPDIR/*_DocketPORT/* $HOME 
    fi 
fi 

對於備份,這工作得很好!

但對於恢復它不斷告訴我,它不能覆蓋先前創建的/home/path/Calibrate.dat/home/path/Syscan_DocketPORT465/Calibration.dat

因此,基本上,它不斷在/home/path/SOMEDOCUCAPFOLDER/Calibration.dat/home/path/,而不是出於某種原因。

任何人都可以幫我嗎?

回答

2

您的第二個cp命令在*_DocketPORT/*中有不正確的斜線。它應該是*_DocketPORT*。嘗試將其更改爲:

cp -r -d $BACKUPDIR/*_DocketPORT* $HOME 
+0

您da da man dawg。我不敢相信我沒有看到我自己:)我想有時你只需要第二雙眼睛。 – JREN

相關問題