Как получить доступ к удаленному файлу на диске Windows из Ubuntu с помощью php

У меня была эта команда в окнах:

exec('copy /V "'.$file.'" "'.$dest.'"');

где $file — это УДАЛЕННЫЙ файл на диске Windows в форме:

\\server\dr1$\folder\file
\\server\dr2$\folder\file
\\server\dr0$\folder\file
\\server\dr1$\folder\file2
\\server\dr1$\folder\file1

и так далее. А пункт назначения — локальный файл на сервере. Обратите внимание, что диски все время меняются, и что они не известны заранее (они исходят из результата БД). В Windows все нормально, выполняемая команда будет примерно такой (/V для проверки правильности копирования файла):

copy /V \\server\dr1$\folder\file c:\users\test\file

однако я не знаю, как запустить это в Linux, когда я пытаюсь

cp \\server\dr1$\folder\file /home/test/file

Я получил:

cp: cannot stat '\\server\dr1$\folder\file': No such file or directory.

Спасибо,

Нано.


person Nano Documet    schedule 21.03.2011    source источник
comment
монтирование не решение, проблема в том, что имена шаров (dr1$, dr0$ и т.д) неизвестны и их много, значения берутся из db. Они могут измениться без уведомления   -  person Nano Documet    schedule 22.03.2011


Ответы (2)


Вам необходимо использовать Samba/CIFS для монтирования диска перед копированием на него или с него.

Это будет выглядеть примерно так:

mount -t cifs //servername/sharename ./mountpoint/
cp ./mntpoint/folder/file /home/test/file

Документации по этому поводу довольно много. Попробуйте погуглить smbclient или cifs.

person vicTROLLA    schedule 21.03.2011
comment
Проблема в том что sharename неизвестно и их много, значения идут из db. Они могут меняться без предупреждения. - person Nano Documet; 22.03.2011

Вы можете использовать PHP для выполнения smbclientcommands. Smbclient ведет себя так же, как FTP, есть несколько классов, которые помогут вам в работе с PHP.

В качестве альтернативы вы можете смонтировать файловую систему в пространстве пользователя через FUSE (см. https://serverfault.com/search?q=fuse+cifs), скопируйте файлы и снова размонтируйте диск.

person konsolenfreddy    schedule 21.03.2011