Создать символическую ссылку на сетевом диске на файл на том же сетевом диске (Win10)

#python #windows #network-drive

#python #Windows #сетевой диск

Вопрос:

Постановка задачи:

У меня есть скрипт python 3.8.5, работающий в Windows 10, который обрабатывает большие файлы из нескольких мест на сетевом диске и создает файлы .png, содержащие графики проанализированных результатов. Все графики хранятся в одной папке назначения на одном сетевом диске. Это выглядит примерно так

Исходные файлы: \drivesrc1src1.txt
\drivesrc2src2.txt
\drivesrc3src3.txt

Выходная папка: \drivedestout1.png
\drivedestout2.png
\drivedestout3.png

Иногда нам нужно восстановить исходный исходный файл и детально изучить часть трассировки данных. Это включает в себя поиск исходного файла в нужной папке. Имена исходных файлов представляют собой длинные буквенно-цифровые строки, поэтому этот процесс является утомительным. Чтобы сделать это менее утомительным, я хотел бы создать символические ссылки на исходные исходные файлы и сохранить их рядом с файлами .png. Тогда выходная папка будет выглядеть следующим образом

Выходные файлы:

\drivedestout1.png
\drivedestout1_src.txt

\drivedestout2.png
\drivedestout2_src.txt

\drivedestout3.png
\drivedestout3_src.txt

где \drivedestout1_src.txt находится символическая \drivesrc1src1.txt ссылка на и т.д.

Я пытаюсь добиться этого с помощью

os.symlink('//drive/dest/out1_src.txt', '//drive/src1/src1.txt')

Однако независимо от того, что я пытаюсь, я получаю

PermissionError: [WinError 5] Доступ запрещен

Я попытался запустить скрипт из командной оболочки с повышенными правами, включив режим разработчика и запустив

fsutil behavior set SymlinkEvaluation R2R:1

fsutil behavior set SymlinkEvaluation R2L:1

но, похоже, ничего не работает. Нет абсолютно никаких проблем с созданием символических ссылок на локальном диске, например,

os.symlink('C:/dest/out1_src.txt', '//drive/src1/src1.txt')

но это не достигает моих целей. Я также попытался создать ссылки на локальном диске, указанные выше, а затем скопировать их в сетевое расположение с помощью

shutil.copy(src, dest, follow_symlinks = False)

и он завершается с тем же сообщением об ошибке. Попытки выполнить то же самое непосредственно в командной строке из командной строки с повышенными правами также завершаются неудачей с тем же сообщением об ошибке «Доступ запрещен»

mklink \drivedestout1_src.txt \drivesrc1src1.txt

Похоже, это какая-то ошибка разрешения Windows. Однако, когда я запускаю fsutil behavior query SymlinkEvaluation в оболочке, я получаю

Включены локальные и локальные символические ссылки.
Включены локальные и удаленные символические ссылки.
Включены удаленные и локальные символические ссылки.
Включены удаленные символьные ссылки на удаленные.

Есть какие-нибудь идеи, как это решить? Я часами искал в Google, и, согласно всему, что я читаю, это должно работать, за исключением того, что это не так.

Ответ №1:

Откройте secpol.msc на компьютере, где размещен общий ресурс newtork, перейдите к разделам Локальные политики — Назначение прав пользователя — Создание символических ссылок и добавление учетной записи, которую вы используете для подключения к общему сетевому ресурсу. Вам необходимо выйти из общей папки (Панель управления — Все элементы панели управления — Диспетчер учетных данных или, возможно, вам придется перезагрузить оба компьютера) и повторить попытку.

Комментарии:

1. Спасибо, придется попросить моего сетевого администратора попробовать это, так как он заблокирован на корпоративном уровне, будет возвращен обратно.