Использование ROBOCOPY для зеркалирования всех каталогов в источнике только в одноимённый каталог в пункте назначения.

Вопрос или проблема

У меня есть 3 каталога DIR1 DIR2 DIR3 на флешке, и я хотел бы зеркально отобразить их в каталогах с теми же именами в пункте назначения.

robocopy "F:\" "E:\" /MIR /E /COPYALL /DCOPY:DATE /MT:12 /Z /TEE /LOG:"C:\Users\Alessandro\Documents\PS_scripts\robocopy_logs\log_robocopy_mirroring_$(Get-Date -Format 'yyyyMMdd_HHmmss').txt"

Это команда, которую я бы использовал, но я не знаю, что добавить, чтобы исключить другие каталоги в пункте назначения.

Ответ или решение

Использование команды ROBOCOPY для зеркалирования нескольких каталогов с пендрайва (например, каталоги DIR1, DIR2 и DIR3) в каталоге назначения с теми же именами, но без копирования других каталогов назначения, требует некоторой тонкой настройки. В этом случае нам потребуется выполнить более избирательное копирование только тех каталогов, которые непосредственно нас интересуют. Давайте разберем, как это можно организовать.

Теория

ROBOCOPY (Robust File Copy) — это мощная утилита командной строки для Windows, предназначенная для копирования и синхронизации файлов и директорий. Один из наиболее часто используемых параметров ROBOCOPY — это режим зеркалирования (/MIR), который предназначен для полного дублирования структуры и содержимого исходного каталога в каталоге назначения. Это также включает удаление файлов в каталоге назначения, которые отсутствуют в исходном каталоге.

Однако ключевая задача в данном случае — зеркалирование только заданных подкаталогов (DIR1, DIR2, DIR3), без затрагивания других директорий в каталоге назначения. В этом контексте стандартная команда /MIR, если использовать её без уточнений, будет отражать всю структуру каталогов, что может привести к ненужному копированию и удалению излишних директорий.

Пример

Вот пример команды ROBOCOPY, которая делает то, что вам нужно, добавляя важные параметры для указания интересующих каталогов:

robocopy "F:\DIR1" "E:\DIR1" /MIR /E /COPYALL /DCOPY:DATE /MT:12 /Z /TEE /LOG:"C:\Users\Alessandro\Documents\PS_scripts\robocopy_logs\log_DIR1_$(Get-Date -Format 'yyyyMMdd_HHmmss').txt"
robocopy "F:\DIR2" "E:\DIR2" /MIR /E /COPYALL /DCOPY:DATE /MT:12 /Z /TEE /LOG:"C:\Users\Alessandro\Documents\PS_scripts\robocopy_logs\log_DIR2_$(Get-Date -Format 'yyyyMMdd_HHmmss').txt"
robocopy "F:\DIR3" "E:\DIR3" /MIR /E /COPYALL /DCOPY:DATE /MT:12 /Z /TEE /LOG:"C:\Users\Alessandro\Documents\PS_scripts\robocopy_logs\log_DIR3_$(Get-Date -Format 'yyyyMMdd_HHmmss').txt"

Применение

В вышеприведенных примерах команды копируют данные из каждого источника DIR1, DIR2, и DIR3 в соответствующие им каталоги назначения (в данном случае — в том же самом каталоге на диске E:). Параметр /MIR обеспечивает полное соответствие содержимого этих директорий между источником и назначением.

При этом используемые опции имеют следующие значения:

  • /MIR: Зеркалирование каталога и его содержимого.
  • /E: Включает подкаталоги, включая пустые.
  • /COPYALL: Копирует все атрибуты файла, включая время создания, разрешения и так далее.
  • /DCOPY:DATE: Обеспечивает копирование метаданных даты.
  • /MT:12: Использует многоядерное копирование, ускоряя процесс благодаря распараллеливанию.
  • /Z: Обеспечивает возможность возобновления копирования при обрыве сети или другого сбоя.
  • /TEE: Отображает выходные данные команды на экран в дополнение к их регистрации в файл.
  • /LOG для каждого действия с сохранением логов в уникальные файлы, в том числе с отметкой времени, что полезно для аудита операций копирования.

Этот подход также допускает возможность расширения или изменения для будущих необходимых директорий. Если в будущем у вас появятся дополнительные каталоги, которые нужно скопировать, просто добавьте новые строки с соответствующими командами.`

Таким образом, вы можете добиться желаемого результата, исключая копирование и синхронизацию ненужных каталогов, облегчая управление данными и ограничивая копирование только нужными подкаталогами на уровне командной строки с помощью ROBOCOPY.

Оцените материал
Добавить комментарий

Капча загружается...