Robocopy

Как быстро скопировать большое количество файлов в windows

Содержание:

Когда вам нужно скопировать файлы на другой диск, вы обычно также используете обычный процесс выбора, копирования и вставки. Хотя этот процесс работает отлично, скорость становится узким местом, когда попытка передачи большого количества файлов может занять очень много времени. В этой статье мы поговорим о том, как использовать многопоточность Robocopy в Windows 10. Начнем!

Что ж, в качестве альтернативы многие технически подкованные пользователи используют Robocopy (надежное копирование файлов). Это инструмент командной строки, встроенный в Windows 10, который предоставляет больше возможностей для более быстрого перемещения данных в другое место.

Одна особенность, которая делает Robocopy таким особенным (и в основном упускаемым из виду), — это многопоточная функция, которая дает вам разрешение на одновременное копирование нескольких файлов. Вместо одного файла за раз с помощью функции копирования, встроенной в проводник.

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

Зачем нужны бэкапы

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

Случайное удаление

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

Поломка носителя

Тут всё сильно зависит от типа неисправности. В некоторых случаях данные со сломанного HDD или SSD восстановить можно за внушительную сумму, но иногда потери безвозвратны (даже за все деньги мира). Также есть риск нарваться на недобросовестных мастеров, которые вместо восстановления данных могут угробить их окончательно.

Неудачное обновление операционной системы

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

Вредоносное ПО

Различные программы-вымогатели, которые шифруют пользовательские файлы и требуют выкуп за их расшифровку. Исследователи и антивирусные компании помогают расшифровать данные и публикуют ключи к некоторым шифровальщикам, но далеко не ко всем. Однако, если на данный момент ключа расшифровки на ваш тип вымогателя нет, есть шанс что он появится в будущем. в таком случае зашифрованный носитель лучше сохранить до лучших времён. Чего точно  не стоит делать — это платить вымогателям: в этом случае кроме данных есть риск потерять ещё и деньги.

Кража/утеря компьютера

Компьютер в таком случае удастся вернуть с малой долей вероятности. Ещё меньше шансов, что данные на нём останутся в целости.

Robocopy (мощное копирование файлов)

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

Чтобы использовать Robocopy, щелкните строку поиска и введите Командная строка и щелкните Командная строка в результатах поиска. Вы также можете щелкнуть правой кнопкой мыши «Пуск» и выбрать «Windows PowerShell». В любом методе введите команду:

robocopy /?

И нажмите Enter, чтобы получить инструкции, основанные на желаемых параметрах копирования.

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

Где скачать утилиту Windows Robocopy

Начиная с Windows 7 эта программа является ее неотъемлемой частью, и я уже показал выше, что она находится в папке C: \ Windows \ System32, если по какой-то причине у вас в ней нет файла robocopy.exe, то у вас есть несколько вариантов его загрузки.

Или вы можете скачать у меня инструменты Windows Server 2003 Resource Kit

Далее полученный файл robocopy нужно распаковать этот файл, для этого нужно иметь архив winrar или 7-zip. Правой кнопкой извлекаем содержимое.

Затем распакуйте msi-пакет rktools.msi с помощью 7-Zip.

Зайдите в папку rktools, там вас будет ждать файл robocopy.exe, который вы можете скачать где угодно.

Robocopy Switches

As mentioned in the beginning, the Robocopy command comes with a lot of switches that you can use. I am not going to fully explain each of them, but below you will find the most commonly used switches that you can use for Robocopy. You can get all information by typing

Copy Options

