2

Недавно мы скопировали все наши файлы на новый сервер хранения. Мы не хотели двигаться в то время, потому что мы не были уверены, что файлы будут потеряны.

Проблема в том, что у нас есть файлы в обоих местах.

Как мы можем переместить только те файлы, которые не существуют в цели, а те, которые существуют в обоих местах, мы удаляем из источника? Это Windows Server 2008.

5 ответов5

1
robocopy OLDDIR NEWDIR /S /XO

Это оставляет новые файлы только в NEWDIR. Файлы в NEWDIR, которые являются такими же или более старыми, будут перезаписаны.

robocopy OLDDIR NEWDIR /MIR /XO

Это делает нечто похожее - следите за дополнительным удалением файлов на этом.

Семантика команды /XO обратная.

Я просто создал набор исходных и целевых каталогов и доказал это самому себе, поскольку ни одна документация не объясняет истинное значение "Исключить новее". Новее что? Более новый источник? Новое направление? Какие?

Доказательство:

  1. Сделайте копию.

  2. Отредактируйте файл в NEWDIR, присвоив ему новую отметку времени.

  3. Сделайте копию снова, используя /XO. Новая отметка времени в файле в NEWDIR остается.

  4. Сделайте копию снова, используя /XN. Новая отметка времени в файле в NEWDIR возвращается.

0

Используйте инструмент сравнения, такой как Beyond Compare. Он может сравнивать папки и показывает, какие файлы существуют и не выходят из папок и подпапок. Кроме того, он показывает, есть ли какие-либо различия между файлами, которые существуют в обоих местах. вне всякого сравнения можно также копировать и / или перемещать файлы из одной папки в другую.

0

Используйте инструмент robocopy с ключом /xn. Я считаю, что Server 2008 поставляется с Robocopy в качестве стандарта.

/XC :: eXclude Измененные файлы.

/XN :: eXclude Более новые файлы.

/XO :: eXclude Старые файлы.

/XX :: eXclude eXtra файлы и каталоги.

/XL :: eXclude Lonely файлы и каталоги.

/MOV :: MOVe файлы (удалить из источника после копирования).

/MOVE :: MOVE файлы и каталоги (удалить из источника после копирования).

так что команда будет что-то вроде

robocopy OLDDIR NEWDIR /MOVE /XN

это переместит все старые файлы, но не перезапишет новые

Вы всегда можете использовать переключатель /L, чтобы выполнить пробный прогон, это покажет вам, что произойдет, фактически ничего не делая. Некоторые вещи могут отличаться в 2008 году, я использую версию XP.

0
robocopy %Files% %Bak% /E /ZB /MOVE /IS /COPY:DATSOU

Вам нужны не только файлы /MOVE , но и файлы /IS (включают в себя).

В противном случае Robocopy никогда не копирует файл, когда видит, что один и тот же файл находится в обоих местах.

Если вы скажете "Включить одинаковое", он увидит один и тот же файл в обоих местах и все равно скопирует файл из источника, И удалит его из источника, как и положено.

0

robocopy хорош, но я обнаружил, что опция /move не работает, если файл уже существует в целевой папке. Флаги /IS и /IT предназначены для того, чтобы разобраться с этим, но они не для меня, robocopy просто игнорирует их (ymmv). В качестве обходного пути вы можете создать новый целевой каталог и затем переместить его в основную целевую область после завершения копирования.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .