Robocopy копирует только новые файлы

Обновлено: 21.11.2024

Копирование файлов каждый день отнимает у нас много времени и сил. Хотя это возможно для ограниченного количества файлов, но не для нескольких файлов (иногда до тысяч).

На поиск, сортировку, выбор и копирование файлов уходит много времени и усилий. Кроме того, если файл с таким именем уже существует, его поиск и замена последней версией этого файла становится еще более утомительной. Поэтому разумнее копировать только новые или измененные файлы.

Было бы лучше, если бы вы отказались от идеи делать это вручную. Вы можете попробовать сделать это с помощью таких команд, как Robocopy или Xcopy. Или используйте программное обеспечение для копирования файлов, которое сделает это легко и быстро за вас. Но не каждое программное обеспечение предлагает эту функцию, а если и предлагает, то не с необходимой гибкостью и скоростью.

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

Давайте сначала посмотрим, как это сделать с помощью Robocopy, а затем с помощью Copywhiz, чтобы вы могли решить это самостоятельно.

Что такое Copywhiz?

Расширьте возможности копирования файлов с помощью Copywhiz, поскольку он дает вам больше гибкости и больше контроля над процессом копирования и резервного копирования файлов. Вот как Copywhiz упрощает копирование файлов:

  • Копировать только новые или измененные файлы
  • Легко выбирать файлы по имени, расширению, папке и т. д. из множества папок.
  • Автоматически упорядочивать файлы на основе их атрибутов и метаданных.
  • Копировать файлы в несколько папок/компьютеров
  • Скопируйте файлы из нескольких папок и вставьте их одновременно
  • Синхронизировать файлы между источником и местом назначения
  • Выбрать файлы из нескольких папок и сжать в один ZIP-файл.
  • Создавайте резервные копии файлов по расписанию, чтобы упростить задачу копирования файлов.

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

Использование Robocopy

Команда Robocopy Robocopy Source [Destination] /XO :[YYYYMMDD] копирует все исходные файлы, измененные только в указанную дату или позже. Этот параметр командной строки позволяет обновлять измененные файлы.

Например: чтобы скопировать все файлы в каталоге «E:data», которые были изменены 1 января 2018 года или позднее, в папку «E:\backup», будет использоваться следующая командная строка:

Robocopy E:\data E:\backup /xo 20180101

Вы также можете сделать это с помощью Xcopy. Вот статья, объясняющая это.

Однако такие команды, как Robocopy, не так просты. Системные администраторы могут использовать его. А вот рядовым пользователям будет сложно. Вместо этого я покажу вам, как сделать это очень быстро/легко с помощью Copywhiz.

Использование Copywhiz

Вот короткое видео, в котором показано, как легко сделать это в Windows с помощью Copywhiz:

Расшифровка видео

<р>1. Перейдите в Проводник Windows, выберите файлы из исходной папки, щелкните правой кнопкой мыши и выберите Copywhiz–>Копировать, как показано ниже:

<р>2. Щелкните правой кнопкой мыши папку назначения, в которую вы хотите скопировать файлы, и выберите Copywhiz–>Вставить дополнительно.

<р>3. Откроется окно Copywhiz. Нажмите кнопку «Дополнительные настройки», выберите «Автоматически определять и вставлять только новые или измененные файлы» и нажмите «ОК».

<р>4. Если такая же папка уже существует в месте назначения, то будут заменены только новые или измененные файлы, а остальные будут пропущены, что сэкономит много времени.

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

Кроме того, вы можете копировать файлы на основе определенных дат (дата изменения, дата создания, дата доступа).

Заключение

То, что может занять несколько часов, если делать это вручную, Copywhiz сделает за несколько секунд! Укажите тип даты файла и диапазон дат, чтобы файлы копировались на основе критериев даты.

Эта функция удобна при обмене/загрузке только недавно измененных файлов или даже при выборе последней музыки/изображений из нескольких папок.

Загрузите бесплатную пробную версию отсюда.

Чтобы посмотреть дополнительные обучающие видео, нажмите здесь .

