当我们开始停用第一台服务器时,需要将数据从一台服务器迁移到另一台服务器;第一台服务器是一台 OS X 10.9.5 机器。我想设计一个脚本,当启动时,它会自动安装适当的共享点并开始 rsyncing 数据。这是我有的,但它不起作用
echo "Mounting Share..."
mkdir /tmp/Share
mount_smbfs //$USER:[email protected]/Share /tmp/Share
rsync -vuhma --progress /Volumes/Path/SharedFolders/Share/ /tmp/DocShare
脚本执行到此处,一切都乱套了。它创建目录,启动挂载过程,但并不等待挂载实际完成就启动 rsync。这导致 rsync 仅将文件转储到文件夹中,而不是实际的共享点。
如何确保在启动 rsync 之前安装卷时脚本暂停?
答案1
您可以将其添加到脚本中,该脚本会根据挂载点 /tmp/Share 检查根文件系统的设备 ID。脚本会在尝试 10 次后退出。
count=0
while :
do if [ "$(stat -f %d /)" -ne "$(stat -f %d /tmp/Share)" ]
then rsync …… #put the full command here (watch your paths)
else if [ "$count" -lt 10 ]
then echo "Waiting for the filesystem to mount"
((count++))
sleep 1
else echo "CANNOT MOUNT THE FILESYSTEM"
exit
fi
fi
done