Option Description
/S copy Subdirectories, but not empty ones.
/E copy subdirectories, including Empty ones.
/LEV:n only copy the top n LEVels of the source directory tree.
/Z copy files in restartable mode.
/B copy files in Backup mode.
/ZB use restartable mode; if access denied use Backup mode.
/J copy using unbuffered I/O (recommended for large files).
/COPY:copyflag what to COPY for files (default is /COPY:DAT).(copyflags : D=Data, A=Attributes, T=Timestamps, X=Skip alt data streams).(S=Security=NTFS ACLs, O=Owner info, U=aUditing info).
/SEC copy files with SECurity (equivalent to /COPY:DATS).
/COPYALL COPY ALL file info (equivalent to /COPY:DATSOU).
/NOCOPY COPY NO file info (useful with /PURGE).
/SECFIX FIX file SECurity on all files, even skipped files.
/TIMFIX FIX file TIMes on all files, even skipped files.
/PURGE delete dest files/dirs that no longer exist in source.
/MIR MIRror a directory tree (equivalent to /E plus /PURGE).
/MOV MOVe files (delete from source after copying).
/MOVE MOVE files AND dirs (delete from source after copying).
/A+: add the given Attributes to copied files.
/A-: remove the given Attributes from copied files.
/CREATE CREATE directory tree and zero-length files only.
/MON:n MONitor source; run again when more than n changes seen.
/MOT:m MOnitor source; run again in m minutes Time, if changed.
/RH:hhmm-hhmm Run Hours – times when new copies may be started.
/MT Do multi-threaded copies with n threads (default 8). n must be at least 1 and not greater than 128.This option is incompatible with the /IPG and /EFSRAW options.Redirect output using /LOG option for better performance.
/DCOPY:copyflag what to COPY for directories (default is /DCOPY:DA).(copyflags : D=Data, A=Attributes, T=Timestamps, E=EAs, X=Skip alt data streams).
/NODCOPY COPY NO directory info (by default /DCOPY:DA is done).
/NOOFFLOAD copy files without using the Windows Copy Offload mechanism.
/COMPRESS Request network compression during file transfer, if applicable.

Robocopy Switches

File Selection Options

Option Description
/A copy only files with the Archive attribute set.
/M copy only files with the Archive attribute and reset it.
/IA: Include only files with any of the given Attributes set.R – Read onlyA – ArchiveS – SystemH – HiddenC – CompressedN – Not content indexedE – EncryptedT – Temporary
/XA: eXclude files with any of the given Attributes set.
/XF file … eXclude Files matching given names/paths/wildcards.
/XD dirs … eXclude Directories matching given names/paths.
/XC eXclude Changed files.
/XN eXclude Newer files.
/XO eXclude Older files.
/XX eXclude eXtra files and directories.
/XL eXclude Lonely files and directories.
/MAX:n MAXimum file size – exclude files bigger than n bytes.
/MIN:n MINimum file size – exclude files smaller than n bytes.
/MAXAGE:n MAXimum file AGE – exclude files older than n days/date.
/MINAGE:n MINimum file AGE – exclude files newer than n days/date.
/MAXLAD:n MAXimum Last Access Date – exclude files unused since n.
/MINLAD:n MINimum Last Access Date – exclude files used since n.(If n < 1900 then n = n days, else n = YYYYMMDD date).
/DST compensate for one-hour DST time differences.
/XJ eXclude symbolic links (for both files and directories) and Junction points.
/XJD eXclude symbolic links for Directories and Junction points.
/XJF eXclude symbolic links for Files.
/IM Include Modified files (differing change times).

Robocopy File Selection Switches

Retry Options

Option Description
/R:n number of Retries on failed copies: default 1 million.
/W:n Wait time between retries: default is 30 seconds.
/REG Save /R:n and /W:n in the Registry as default settings.
/TBD Wait for share names To Be Defined (retry error 67).
/LFSM Operate in low free space mode, enabling copy pause and resume (see Remarks).
/LFSM:n /LFSM, specifying the floor size in n bytes.

Robocopy Retry Switches

Как скопировать файл из одной директории в другую с помощью Linux

Синтаксис для копирования файла с одного места на другое выглядит следующим образом:

cp /source/path/name /target/path/name

Например представьте, что вы имеете следующую структуру папок:

  • home
    • andreyex
      • documents
        • folder_one
          • file_one
          • file_two
          • file_three
        • folder_two

Если вы хотите скопировать file_one из текущего местоположения в /home/andreyex/documents/folder_one в /home/andreyex/documents/folder_two, то вы должны ввести следующую команду в командной строке:

cp /home/andreyex/documents/folder_one/file_one /home/andreyex/documents/folder_two/file_one

Ярлыки вы можете сделать здесь.

Главная часть может быть заменена на тильду (~), что объясняется в этой статье. Это изменяет команду на:

cp ~/documents/folder_one/file_one ~/documents/folder_two/file_one

Вы можете просто опустить имя файла для цели, если вы собираетесь использовать то же имя файла

cp ~/documents/folder_one/file_one ~/documents/folder_two

Если вы уже в целевой папке вы можете просто заменить путь к цели с полной остановкой.

cp ~/documents/folder_one/file_one

В качестве альтернативы, если вы уже в исходной папке вы можете просто указать имя файла в качестве источника следующим образом:

cp file_one ~/documents/folder_two

Найдите и быстрые клавиши мыши.

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

пресс Ctrl И щелкните несколько файлов, чтобы выбрать их все, независимо от того, где они находятся на странице. Чтобы выбрать несколько файлов подряд, щелкните первый файл, затем нажмите кнопку Shift при щелчке по последнему файлу. Это позволяет легко выбирать большое количество файлов для копирования или вырезания.

Обычно щелчок и перетаскивание файлов левой кнопкой мыши перемещает их в новое место (например, вырезать и вставить). Однако, если вместо этого вы щелкнете и перетащите его правой кнопкой мыши, вы увидите небольшое меню. Это позволяет вам копировать или перемещать файлы; Полезно, если вы по какой-либо причине не хотите использовать сочетания клавиш.

Разбор команд Robocopy — многопоточность Robocopy

Robocopy на самом деле имеет множество функций и в команде, показанной в этом руководстве. Мы используем следующие переключатели, чтобы сделать копирование надежным и быстрым.

  • / S — Копируйте подкаталоги, но не пустые.
  • / E — Скопируйте подкаталоги, в которых также есть пустые.
  • / Z — Фактически копируйте файлы в перезапускаемом режиме.
  • / ZB — Использует перезапускаемый режим, если в доступе отказано, используйте режим резервного копирования.
  • / R: 5 — Фактически повторите попытку 5 раз (вы также можете указать другое число, фактически по умолчанию 1 миллион).
  • / Вт: 5 — Подождите 5 секунд, прежде чем повторить попытку (вы также можете указать другое число, по умолчанию 30 секунд).
  • / TBD — Подождите, пока не будут определены имена общих ресурсов (ошибка повтора 67).
  • / NP — Нет прогресса — не отображать процент скопированных.
  • / V — Создавать подробный вывод, показывая также пропущенные файлы.
  • / MT: 32 — Делайте многопоточные копии вместе с n потоками (по умолчанию 8).

Как скопировать папки

Копирование папок такое же, как копирование файлов.

Например представьте, что вы имеете следующую структуру папок:

  • home
    • andreyex
      • documents
        • folder_one
          • file_one
          • file_two
        • folder_two

Представьте, что вы хотите переместить папку folder_one в папку folder_two следующим образом:

  • home
    • andreyex
      • documents
        • folder_two
          • folder_one
            • file_one
            • file_two

Вы можете использовать следующую команду:

cp -r /home/andreyex/documents/folder_one /home/andreyex/documents/folder_two

Кроме того, можно использовать следующую команду:

cp -R /home/andreyex/documents/folder_one /home/andreyex/documents/folder_two

Это копирует содержимое folder_one, а также любые суб-каталоги и файлы в пределах подкаталогов.

Filtering examples

Sometimes you might want to copy only specific files, for example, Word documents. This can be done easily by adding the *.docx filter after the destination folder before any other options.

robocopy c:\temp\source c:\temp\destination *.doc

You might also want to exclude some files or folders from the operation. This is done using the /XF and /XF options. To exclude all .doc files, use the command below.

robocopy c:\temp\source c:\temp\destination /XF *.doc

To exclude multiple subfolders, use spaces in the command:

robocopy c:\temp\source c:\temp\destination /XD Subfolder EmptySubfolder

Robocopy includes many more filtering options, which you can find in help under the File Selection Options section.

Знай ярлыки мыши тоже

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

Держать Ctrl и щелкните несколько файлов, чтобы выбрать их все, независимо от того, где они находятся на странице. Чтобы выбрать несколько файлов подряд, щелкните первый, затем нажмите сдвиг пока вы нажимаете последний. Это позволяет легко выбрать большое количество файлов для копирования или вырезания.

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

Как переместить файлы размером больше заданного предела с Robocopy в Windows

Существует так же параметр для установки ограничения на размер перемещаемых файлов. Например, команда ниже будет перемещать только файлы размером более 100 Мб (на самом деле немного меньше из-за использования числа 1000 вместо 1024 при умножении)

robocopy «C:\YourData» «D:\BigFiles» /S /MOVE /XA:SH /A-:SH /Min:100000000 /R:1 /W:1 /mt:32 /log:»D:\BigFiles\ListOfFilesMoved.txt»

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

Путь первый — ROBOCOPY

Данная утилита идет из коробки в Windows 7 и Server 2008. На более старых ОС ее может не оказаться (например, на XP и Server 2003 из коробки ее точно нет). В таком случае можно скачать и установить Windows Server 2003 Resource Kit Tools: вот отсюда. В этот тулкит, кроме всего прочего, входит наш инструмент.

Итак, вот пример использования данной утилиты:

robocopy D:\исходная_папка \2.168.0.1\целевая_папка /E /Z /COPY:TDASO /DCOPY:T /M /R:2 /W:5

В данном примере:
Мы копируем папку «исходная папка», находящуюся на локальном диске D:
Мы копируем эту папку на компьютер \\192.168.0.1 в папку «целевая папка»/E : Мы копируем все подпапки и файлы/Z : Включаем поддержку докачки (на случай обрыва связи)/COPY:TDASO : Копируем все атрибуты и ACL прав доступа NTFS (но не копируем атрибуты аудита)/DCOPY:T : Копируем время создания папок/M : Копируем только файлы с установленным атрибутом «A — Архивный» и сбрасываем этот атрибут, что позволяет нам копировать только измененные файлы./R : Количество повторных попыток копирования файла в случае, если копирование не удалось. Причем «не удалось» срабатывает и в том случае, если доступ к файлу закрыт. По-умолчанию = 1 миллионы, т.е. бесконечно, потому копирование благополучно встанет на первом же файле, к которому не будет доступа./W : Задержка в секундах между попытками копирования. По-умолчанию = 30 секундам.

Заметка. Очень рекомендую задавать вручную параметры /R и /W, иначе при автоматической синхронизации она попросту зависнет, встретив на своем пути ошибку доступа.

Много больше опций Вы можете почерпнуть из хелпа:
robocopy /?

Чем эта утилита хороша по сравнению с XCOPY:

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

Для того, чтобы зеркалировать папки (т.е. удалять в папке назначения все файлы, которые более не существуют в папке-источнике) — нужно добавить ключ «/PURGE»:

robocopy D:\исходная_папка \2.168.0.1\целевая_папка /E /Z /COPY:TDASO /DCOPY:T /M /PURGE

А вот несколько примеров запуска этой утилиты:

Скопировать файлы, измененные за последние 5 дней (исключая сегодня):

robocopy D:\исходная_папка \2.168.0.1\целевая_папка /maxage:5 /minage:1

Переместить все файлы (не копировать):

robocopy D:\исходная_папка \2.168.0.1\целевая_папка move e

Копировать только указанные файлы по шаблону:

robocopy D:\исходная_папка \2.168.0.1\целевая_папка *.xls *.doc *.txt /e

Сжатие файлов robocopy

К сожалению, robocopy не поддерживает сжатие файлов «на лету». Если копирование происходит на сервер/ПК под управлением Windows, то для решения проблемы достаточно использовать динамическую компрессию на папку в настройках Windows. Помимо компрессии можно использовать также дедупликацию, если копирование идет на сервер под Windows 2012 или ПК под Windows 10 с активированной дедупликацией (спец сказал, что не работает). Поскольку файлы меняются незначительно от копии к копии, дедупликация существенно уменьшит место занимаемое на диске под резервные копии.

Если резервная копия создается на NAS, на котором отсутствует опция сжатия и дедупликации, то единственный вариант решения задачи — запустить сжатие файлов с сервера/ПК на приемнике уже после выполнения резервного копирования с помощью 7zip или других утилит. Естественно, это весьма тяжелая операция, поскольку при таком сжатии:

  • Сначала происходит копирование файла на ПК с которого запущена команда архивации.
  • Сжатие файла.
  • Копирование на приемник.
  • Удаление исходного файла на приемнике.

Важный момент касается того каким образом создавать архив — один большой или архивировать каждый файл. У каждого способа есть несколько плюсов и минусов. В случае с одним большим файлом они следующие:

Плюсы Минусы
Большой файл занимает меньше места, чем много небольших архивов Он долго копируется по сети.
Архивирование занимает много времени. Если места не хватило, то архивирование нужно делать повторно с нуля. Долго распаковывается в случае проблем.
Не подходит для копирования по медленным каналам связи (Internet), поскольку крайне неэффективен при передаче файлов, которые не изменялись с момента последней синхронизации.
Не походит при работе с rsync для дифференциальной синхронизации

