2013-03-02 81 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

相关问题