Необходимо перенести данные с одного сервера на другой, когда мы начинаем вывод из эксплуатации первого сервера; первый сервер - машина OS X 10.9.5. Я хотел бы разработать скрипт, который при запуске автоматически монтировал подходящие точки общего доступа и начинал повторную синхронизацию данных. Вот что у меня есть, кроме как не работает

echo "Mounting Share..."
mkdir /tmp/Share
mount_smbfs //$USER:$PASSWORD@server.domain.com/Share /tmp/Share
rsync -vuhma --progress /Volumes/Path/SharedFolders/Share/ /tmp/DocShare

Сценарий пробивается к этому моменту, и весь ад вырывается. Он создает каталог, запускает процесс монтирования, но не ожидает фактического монтирования перед запуском rsync. Это приводит к тому, что rsync просто записывает файлы в папку, а не на точку общего доступа.

Как я могу убедиться, что скрипт останавливается при монтировании тома перед запуском rsync?

1 ответ1

1

Вы можете добавить это в ваш скрипт, который проверяет идентификатор устройства корневой файловой системы по точке монтирования /tmp /Share. Сценарий завершается после 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 

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .