Робокопия Maxage Minage с параметром Мир - PullRequest
0 голосов
/ 04 июня 2019

Я использую Robocopy от источника до места назначения.

Следующие файлы будут перемещены.

Step 1: robocopy c:\Source C:\Destination /MIR

Теперь, когда я выполняю вторую команду на шаге, все, что до 1 января 2019 года, должно быть удалено из пункта назначения с параметром / MIR, однако этого не происходит (файлы после января 2019 года остаются в папке, а не удаляются с помощью / MIR команда). Как бы я решил эту проблему? Удалить что-нибудь до 20190101 года?

Step 2: robocopy c:\Source C:\Destination /MIR /maxage:19000101 /minage:20190101" 

1 Ответ

1 голос
/ 04 июня 2019

Это кажется странным поведением, так как можно подумать, что вы пытаетесь сделать что-то старше 1 января 2019 года и использовать переключатель /MIR, или, более конкретно, использовать переключатель /PURGE /E, чтобы удалитьдополнительные каталоги.

Причина, по которой это не работает, заключается в том, что переключатель /MINAGE влияет только на файлы, выбранные как скопированные , даже когда команда /MIR работает какожидается.

Допустим, у нас есть 2 файла: 1 старше 1 января 2019 года и один более новый.Когда мы запускаем стандартную команду \MIR:

Robocopy.exe C:\Source C:\Destination /MIR 

Оба файла копируются должным образом.

2 files Copied

Если мы добавляем дополнительный файл к месту назначения и повторно запускаем:

Robocopy.exe C:\Source C:\Destination /MIR 

Мы получаем, как и ожидалось, дополнительный файл удаляется:

2 files Skipped
1 files Extras

Когда мы затем добавляем /MINAGE и запускаем:

Robocopy.exe C:\Source C:\Destination /MIR /MAXAGE:20190101

Мы увидим:

2 files Skipped

Чтобы лучше проиллюстрировать, что происходит и почему он «пропустил» файлы, давайте добавим еще один параметр, «Включить пропущенные» \IS:

Robocopy.exe C:\Source C:\Destination /MIR /IS /MINAGE:20190101

Мы получаем:

1 files Copied
1 files Skipped

Это означает, что \MINAGE отфильтровывает то, что мы хотели скопировать.Если мы очистим каталог и снова запустим его, мы сможем лучше увидеть, что произошло:

Remove-Item C:\Destination -Force
Robocopy.exe C:\Source C:\Destination /MIR /MINAGE:20190101

Мы получим:

1 files Copied
1 files Skipped

Он скопирован поверх Старше файл, а не новее файл.Это означает, что когда он перебирал файлы в источнике, он использовал параметр /MINAGE, чтобы выяснить только какие файлы мне нужно скопировать , а не какие файлы мне нужны Удалить .

Причина такого поведения заключается в том, что /MINAGE предназначен для очень больших каталогов с медленными сетевыми связями или небольших конечных компьютеров, где мы заинтересованы только в копировании более новых файлов, ине обязательно все файлы.

Чтобы выделить копирование поверх удаления, если мы добавим 2 дополнительных файла, один более старый и один более новый, и повторно запустим /MINAGE и включим те же/IS переключатель для иллюстрации:

Robocopy.exe C:\Source C:\Destination /MIR /IS /MINAGE:20190101

Мы получаем:

1 files Copied
1 files Skipped
2 files Extras

Это подчеркивает, что /MIR предназначен для ... хорошо ... Зеркальное отображение .Остальные параметры существуют только для того, чтобы указать, что Копировать .

  • Он увидел /MINAGE и скопировал тот же файл (/IS), который был новее.
  • Он увидел /MINAGE и пропустил старый файл из копии.
  • Он увидел /MIR и удалил дополнительные файлы, которых там не должно быть Независимо от возраста дополнительных файлов .

простое решение - просто не копировать все для начала.Начните с пустой директории и скопируйте только файлы старше 1 января 2019 года:

Remove-Item C:\Destination -Force
Robocopy.exe C:\Source C:\Destination /E /MINAGE:20190101
...