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