none
Копирование с сервера на сервер без участия локального компьютера RRS feed

  • Вопрос

  • Есть команда move-item -Path server1 -destination server2.

    Я запускаю её на локальном компьютере, так как на нем включена поддержка длинных путей, а на серверах - нет.

    Но при этом сценарии копирование происходит через мой компьютер, что нагружает сеть и вообще не очень эффективно.

    Можно ли запустить копирование с локального компа, но чтобы при этом копирование шло с сервера на сервер без моего участия?

    P.S. Я нашел способ запусить robocopy через invoke-command на одном из серверов, но как-то это не элегантно и нужно ещё Double-Hop обходить...

    20 августа 2018 г. 9:10

Ответы

  • 1. Настроить различным способом Double Hop - https://blogs.technet.microsoft.com/ashleymcglone/2016/08/30/powershell-remoting-kerberos-double-hop-solved-securely/

    2. Явно указать учетные данные в скрипте для Invoke-Command, скажем подмонтировать шару и начать копирование.

    New-PSDrive -Name P -PSProvider FileSystem -Root \\Server01\Share -Credential domain\user

    3. Создать задачу в Task Scheduler (New-ScheduledTask) указав учетные данные пользователя у кого права доступа к шаре и последующего запуска(Start-ScheduledTask)


    4. Использовать psexec & robocopy с указанием учетных данных: 

    psexec -u username -p password \\machine robocopy

    • Предложено в качестве ответа Vector BCOModerator 20 августа 2018 г. 9:49
    • Изменено KazunEditor 20 августа 2018 г. 9:50
    • Помечено в качестве ответа Kupriyanov 20 августа 2018 г. 12:45
    20 августа 2018 г. 9:42
    Отвечающий

Все ответы

  • 1. Настроить различным способом Double Hop - https://blogs.technet.microsoft.com/ashleymcglone/2016/08/30/powershell-remoting-kerberos-double-hop-solved-securely/

    2. Явно указать учетные данные в скрипте для Invoke-Command, скажем подмонтировать шару и начать копирование.

    New-PSDrive -Name P -PSProvider FileSystem -Root \\Server01\Share -Credential domain\user

    3. Создать задачу в Task Scheduler (New-ScheduledTask) указав учетные данные пользователя у кого права доступа к шаре и последующего запуска(Start-ScheduledTask)


    4. Использовать psexec & robocopy с указанием учетных данных: 

    psexec -u username -p password \\machine robocopy

    • Предложено в качестве ответа Vector BCOModerator 20 августа 2018 г. 9:49
    • Изменено KazunEditor 20 августа 2018 г. 9:50
    • Помечено в качестве ответа Kupriyanov 20 августа 2018 г. 12:45
    20 августа 2018 г. 9:42
    Отвечающий
  • Это все запускает команды на сервере, где нет поддержки длинных путей. И соответсвенно половина файлов не копируется. А задача наоборот запустить команду локально (то есть с поддержкой длинных путей), но сказать, чтобы копирование происходило напрямую между серверами.

    Если я перемещаю папку внутри раздела (со своего компьютера), то это происходит за секунду, то есть коммандлет отрабатывает с моего компьютера (с длиннными путями), но перемещение происходит внутри сервера без моего участия...

    Вот и здесь я так же хочу. Запускаю я с одного компьютера, а 2 других сервера понимают, что не нужно использовать мой комп как буфер. Просто между ними там супер канал, а ко мне гигабит всего идет.

    20 августа 2018 г. 9:55
  • Это все запускает команды на сервере, где нет поддержки длинных путей. И соответсвенно половина файлов не копируется. А задача наоборот запустить команду локально (то есть с поддержкой длинных путей), но сказать, чтобы копирование происходило напрямую между серверами.

    Если я перемещаю папку внутри раздела (со своего компьютера), то это происходит за секунду, то есть коммандлет отрабатывает с моего компьютера (с длиннными путями), но перемещение происходит внутри сервера без моего участия...

    Вот и здесь я так же хочу. Запускаю я с одного компьютера, а 2 других сервера понимают, что не нужно использовать мой комп как буфер. Просто между ними там супер канал, а ко мне гигабит всего идет.

    Мой пост выше + robocopy, robocopy может копировать файлы с длинными путями и ключ /move тоже есть.
    20 августа 2018 г. 10:03
    Отвечающий
  • Да, как я писал, такой (удаленный робокопи+обход запрета Double-Hop) вариант я нашел, но интересует именно возможность локального запуска команды, но без участия локального компа в копировании.
    20 августа 2018 г. 10:52
  • Да, как я писал, такой (удаленный робокопи+обход запрета Double-Hop) вариант я нашел, но интересует именно возможность локального запуска команды, но без участия локального компа в копировании.

    Такой возможности нет. Т.к. на этих ОС нет обновленных версий WinApi, которые используют этот функционал - https://docs.microsoft.com/en-us/windows/desktop/fileio/naming-a-file. Варианты выше я привел, самый простой, который удовлетворяет условию это robocopy & № 2.

    Starting in Windows 10, version 1607, MAX_PATH limitations have been removed from common Win32 file and directory functions. However, you must opt-in to the new behavior.

    These are the directory management functions that no longer have MAX_PATH restrictions if you opt-in to long path behavior: CreateDirectoryW, CreateDirectoryExW GetCurrentDirectoryW RemoveDirectoryW SetCurrentDirectoryW.
    
    These are the file management functions that no longer have MAX_PATH restrictions if you opt-in to long path behavior: CopyFileW, CopyFile2, CopyFileExW, CreateFileW, CreateFile2, CreateHardLinkW, CreateSymbolicLinkW, DeleteFileW, FindFirstFileW, FindFirstFileExW, FindNextFileW, GetFileAttributesW, GetFileAttributesExW, SetFileAttributesW, GetFullPathNameW, GetLongPathNameW, MoveFileW, MoveFileExW, MoveFileWithProgressW, ReplaceFileW, SearchPathW, FindFirstFileNameW, FindNextFileNameW, FindFirstStreamW, FindNextStreamW, GetCompressedFileSizeW, GetFinalPathNameByHandleW.

    20 августа 2018 г. 11:20
    Отвечающий
  • Вот - Windows Offloaded Data Transfers (ODX)

    ODX enables direct data transfers within or between compatible storage devices without transferring the data through the host computer.

    https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2012-R2-and-2012/hh831628(v=ws.11)

    Вроде должно работать по умолчанию в WS 2012 и старше, но нет. И Powershell'ные команды этот механизм поддерживают.

    Вопрос снимается. Это больше к серверам относится, чем к PoSh.

    20 августа 2018 г. 12:10