Подпишитесь на наш канал YouTube, чтобы получать регулярные обновления и интересные видео!

Хорошего дня.

Спасибо, что дочитали до конца :)

Одна мысль о «Копировать только новые и измененные файлы в Windows с помощью альтернативного инструмента замены Robocopy»

Copywhiz имеет хорошую репутацию в этой области, и я также предпочитаю Teracopy и Gs Richcopy 360, все они лучшие в этом году

Цель: найти все новые файлы и подпапки в какой-нибудь корневой папке (скажем, Documents) и скопировать их на другой диск (в данном случае J).

Используемая командная строка:

robocopy c:\users\valery\documents j:\robocopy /XO /E /MAXAGE:20131030 /XD

Результат: Создано полное дерево папок. Копируются только новые файлы, что и должно работать. Пока все хорошо.

Дело в том, что я не хочу создавать все подпапки на целевом диске, если в них нет новых файлов.

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

4 ответа 4

Вы можете добавить /S для этого. Вам не нужен \E для копирования пустых каталогов. Вам даже не понадобится \XO, который делает \MAXAGE .

/S :: копировать подкаталоги, но не пустые.

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

Если у вас нет каталогов для исключения, вы можете просто использовать:

Вы можете сделать робокопию /? за помощь.

Прежде всего большое спасибо за ответ! Это не проблема - не копировать пустые подпапки. Я знаю об/с. Что такое /xd в этом месте в командной строке? Может я не правильно обозначил свою проблему. Когда я использую свою командную строку, все дерево каталогов (папок) создается на целевом диске. Тогда в соответствующие папки будут скопированы только «новые» файлы. Это означает, что большинство папок на целевом диске будут пустыми. Как я уже писал, нет такой огромной проблемы зайти в папку за папкой и найти где находятся "новые" файлы, но это дурацкая работа.

Извините за предыдущий комментарий! Не обратил внимание на /XD рядом с /S. Оно работает. Я знаю о /S, но что означает ?xd в этом контексте? Я чувствую, что его расположение в командной строке имеет решающее значение. Я не понял этот параметр из документации robocopy, извините

Вы использовали /XD, поэтому я предположил, что вы исключите некоторые каталоги. Кстати, вам не нужен /E для пустых каталогов. Вы можете заменить его на /S . Вам даже не понадобится /XO, что делает /MAXAGE . Я изменю это в своем вопросе. Вы добавляете каталоги, которые хотите исключить, после /XD , если таковые имеются, вы можете удалить этот параметр.

Я понял свою ошибку. Я не понял, что в /S ",но не пустые" означает еще и случай, когда исходная папка не является "настоящей пустой папкой", а скорее "псевдопустой" - такой, которая не содержит файлов, созданных после определенной даты. Большое спасибо еще раз! Валерий

Я думаю, что документацию можно было бы улучшить, описав ключ /s как "копировать подкаталоги, но не создавать пустые", что было бы намного понятнее для подобных ситуаций

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

Могу ли я использовать ROBOCOPY для этого? Существует список вариантов исключения, а именно:

  • /XC :: Исключить измененные файлы.
  • /XN :: исключить более новые файлы.
  • /XO :: Исключить старые файлы.
  • /XX :: исключить дополнительные файлы и каталоги.
  • /XL :: исключить одинокие файлы и каталоги.

Что именно означает исключение? Исключить копирование или исключить перезапись? Например, если бы я написал:

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

Или есть лучший инструмент для этого?

А? Что нужно знать о MSBuild? Если у вас есть работающее решение, вам подойдет новая версия.

@Filburt: Может быть, мне нужен быстрый и грязный способ развертывания моего веб-приложения? Кажется, нет тривиального способа развертывания на веб-сервере из решения. Хотите попробовать ответить? Вам не нужно предоставлять ответ, ориентированный на Robocopy.