Паковка каждого файла в архив также имеет свои плюсы и минусы:

Плюсы Минусы
Передача большого количества небольших файлов — более эффективный вариант для каналов с низкой скоростью (Internet). Много небольших архивов займут больше места на диске.
При использовании специального способо компрессии обеспечивает достаточно эффективную работу rsync-а. Время паковки большого количество небольших файлов, как правило, больше.
Распаковка нужного файла происходит очень быстро. Gzip обладает не самым продвинутым функицоналом при таком пофайловом копировании. Не хватает опций.
Не просто обеспечить шифрование штатными средствами. Например, GZip не поддерживает паковку с паролем. Нужно использовать доп. средства по философии Unix (одна задача — один инструмент). Например, https://www.gpg4win.org/features.html

Проще всего сжимать пофайлово с помощью gzip. Для рекурсивного сжатия файлов в папках используется команда:

gzip -9 -q -v -r

Например, gzip -9 -q -v -r C:\Temp\43\

Если синхронизация идет с помощью rsync, то можно использовать ключик —rsyncable. В этом случае файл сжимается не целиком, перестраивая всю структуру, а блоками, чтобы обеспечить для rsync-а достаточно информации для дифференциальной передачи блоков информации.

При использовании компрессии gzip важный момент, что, похоже, нет способа сжимать файлы и пересылать в другую папку. Соответственно, сжиматься будет папка, которая была скопирована robocopy. Файлы в ней изменятся и в следующий раз robocopy будет вновь копировать полностью все файлы.

Попробуйте TeraCopy

Все вышеперечисленное — это довольно простой способ увеличить скорость копирования в Windows 10. Чтобы пойти дальше, вам нужно установить специальное приложение для копирования. Одним из самых популярных является бесплатный TeraCopy.

Это приложение идет намного дальше, чем предлагает Windows. Он использует специальные алгоритмы для ускорения процесса копирования. Приложение может проверить скопированные файлы, чтобы убедиться, что они на 100% идентичны. И если вы часто перетаскиваете файлы по ошибке, вы можете включить диалоговое окно подтверждения, чтобы убедиться, что вы действительно хотели это сделать.

У TeraCopy есть несколько других штрихов, которые делают его еще более изысканным. При желании вы можете интегрировать приложение с File Explorer, чтобы все операции копирования / вставки использовали TeraCopy по умолчанию. Он также сохраняет исходную информацию о дате и времени скопированных файлов.

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

Скачать: TeraCopy (бесплатная, доступная премиум-версия)

Примеры использования

Чтобы копировать все файлы и подкаталоги (включая пустые подкаталоги) с диска A на диск B, введите:

Чтобы включить в операцию копирования предыдущего примера системные и скрытые файлы следует использовать параметр /h:

Чтобы обновить файлы в каталоге \Reports файлами из каталога \Rawdata, измененными после 29 декабря 1993 года, введите:

Чтобы обновить файлы предыдущего примера, уже существующие в каталоге \Reports, независимо от их даты, введите следующую команду:

Чтобы получить списк файлов, которые были бы скопированы в предыдущем примере, следует ввести команду:

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

Чтобы скопировать каталог \Customer и все подкаталоги \\Public\Address на сетевой диск H, сохранить у файлов атрибут «только для чтения», введите команду:

Чтобы выдать предыдущую команду, убедиться, что команда xcopy создает каталог \Address и устранить вывод сообщение о создании нового каталога, добавьте параметр /i следующим образом:

Для запуска программы xcopy и анализа кодов завершения можно создать пакетный файл и использовать оператор if для обработки кодов завершения в случае возникновения ошибок. Например, следующая пакетная программа использует замещаемые параметры для задания источникаxcopy и результата:

Эта пакетная программа может быть использована для копирования всех файлов каталога C:\Prgmcode и его подкаталогов на диск B следующим образом:

Командный интерпретатор подставляет C:\Prgmcode вместо параметра %1 и B вместо параметра %2, затем использует команду xcopy с параметрами /e и /s. Если при выполнении xcopy произошла ошибка, пакетная программа считывает код завершения и переходит на метку, указанную в соответствующей инструкции IF ERRORLEVEL. В результате на экран выводится сообщение о характере ошибки и осуществляется выход из пакетной программы.

Понравилась статья? Поделиться с друзьями:
Быть в курсе нового
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: