Поскольку ссылка на комментарий от mikeytown2s не работает, я объясню, почему ответ redent84s лучше:
Пока
ln -sfn newDir currentDir
выполняет работу, это не атомарная операция , как вы можете видеть с помощью strace:
$ strace ln -snf newDir currentDir 2>&1 | grep link
unlink("currentDir") = 0
symlink("newDir", "currentDir") = 0
Это важно, когда у вас есть корень веб-сервера, указывающий на эту символическую ссылку. Это может привести к ошибкам при удалении и повторном создании символической ссылки даже в течение микросекунды.
Для предотвращения ошибок используйте вместо:
$ ln -s newDir tmpCurrentDir && mv -Tf tmpCurrentDir currentDir
Это создаст временную ссылку и после этого перезапишет currentDir в атомарной операции .