Есть ли способ в xcopy только что измененных или новых файлов?


58

Я пытаюсь развернуть сайт с моего рабочего стола на мой веб-сервер, и сейчас я делаю это:

 xcopy C:\source X:\destination /s

Мой рабочий стол - машина с Windows XP, и мне нужно скопировать на компьютер с Windows Server 2008, но это копирует все, и весь сайт очень большой, и на завершение копирования уходит очень много времени.

Есть ли способ специально просто скопировать новые или обновленные файлы? Я вижу, что вы можете передать дату изменения, но я хотел посмотреть, есть ли более простой способ сравнения с целевым файлом ...

Кроме того, я открыт для использования чего-либо за пределами xcopy, которое также может выполнять эту работу ...


5
Вы также можете попробовать Robocopy.
Joerage

Ответы:


98

Из документации XCOPY :

/ d [: мм-дд-гггг]: копирует исходные файлы, измененные только после указанной даты. Если вы не укажете значение mm-dd-yyyy, xcopy скопирует все исходные файлы, которые новее существующих целевых файлов. Этот параметр командной строки позволяет обновлять файлы, которые были изменены.

Итак, на вашем примере это должно выглядеть так:

xcopy C:\source X:\destination /s /d

2
«/ d» похоже, что вы должны указать дату. как уже упоминалось в вопросе, я не имею в виду дату отсечения. я просто хочу скопировать новые и обновленные файлы
leora

10
Нет, дата не обязательна! Вот почему это в квадратных скобках. Вы действительно читали эту строку? Он говорит, что делает именно то, что вы хотите!
Марк

4
С этим ответом нужно быть осторожным только в том случае, если веб-сервер и ваша рабочая станция настроены на одно и то же время! Если они оба не используют NTP, это может либо пропустить файлы, либо скопировать больше файлов, чем необходимо.
CarlF

5
Хотя в документации это точно указано, легко упустить /dиз виду то , что дата не является обязательной, а затем посмотреть на другие варианты и подумать, что решения не существует. :-)
Стефан Гурихон

2
Если файл не существует в папке назначения, кажется, что / D без указания даты скопирует его, что может быть нежелательным результатом.
TBone

25

Робокопия также является хорошей альтернативой:

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

Кроме того, вы можете сделать гораздо больше - команда зеркала удобна для веб-сайтов, на которых вы также удаляете файлы.


1
Спасибо за упоминание robocopy - всегда приятно узнать о некоторых доступных новых утилитах.
Каспер Леон Нильсен

3

Используйте параметр / A. Для всех новых или измененных файлов будет установлен атрибут архива.

Проверьте ссылку ниже для деталей:

Синтаксис команды Xcopy и примеры


1
Да, но если вам xcopy /M, то исходные файлы будут по- прежнему иметь архивный набор атрибутов после копирования их, и будет скопирован в следующий раз , а также. Требуется доступ на запись к исходным файлам.
Найджел

2

У меня запланирована следующая задача для файлов ~ 80k и папок ~ 2k:

xcopy \\sourceserver\share\ Q:\backuptarget\folder\ /i /d /y /he /C /EXCLUDE:C:\backup\list.txt > C:\backup\backup.log

Параметр / C продолжает копирование, даже если «доступ запрещен» к файлу или папке из-за того, что он открыт или не имеет разрешения под учетной записью службы, под которой вы запускаете эту запланированную задачу.

«>» перезаписывает журнал каждый раз, если вы хотите добавить, вы можете использовать «>>».


0

Есть Rsync , но я не использовал в Windows. Я обычно использую его в Linux:

rsync -avuz src/ remote:dst/

который только отправляет обновления (новые и измененные файлы).


-1

BitTorrent Sync работает великолепно. Он будет обновляться автоматически при каждом изменении файла. Пиринговый. Обновите несколько мест одновременно, если вам нужно. Легко использовать.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.