Добрый день!
Чтобы создать выборочное резервное копирование файлов, находящихся только на нижнем уровне многопоточной структуры папок, можно воспользоваться командой `robocopy`, которая встроена в Windows, или создать батник для выполнения этой задачи.
Вот один из возможных подходов:
### Использование команды `robocopy`
1. Откройте текстовый редактор (например, Блокнот) и создайте новый файл с расширением `.bat`.
2. Вставьте в этот файл следующий код:
```bat
@echo off
setlocal
rem Укажите корневую директорию для резервного копирования
set "source=C:\aaa"
rem Укажите директорию, куда будут сохраняться резервные копии
set "destination=C:\backup"
rem Создание резервной копии файлов только из нижних уровней
robocopy "%source%" "%destination%" *.* /S /E /LEV:3 /COPY:DAT /R:3 /W:5
endlocal
```
### Пояснения к параметрам:
- `C:\aaa` — это ваш корень, который вы хотите резервировать.
- `C:\backup` — это папка для хранения резервной копии.
- `*.*` — включает все файлы.
- `/S` — копирует подкаталоги, но не пустые.
- `/E` — копирует подкаталоги, включая пустые.
- `/LEV:3` — ограничивает уровни копирования до 3-го (то есть, дойдет до 'ddd' и 'ddd1').
- `/COPY:DAT` — копирует данные, атрибуты и временные метки.
- `/R:3` — количество попыток повторного копирования при сбоях — 3.
- `/W:5` — время ожидания между попытками — 5 секунд.
### Запуск:
1. Сохраните файл с расширением `.bat` (например, `backup.bat`).
2. Запустите созданный файл, дважды щелкнув по нему.
### Альтернативный подход с PowerShell
Если вы предпочитаете использовать PowerShell, вот пример скрипта, который можно выполнить:
```powershell
$source = "C:\aaa"
$destination = "C:\backup"
# Создаем папку назначения, если она не существует
if (-Not (Test-Path -Path $destination)) {
New-Item -ItemType Directory -Path $destination
}
# Копируем файлы с сохранением структуры
Get-ChildItem -Path $source -Recurse -Depth 3 | Where-Object { $_.PSIsContainer -eq $false -and $_.FullName -like "*\ddd\*" -or $_.FullName -like "*\ddd1\*" } | ForEach-Object {
$destinationPath = Join-Path -Path $destination -ChildPath (Split-Path -Path $_.FullName -Parent).Substring($source.Length + 1)
$newDestination = Join-Path -Path $destination -ChildPath $destinationPath
if (-Not (Test-Path -Path $newDestination)) {
New-Item -ItemType Directory -Path $newDestination -Force
}
Copy-Item -Path $_.FullName -Destination $newDestination
}
```
### Пояснения к коду:
- Получаем все файлы до 3 уровня.
- Фильтруем только те, которые находятся в `ddd` и `ddd1`.
- Сохраняем структуру папок в директории назначения.
### Запуск PowerShell скрипта:
1. Скопируйте код в файл с расширением `.ps1` (например, `backup.ps1`).
2. Откройте PowerShell и запустите скрипт.
Эти подходы должны помочь вам организовать выборочное резервное копирование с сохранением структуры папок.