2009-08-27 8 views
5

У меня есть две машины Server A и Server B, и я хочу скопировать все файлы и дерево папок с сервера A на сервер B с помощью PowerShell.Как скопировать файлы и дерево папок на удаленную машину?

Я попробовал команду, приведенной ниже, но он копирует только файлы в папке и не создает дерево папок:

Copy-Item E:\TestSource\* //TestDestination/ -recurse -force 
+1

Я ответил на аналогичный вопрос: http://stackoverflow.com/a/22419054/9130 –

ответ

-3

Я предполагаю, что вы имеете права на 2 серверах

Get-ChildItem "\ SERVER_A \ C $" -Recurse | Copy-Item -destination "\ SERVER_B \ C $"

+0

Я попробовал, но он копирует все папки, а также копирует все файлы из папки в корень каталога – Selwyn

+0

Этот оператор копирует папки и файлы в плоской структуре. – Zorayr

1
Get-ChildItem \\server_a\c$ -Recurse | % { 
    $dest = Join-Path -Path \\server_b\c$ -ChildPath (Split-Path $_.FullName -NoQualifier) 

    if (!(Test-Path $dest)) 
    { 
     mkdir $dest 
    } 

    Copy-Item $_.FullName -Destination $dest -Force 
} 

Использование Split-Path с параметром -NoQualifier возвращает путь к источнику без информации привода. Присоединитесь к этому префиксу пути назначения и используйте результат для создания целевого каталога (если он не существует) и выполните копию.

-3

Не используйте командлет PowerShell Copy-Item. Найдите сторонний инструмент зеркалирования/синхронизации. Мы используем RoboCopy.

4

Если у вас есть источник и папку назначения, вы можете использовать следующую команду:

robocopy $source $dest /e 

Если вам нужна дополнительная информация о команде, вы могли бы использовать robocopy /?, или посетить ROBOCOPY документацию на Windows Server Technet, Robocopy.