Допустим на сервере лежит файл. Сервер Windows машина. На моем писюке я подключил шару и в ней создаю копию файла. В той же самой папочке. Посредством Exlporer-а. Будут ли гоняться байтики туда-сюда по сети или имеется специальная smb комманда для копирования и все просиходит удаленно на той машине где лежит файлик? А если я использую cygwin-овую "cp" команнду или xcopy?
O>>Будут гоняться байтики. _>А где можно найти подтверждение этому? Моя беда в том, что я не могу ничего найти по этому вопросу. Ни подтверждения ни опровержения.
kernel32!CopyFileExW реализован через чтение/запись файлов, на уровне интерфейса ядра нету такой операции "копирование файла"
Как много веселых ребят, и все делают велосипед...
Здравствуйте, the_moon, Вы писали:
_>Допустим на сервере лежит файл. Сервер Windows машина. На моем писюке я подключил шару и в ней создаю копию файла. В той же самой папочке. Посредством Exlporer-а. Будут ли гоняться байтики туда-сюда по сети или имеется специальная smb комманда для копирования и все просиходит удаленно на той машине где лежит файлик?
Специальная команда для удалённого копирования конечно же есть — FSCTL_SRV_COPYCHUNK называется. При её использовании копирование происходит в пределах сервера, А если на сервере ещё и ФС подходящая, например, brtfs, то происходит моментальное обновление метаинформации, что работает даже быстрее копирования. Разумеется в обоих случаях никакое содержимое файла по сети не передаётся.
Собственно, тут важно только одно — команда FSCTL_SRV_COPYCHUNK должна поддерживаться и сервером и клиентом. Начиная с некоторой версии и в Explorer и в Samba такая поддержка есть. Но если у тебя старые версии клиента или сервера, то увы, данные будут гоняться по сети туда-сюда.
Здравствуйте, watchmaker, Вы писали:
W>Собственно, тут важно только одно — команда FSCTL_SRV_COPYCHUNK должна поддерживаться и сервером и клиентом. Начиная с некоторой версии и в Explorer и в Samba такая поддержка есть. Но если у тебя старые версии клиента или сервера, то увы, данные будут гоняться по сети туда-сюда.
_>>А где можно найти подтверждение этому? Моя беда в том, что я не могу ничего найти по этому вопросу. Ни подтверждения ни опровержения.
и проверить все это достаточно легко: тупо заснифать свою сессию (создав в эксплодере копию гигабайнтного файла %)) -- если полился SMB/CIFS траффик --> тебе не повезло