О, @Filburt, я знаю. В настоящее время у меня есть шесть разных дел, и все они должны быть закончены, прежде чем я смогу вернуться домой сегодня вечером. Я просто пытался использовать StackOverflow в качестве своего помощника, пытаясь сэкономить время. Я ТАКЖЕ искал, есть ли способ сделать это, о котором я еще не знал. Как я указал, есть ли лучший инструмент? Я был совершенно готов использовать все, что было бы быстро. Возможно, я злоупотребляю своим временем. Спасибо за ответ.

Но в следующий раз, когда у кого-то возникнет вопрос о Robocopy, угадайте что, @Filburt, ответ будет здесь.

3 ответа 3

Чтобы ответить на все ваши вопросы:

Да, RC должен соответствовать вашим требованиям (простота, копируйте только то, что нужно)

Что именно означает исключение?

Это исключит копирование — RC называет это пропуском

Будет ли параметр /XO копировать только новые файлы, а не файлы того же возраста?

Да, RC копирует только новые файлы. Файлы одного возраста будут пропущены.

(правильной командой будет robocopy C:\SourceFolder D:\DestinationFolder ABC.dll /XO )

Возможно, в вашем случае может оказаться полезным использование параметра /MIR. В общем, RC скорее ориентирован на каталоги и деревья каталогов, чем на отдельные файлы.

Вы можете использовать robocopy для копирования файлов с флагом архива и сброса атрибута. Используйте командную строку /M, это мой скрипт резервного копирования с несколькими дополнительными приемами.

Для этого скрипта требуется инструмент NirCmd, чтобы мышь двигалась, чтобы моя машина не впадала в спящий режим. Сценарий использует файл блокировки, чтобы сообщить, когда сценарий резервного копирования завершен и сценарий mousemove.bat закрыт. Вы можете пропустить эту часть.

Еще один инструмент 7-Zip для разделения файлов виртуальных ящиков размером менее 4 ГБ, моя целевая папка по-прежнему FAT32, поэтому это обязательно. Я должен использовать диск NTFS, но еще не конвертировал резервные диски.

Robocopy — это инструмент командной строки, доступный бесплатно в составе загружаемого набора ресурсов Windows. Это внешняя команда, которая доступна в следующих операционных системах.

Windows NT, Windows 2000, Windows Server 2008, Windows Vista, Windows 7 и Windows XP.

Загрузите инструмент командной строки Robocopy для Windows 2003 и 2008 Server / Windows XP / Vista / 7 по следующему пути:

Установите rktool.exe и выполните следующие шаги, чтобы скопировать только новые и измененные файлы.

Пуск > Выполнить > введите cmd и нажмите Enter, чтобы открыть окно командной строки.

Введите robocopy /? чтобы узнать о функции, предоставляемой инструментом командной строки Robocopy. Здесь я пометил все функции серым цветом и выделил некоторые функции, которые я использовал для синхронизации моего диска d: с целевым диском, на который необходимо скопировать данные.

Следующую команду я использовал для синхронизации папок и файлов.

Значение переключателей, используемых в приведенной выше команде, поясняется ниже.

Приведенная выше команда синхронизирует ваши данные из источника в место назначения. Это означает, что если вы удалили некоторые данные с жесткого диска, они также будут удалены с целевого диска. Я сделал это для синхронизации своих данных, если вы не хотите удалять какие-либо файлы с целевого диска, не используйте параметр / PURGE.

Еще несколько примеров:

В этом примере все файлы .txt будут скопированы из каталога folder1 в каталог folder2.

В этом примере все файлы будут скопированы из папки1 в папку2, но не каталоги.

В этом примере все файлы и папки (включая пустые) будут скопированы из каталога folder1 в каталог folder2.

Скопируйте все файлы с исходного диска и удалите все файлы с исходного диска, но не удаляйте папку.

————————————————————————-
ROBOCOPY :: Надежное копирование файлов для Windows :: Версия XP010 < br />——————————————————————————

Начало: вторник, 21 мая, 10:17:22 2013

Источник: E: источник
Назначение: E: место назначения

Файлы: *.*

Параметры: *.* /S /E /COPYALL/ MOV /ZB /R:1000000 /W:30

—————————————————————————

>3 E:source
100% новый файл 1709 Копировать с Ext-HD в HD.bat
100% новый файл 2711 Копировать с HD в Ext-HD.bat
100% новый файл 643 update.bat

—————————————————————————

Всего скопировано пропущено Несоответствие FAILED Extras < br />Каталоги: 1 0 1 0 0 0
Файлы: 3 3 0 0 0 0
Байты: 4.9k 4.9k 0 0 0 0
Times: 0:00:00 0: 00:00 0:00:00 0:00:00

Скорость: 40504 байт/сек.
Скорость: 2,317 мегабайт/мин.

Завершено: вторник, 21 мая, 10:17:22 2013

C:>

Вам также может понравиться:

Об авторе

Анил Верма

7 мыслей о «Команда Robocopy: копировать только новые/измененные файлы (синхронизировать оба диска)»

Я использовал robocopy, и для меня, не занимающегося ИТ, это было похоже на взлом или что-то в этом роде. Как в фильмах показывают, набираешь какие-то команды и тут БУМ все начинает происходить. Я не чувствовал себя комфортно, используя его, и время от времени он начинал зависать. Мои коллеги рассказали мне о GS Richcopy 360. Он прост в использовании и предоставил мне многопоточную передачу файлов для высокой скорости передачи, предварительно запланированную передачу файлов, уведомление по электронной почте о выполнении задачи и многое другое. Попробуйте, надеюсь поможет!

Очевидно, что RoboCopy — одна из популярных программ для решения этой задачи. Я сам использовал его в течение долгого времени, но мне казалось, что он разработан для Linux, но исправлен для работы в Windows, что просто больно пытаться заставить их работать, и если они работают и ломаются, забудьте о попытках их исправить, не говоря уже о том, никакой поддержки. Единственная программа, которая похожа на RoboCopy и намного лучше, и является лучшей в своем роде для Windows, — это GS RichCopy 360 Enterprise. Эта программа работает почти так же, за исключением того, что она ПРЕДНАЗНАЧЕНА для Windows и предлагает гораздо больше функций, она проста в использовании и поставляется с отличной поддержкой. Они предлагают бесплатную пробную версию, попробуйте и решите.

Советую всем попробовать программу «Long Path Tool».
Мне это очень помогает.

Я хочу, чтобы «Файлы данных RC» в «C:\Laptop Backups» были заархивированы с датой в конце файла,
чтобы было:

C:\Laptop Backups\
Файлы данных RC 9_22_2014.zip
Файлы данных RC 9_23_2014.zip
Файлы данных RC 9_24_2014.zip
Файлы данных RC 9_25_2014.zip< /p>

Затем я хочу просмотреть самую раннюю дату в каталоге «C:\Laptop Backups» на основе даты создания,
не даты, добавленной к имени файла, и удалить все заархивированные файлы старше 14 дней. . Таким образом, в
примере выше я хочу получить дату создания для «Файлы данных RC 9_25_2014.zip», затем отсчитать 14 дней назад
и удалить все заархивированные файлы старше 14 дней.

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

Поэтому, если что-то не работает, но удаление все еще работает, оно будет удалять только 14 дней назад с
точки отказа, т.е., скажем, после 9-26-2014, опция копирования не работает, но < br />удаление срабатывает, тогда будет удалено только 14 дней назад от 25-9-2014, затем также 27-9-2014 будет
все еще удалено только от 25-9-2014 14 дней назад, вместо использования 9-27-2014. В этом случае всегда будут
резервные копии за 14 дней от 25 сентября 2014 г.

Возможно, это не проблема, но у меня есть подпрограмма, которая удаляет на основе сегодняшней даты, а затем у меня есть отдельная
программа резервного копирования, которая, как я только что обнаружил, дает сбой, поэтому мне пришло в голову, что удаление пакетная процедура, которую я поместил в планировщик Windows,
в конечном итоге удалила бы все мои резервные копии.

Итак, как лучше всего избежать этого, можно ли настроить robocopy на просмотр самой ранней даты файла, а затем удалять старые файлы
на основе этого, или есть какой-то другой скрипт или их комбинация?

Читайте также: