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
我會做一些關於它的更多的工作我自己,但我知道我需要幫助。
還是我這樣做是複雜的?也許備份程序可以做到這一點?
謝謝。當然,我應該rsync到我的nas,並不在意它是否安裝。今天晚些時候會繼續處理腳本。 – Fredrik 2013-03-03 10:51:02