Я пытаюсь найти быстрый способ рекурсивно обновить папку и все подпапки из другой папки. Очевидно, что полное удаление и Xcopy будут работать, но это очень медленно.
После обновления целевая папка должна точно соответствовать исходной папке. Измененные файлы и новые файлы следует копировать.
Если это упростит задачу, не беспокойтесь об удалении файлов, которые находятся в целевой папке, но отсутствуют в исходной папке.
Эта операция развертывания / зеркалирования / обновления кажется довольно простой. Мне действительно нужно писать сценарий C # для этого?
RoboCopy - это инструмент командной строки, предоставляемый Microsoft, который может выполнять зеркальное отображение. На странице Wiki также упоминается графический интерфейс.
Даны папки «source» и «dest», где вы хотите, чтобы «dest» соответствовал «источнику».
Видел ваш комментарий "не беспокойтесь об удалении устаревших файлов".
Если вам нравится делать это из интерфейса командной строки, xcopy (встроенный в WinXP) и robocopy (встроенный в Vista / Win7) оба делают копии «только для новых».
Total Commander имеет функцию синхронизации.
cls
@echo off
pushd %~dp0 >nul 2>&1
if not "%1" == "max" start /max cmd /c %0 max & exit/b >nul 2>&1
color 1f
TITLE robocopy "Source" "Dest" /FFT /NC /NDL /MIR /IT /MT:1 /R:0 /W:0
robocopy "Source" "Dest" /FFT /NC /NDL /MIR /IT /MT:1 /R:0 /W:0
exit /b n
Я бы, наверное, сделал это с помощью какой-нибудь системы контроля версий, возможно, git. Просто создайте репо в исходном и целевом каталогах. Для синхронизации просто выполните фиксацию из исходного каталога и извлеките из целевого каталога.
Git работает очень и очень быстро. Я слышал, что Mercurial тоже (хотя по опыту не знаю).
Этот подход также даст вам большую гибкость, если вам понадобится сделать что-то еще позже.