用于挂载共享和启动 rsync 的 Bash 脚本

用于挂载共享和启动 rsync 的 Bash 脚本

当我们开始停用第一台服务器时,需要将数据从一台服务器迁移到另一台服务器;第一台服务器是一台 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 

相关内容