Как скопировать только новые или измененные файлы/папки за последний час в Powershell?

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

Имеется следующая иерарихия
Folder_1
-File_1_1
-File_1_2
Folder_2
-File_2_1
-Folder_2_1
--File_2_1_1
Folder_3

Теперь если вдруг появится новый файл в папке Folder_2_1 или изменится любой другой то они должен будут скопироваться

Делаю таким образом
Get-ChildItem -Path $folder_donor | Where-Object {$_.LastWriteTime -gt (Get-Date).AddHours(-1) } | Copy-Item -Destination $folder_recipient -Recurse -Container


И вроде способ рабочий, копирует файлы, повторяет иерархию, НО при создании или изменении файлов, меняются также атрибуты папки в которой он находится, и таким образом папка также попадает под эту выборку, и в результате в новое место копируется не только изменившийся файл, но и все файлы в изменившейся папке

А нужно копировать только файлы изменившиеся, и если этот файл находится в определенной папке, то только копировать необходимую иерархию папок, без левых неизменившихся файлов
  • Вопрос задан
  • 3986 просмотров
Пригласить эксперта
Ответы на вопрос 3
@FluffyBeaver
У Get-ChildItem есть параметр -File, позволяющий ограничить результат (как можно догадаться - только файлами).
Ответ написан
@GaryManshow
Добрый день!
При изменении файла, кроме даты, изменяется Hash файла. Используя Get-FileHash вы точно определите изменения
Ответ написан
Комментировать
hekkaaa
@hekkaaa
C#/.NET Developer
Привет!
Тут достаточно в начале применить параметры -File -Recurse

Данный конвейер прошелся по мему гит репозиторию сквозь папки и копировал конкретно файлы, игнорируя папки.
Get-ChildItem -File -Recurse | Copy-Item -Destination C:\Temp\

Как вижу фильтры дат и переменные для -Destination у Вас настроены уже. Просто чутка модификации с вашей стороны.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы