2013-03-02 27 views
1

OS:OSX山獅bash腳本源目錄複製到兩個目標目錄,驗證和刪除源如果成功

我試圖寫一個腳本,如果存在文件1,做以下

  • 檢查在目標1(bitcasa) 如果存在然後將源文件夾複製到目標1 如果文件不存在找到bitcasa進程並殺死它然後等待60sec然後啓動bicasa。 再次嘗試(循環?)#bitcasa有時停止工作,必須重新啓動。
  • 檢查目標2上是否存在file2(nfs共享) 如果存在,則將源文件夾複製到目標1如果文件不存在,則嘗試裝載nfs共享。 再試一次(循環?)
  • 驗證複製的文件 如果文件複製成功刪除源文件

  • 我只希望腳本試幾次,如果螞蟻平NAS主機應該放棄,下次腳本運行時嘗試。我想每2小時運行一次腳本。 crontab接縫在山獅上被移除。

當我把它寫下來時,我意識到它比我想象的要複雜一點。

首先關於掛載nfs共享,在OsX中,如果彈出掛載的nfs共享文件夾,將會刪除/卷中的文件夾。如果nas可用,確保nfs共享始終處於掛載狀態的最佳方法是什麼?這可能在腳本之外處理? 如果我手動安裝nfs共享,我將需要創建/卷/媒體,這將導致如果我使用gui掛載共享將使用/ Volumes/media-1/sins/Volumes/media vill已經存在。

關於殺死進程的名稱罪我不知道PID,我試着用Linux命令我發現: 殺ps -ef | grep bitcasa | grep -v grep | awk ‘{print $2}’這沒有奏效。

我不知道如何檢查所有文件是否成功複製,也許rsync可以照顧到這一點?

我已經開始使用此(未測試)

#check if bitcasa is running (if file exist) 
    if [ -f /Volumes/Bitcasa\ Infinite\ Drive/file.ext ] 
    then 
    rsync -avz /Users/username/source /Volumes/Bitcasa\ Infinite\ Drive/destination/ 
     else 
     #Bitcasa might have stopped, check if process i running, kill if it is, then start bitcasa 
    fi 
    #Check if nfs share is mounted (if file exist) 
    if [ -f /Volumes/media/file.ext ] 
    then 
    rsync -avz /Users/username/source /Volumes/media/ 
    fi 
     else 
     #nfs share (192.168.1.106:/media/) need to be mounted to /Volumes/media 

我會做一些關於它的更多的工作我自己,但我知道我需要幫助。

還是我這樣做是複雜的?也許備份程序可以做到這一點?

回答

1

爲了您kill ... ps的問題,你可以使用killall,它可以殺死所有進程具有給出名稱

killall bitcasa 

或看到man ps和使用用戶定義的格式,從而簡化了選擇

ps -o pid,comm | awk '/bitcasa/ { print $1; }' | xargs kill 

對於nas,如果您可以登錄並安裝rsync和ssh(或已安裝它),則無需安裝任何東西。您只需要將192.168.1.106:/media/作爲rsync的目標,rsync就會執行所有必要的操作。

在任何情況下,第一次檢查,如果有必要安裝,然後當一切都設置正確,而不是反過來

if [ ! -f "/Volumes/Bitcasa Infinite Drive/file.ext" ]; then 
    # kill bitcasa, restart bitcasa 
fi 

rsync -avz /Users/username/source "/Volumes/Bitcasa Infinite Drive/destination/" 

相同的NAS

if [ ! -f "/Volumes/media/file.ext" ]; then 
    # mount nas nfs share 
fi 

rsync -avz /Users/username/source "/Volumes/media/" 

,或者如果你有啓動的rsync rsync和ssh在你的nas上,只是

rsync -avz /Users/username/source 192.168.1.106:/media/ 
+0

謝謝。當然,我應該rsync到我的nas,並不在意它是否安裝。今天晚些時候會繼續處理腳本。 – Fredrik 2013-03-03 10:51:02

相關問題