Доброе времени суток. Уважаемые читатели и гости, крупного IT блога Pyatilistnik.org, занимающего в рейтинге Яндекс.Радар 2500 место, среди всех сайтов России. В прошлый раз, мы с вами решили проблему со сбоем запроса устройства. Сегодня я не хочу рассматривать новые ошибки, а поделюсь своим опытом использования утилиты Robocopy, приведу примеры использования, поговорю о параметрах утилиты и покажу, как у Robocopy использовать графический интерфейс (GUI). Данной программкой просто обязан пользоваться каждый системный администратор, ну или хотя бы знать. о ее существовании, лично у меня она находится на почетном месте в моем наборе системного инженера.
Что такое robocopy (Robust File Copy Utility)
Утилита Robocopy (Robust File Copy Utility) – это специализированное средство, в задачи которого входит тонкая настройка процесса копирования, синхронизации, удаления и переноса файлов и папок, между дисками компьютера, компьютерами, сетевыми шарами и лесами, с сохранением атрибутов, прав разрешений и многое другое.
Robocopy за счет своих алгоритмов и многопоточности позволяет проводить копирование или синхронизацию одних файловых ресурсов с другими в десятки раз быстрее, чем обычное копирование средствами проводника Windows.
Данное средство, очень часто используется в задачах системного администратора, по переносу сетевых шар и файловых ресурсов, и в сценариях синхронизации данных.
Если обратиться к Википедии (https://ru.wikipedia.org/wiki/Robocopy), то там вы обнаружите, что она создавалась как средство репликации и шла в составе такого известного комплекса инструментов, как Windows Resource Kit.
Версии утилиты Robocopy
Первая версия robocopy появилась в 1997 году в составе инструментов Windows Resource Kit. На текущий момент самой свежей версией является 10.0.17763.1 входящей в состав Windows 10 1809, табличку в Википедии я подправил (https://en.wikipedia.org/wiki/Robocopy)
Где лежит Robocopy в системе?
Основной исполняемый файл Robocopy.exe располагается по пути C:\Windows\System32. Утилита очень компактная и весит всего 132 килобайта, но это не уменьшает ее мощи и функционала.
Где скачать утилиту Windows Robocopy
- Первый вариант, это скопировать его из другой системы
- Второй вариант, это загрузить средство Windows Server 2003 Resource Kit Tools по ссылке (https://www.microsoft.com/en-us/download/details.aspx?id=17657). В состав этого пакета входит утилита Robust File Copy Utility.
Далее полученный файла robocopy, вам необходимо разархивировать данный файл, для этого у вас должен быть архиватор winrar или 7-zip. Через правый клик извлекаем его содержимое.
Далее 7-Zip-ом распаковываем msi пакет rktools.msi.
Возможности утилиты Robocopy (Robust File Copy Utility)
И так давайте разбираться, какими функциональными возможностями обладает данная утилита. Как я и писал выше Robocopy умеет:
- Производить копирование файлов и папок
- Производить синхронизацию файлов и папок
- Копировать по расширениям файлов
- Переносить права на папки и файлы
- Копирование и перенос файлов по датам и за нужный период
- Удалять файлы и папки
Чтобы посмотреть все ключи и их назначение, нам нужно открыть командную строку, желательно от имени администратора и ввести команду:
У вас появится небольшая справка, в которой вам отобразят конструкцию построения команд и несколько примеров реализации. Чтобы вывести все доступные параметры Robocopy вам необходимо ввести команду:
Тут ключи и параметры будут разбиты на несколько подкатегорий:
- Параметры копирования
- /COPY:флаги копирования
- /DCOPY:флаги копирования
- Параметры выбора файлов
- Параметры повторных попыток
- Параметры ведения журнала
- Параметры задания
- Комментарии
Ключи параметров копирования:
- /S – данный параметр позволит вам произвести копирование вложенных папок, за исключением пустых. Очень удобно, чтобы не перетаскивать не используемые каталоги
- /E – данный ключ, альтернатива параметру /S, так как он позволит скопировать вложенные папки, в том числе и пустые.
- /LEV:n – данный параметр копирования Robocopy позволит вам скопировать n-число уровней у текущего каталога папок. Предположим у вас есть папка, которая включает в себя еще 10 подпапок, задав n равное 5, вы скопируете структуру, только первых пяти верхних каталогов, а все, что ниже не будет затронуто.
- /Z – параметр позволяет возобновлять копирование в случае какого-то сбоя
- /B – Копирование файлов в режиме архивирования.
- /ZB – совмещение параметров Robocopy.exe, в данном случае вначале будет использоваться режим с возобновлением, но если доступа к каким либо файлам не будет, то утилита переключиться в режим архивации.
- /J – данный параметр Robocopy.exe используется при копировании крупного размера файлов, где применяется небуферезированный ввод-вывод
- /EFSRAW – будет произведено копирование всех зашифрованных файлов в режиме EFS RAW
Ключи /COPY:флаги копирования
Ключ /COPY это один из базовых ключей, который вы будите применять в своих сценариях синхронизации или копирования, он переносит (Флаги копирования: D=Данные, A=Атрибуты, T=Метки времени). (S=Безопасность=NTFS ACLs, O=Сведения о владельце, U=Сведения аудита)
Ключи /DCOPY:флаги копирования
Данный раздел флагов отвечает за то, что копировать для каталогов (D=Данные, A=Атрибуты, T=Метки времени)
- /NODCOPY – не производить копирование любых сведений о каталоге
- /NOOFFLOAD – Robocopy будет копировать файлы без использования механизма разгрузки копий Windows
Параметры выбора файлов
Утилита Robocopy очень тонко позволяет производить тонкую фильтрацию файлов при копировании, для этого есть огромное количество ключей и флагов.
Ключи параметров повторных попыток
- /R:n – Число повторных попыток для неудавшихся копий, по умолчанию — 1 миллион.
- /W:n – Тут вы зададите период ожидания между повторными попытками: по умолчанию это 30 секунд.
- /REG – Сохранить /R:n и /W:n в реестре как параметры по умолчанию.
- /TBD – Ждать, пока будут определены имена общих ресурсов (ошибка повторной попытки 67).
Ключи параметров ведения журнала
Ключи параметров задания
- /JOB:имя_задания – Взять параметры из указанного файла задания.
- /SAVE:имя_задания – Сохранить параметры в указанный файл задания
- /QUIT – Выйти после обработки командной строки (для просмотра параметров).
- /NOSD – Не указывается исходная папка.
- /NODD – Не указывается папка назначения.
- /IF – Включить следующие файлы.
Как видите у утилиты Robocopy много параметров и ключей, и я рад, что Microsoft не забросила свою полезную программку, которую я полюбил еще в Windows Server 2003 Resource Kit Tools.
Более подробно почитать, о параметрах Robocopy вы можете почитать на сайте Microsoft (https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2008-R2-and-2008/cc733145(v=ws.10))
Варианты и примеры использования на практике
Теперь когда мы с вами разобрали параметры Robocopy, остается научиться их использовать и применять в ваших сценариях. Сценариев может быть огромное количество. например:
- Нужно скопировать только измененные файлы
- Нужно скопировать только новые файлы
- Нужно скопировать только папки или файлы с определенным расширением, например, PDF
- Нужно копировать файлы из локального расположения в сетевое
Самый простой пример использования Robocopy, это простое копирование одного каталога в другой в рамках одного диска. Предположим мне нужно продублировать содержимое папки C:\Temp в C:\Test_robocopy
В командной строке пишем вот такую команду
robocopy C:\Temp C:\Test_robocopy /E
Напоминаю параметр /E копирует файлы и папки, в том числе и пустые. Сам процесс выглядит поэтапным копированием в один поток файлов.
По окончании выполнения команды вы увидите сводную таблицу, в которой будет статистика по каталогам, файлам, времени, пропущенным файлам и скорости.
Но при таком использовании robocopy, вы на каталоге назначения получите файлы с уже другими правами на них. Видно это в свойствах.
Чтобы скопировать и исправить на файлах в каталоге назначения все права доступа (перезаписав текущие и подставив туда из источника), вам необходимо выполнить вот такую команду:
robocopy C:\Temp C:\Test_robocopy /E /COPYALL /SECFIX
Ключ /COPYALL переносит все сведения о файле, а параметр этого ключа /SECFIX исправит все сведения на вкладке “Безопасность”.
Если у вас не перенеслись новые права на файлы, то со 100% вероятностью у вас консоль cmd в которой вы запускаете сценарии Robocopy, работает не от имени администратора, старайтесь всегда делать из под данного режима
Напомню, что есть ключ /MIR параметра robocopy, он делает зеркальную копию каталогов, вот его пример использования:
robocopy C:\Temp C:\Test_robocopy /MIR /Z
В момент такого зеркального копирования, утилита Robust File Copy Utility, сделает на конечной стороне полную копию источника, и со всеми списками доступа (ALC) на вкладке безопасности, так же будут перенесены все атрибуты данных. При повторном запуске, будут перенесены, только изменения.
Чтобы осуществить перенос данных на сетевую шару, вы можете использовать вот такую конструкцию:
При простом копировании robocopy C:\Temp \\c-10-5210\Test_robocopy /E
Тот же пример с синхронизацией прав robocopy C:\Temp \\c-10-5210\Test_robocopy /E /COPYALL /SECFIX
Ну и пример использования при зеркалировании каталоговrobocopy C:\Temp \\c-10-5210\Test_robocopy /MIR /Z
Теперь представим задачу, что вам необходимо скопировать файлы, которые были изменены за последние 5 дней, выполняем вот такую команду:
robocopy C:\Temp \\c-10-5210\Test_robocopy /MAXAGE:5
Если нужно исключить сегодняшний день, то нужно добавить ключик /MINAGE:1
robocopy C:\Temp \\c-10-5210\Test_robocopy /MAXAGE:5 /MINAGE:1
Если стоит задача скопировать файлы и исключить из все, возраст которых меньше 1 день, то будет выглядеть вот так:
robocopy C:\Temp \\c-10-5210\Test_robocopy /MINAGE:1
Вот вам пример использования Robocopy, где происходит вырезание файлов в источнике и перенос их в каталог назначения, со всеми правами и атрибутами на файл, вместо сетевого пути, может быть и локальный, как в первом примере.
Иногда может возникнуть задача, перенести все, кроме срытых файлов системы, для этого сценария Robust File Copy Utility имеет ключ /XA:H
robocopy C:\Temp C:\Test_robocopy /E /XA:H
Можно переносить файлы с пометкой “Только для чтения”, через такую структуру
Копирование данных только с определенными форматами, например, exe и mp3, и не копировать пустые папки.
robocopy C:\Temp C:\Test_robocopy *.exe *.mp3 /S
Также можно делать выборку по размеру файлов, например, мне нужно скопировать, все, что больше 100 килобайт и меньше 100 мегабайт.
robocopy C:\Temp C:\Test_robocopy /E /MAX:102400000 /MIN:102400
При копировании данных можно исключить не нужные вам каталоги, вот пример команды, где исключается папка CrystalDiskMarkPortable:
robocopy C:\Temp C:\Test_robocopy /MIR /XA:SH /XD CrystalDiskMarkPortable /XJD
Что еще полезного умеет Robocopy, например, автоматическое копирование папок по расписанию да и еще не в один поток. Что такое поток копирования, по сути когда вы в проводнике Windows, запускаете простое копирование, то у вас в диспетчере задач, появляется задача “Проводник”, которая последовательно запускает процесс и перенос данных. Когда же Robocopy делает таких потоков больше, то у вас сам процесс идет в разы быстрее, но затрачиваются больше процессорных мощностей, но в виду того, что современные процессору зачастую не дозагружаются даже на 20-30%, то глупо было бы это не использовать, особенно с серверными CPU.
Вот примеры использования команд с заданием потоков, напоминаю, что их может быть от 1 до 128. Особенный прирост скорости вы ощутите в моменты, когда у вас будет огромное количество мелких файлов.
robocopy C:\Temp \\c-10-5210\Test_robocopy /sec /E /Z /XO /R:3 /W:5 /MT:32
Если повторно запустить данную команду, то она будет копировать и синхронизировать только измененные файлы, так называемые дельты, очень удобно при актуализации каталогов, резервных копий
Еще полезной командой будет, когда вам нужно обновить только ACL (Вкладку безопасность на всех файлах, без их повторного копирования)
robocopy <source /> /secfix /xo /xn /xc
Ошибки работы Robocopy
У данной утилиты, конечно же могут возникать и проблемы, но чаще всего они не значительные и решаются очень просто, например вы можете встретить ошибку “ОШИБКА 5 (0x00000005) Копирование параметров безопасности NTFS для конечного файла”. Данная ошибка гласит, что у вас не хватает прав на перенос параметров и прав на файлы, все дело в том, что ваша cmd-консоль запущена в режиме администратора.
Таблица кодов ошибок, которые появляются в Robocopy
Вот вам подробная, сводная таблица в которой отражены все коды ошибок от 0-8 в данной утилите и дано подробное описание в чем проблема. (Подробнее на https://support.microsoft.com/ru-ru/help/954404/return-codes-that-are-used-by-the-robocopy-utility-in-windows-server-2)
Автоматическое копирование папок по расписанию с Robocopy
Чем хороша данная утилита, так это тем, что с ее помощью можно писать скрипты и сценарии, например в том же PowerShell. Все выше описанные команды, вы можете поместить в текстовый файл (txt), затем сменить ему расширение на bat или cmd, чтобы он стал исполняемым и далее использовать его, либо в групповой политике, или же создать с помощью него задачу в “Планировщике заданий Windows”, хотя можно и прямо в нем вписывать все ключи и параметры Robocopy. Про создание задач в планировщике заданий Windows читайте по ссылке. Обратите внимание, что ключи я вписываю в поле аргументы.
если по каким-то причинам вам нужно монтировать перед эти диск, то будет выглядеть вот так:
net use z: /delete
robocopy C:\Test\ Z:\ /sec /E /Z /XO /SECFIX /R:3 /W:5 /MT:32
На самом деле примеров использования Robocopy очень много, если будет чем поделиться, пишите в комментариях.
Графический (GUI) интерфейс в Robocopy
С примерами утилиты Robocopy мы ознакомились, теперь предлагаю вам посмотреть для нее графическую оболочку, которая как ни странно есть, и я узнал, о ее существовании буквально недавно. Называется она RoboCopy GUI Utility ver. 3.1, к сожалению она использует robocopy.exe не самой последней версии, но все работает и в Windows 10 1809.
После загрузки RoboCopy GUI Utility ver. 3.1, нам его необходимо установить. Запускаем исполняемый файл. Соглашаемся с лицензионным соглашением.
Утилита вам предложит указать каталог куда будут извлечены файлы.
Соглашаемся с извлечением.
В итоге вы получите вот такую структуру файлов. Запускаем setup.exe.
У вас появится тривиальный мастер установки GUI интерфейса для Robocopy. Нажимаем next.
Принимаем лицензионное соглашение “I gree”
Указываете будет ли утилита устанавливаться только для вас или для всех.
Установка графического интерфейса для Robocopy завершено.
У вас на рабочем столе появится ярлык Microsoft Robocopy GUI. Запускаем его и посмотрим, что из себя представляет эта утилита.
Обзор RoboCopy GUI Utility ver
Давайте я бегло покажу, что из себя представляет данная программа. Сам графический интерфейс очень простой, так и должно быть. На первой вкладке вы увидите два действия:
- Первое, это нужно через “Source Path выбрать, что мы будем копировать”
- Второе действие, это в “Target Path мы задаем, куда мы будем переносить данные, при желании вы можете смонтировать сетевой диск, через пункт “Map Drive””
На вкладке “Copy Options”, вы увидите уже знакомые параметры использования Robocopy, тут есть и ключи /SEC для переноса прав и команда /MOVE, которую мы применяли для вырезания файлов и многое другое. Тут же вы задаете количество потоков копирования.
Вкладка “Filters” позволит вам указать, что именно нужно переносить и сделать фильтрацию, например, не переносить файлы длина которых в имени составляет более 256 символов, или только txt файлы.
Вкладка “Logging” задает параметры ведения логирования вашего задания.
Вкладка “Monitoring Options” будет полезна для наблюдения за источником копирования, в случае проблем, все можно идентифицировать и перезапустить.
Аналоги утилиты Robocopy
Robust File Copy Utility не единственная утилита, которая позволяет копировать файлы, каталоги с атрибутами и правами, ее аналогами можно назвать утилиты:
- Total Commander
- icacls
- Xcopy
- Far
- Rsync
Вот такая вот полезная и богатая функционалом утилита Robust File Copy Utility или Robocopy.exe, надеюсь, что данный материал был для вас полезен и вы им поделитесь в социальных сетях. А с вами был Семин Иван, автор и создатель IT блога Pyatilistnik.org.
У меня есть огромная папка (более 6 ГБ) с несколькими подпапками, которую я хочу скопировать на внешний жесткий диск, однако я не хочу, чтобы она копировала какие-либо PDF, EXE или ZIP-файлы, чтобы сэкономить место.
Есть ли программное обеспечение, которое поможет мне достичь этого? Я посмотрел на TeraCopy, но, похоже, на нем нет механизма фильтрации.
Я использую Windows XP (* вздох *).
* edit: нашел xcopy
команду, будет ли это делать? Может кто-нибудь помочь мне с синтаксисом?
2 ответа на вопрос
drednout
2011-01-11 в 10:41
Я думаю, xcopy может решить вашу проблему. Если вы хотите получить информацию о какой – то команде, используя, попробуйте запустить его с одним из следующих ключ командной строки: /?, -h, --help, -help, -?
. Xcopy перенесен в Windows из мира DOS и знает только «/?» переключатель.
См xcopy /?
.
/EXCLUDE:file1[+file2][+file3]... Specifies a list of files containing strings. Each string should be in a separate line in the files. When any of the strings match any part of the absolute path of the file to be copied, that file will be excluded from being copied. For example, specifying a string like \obj\ or .obj will exclude all files underneath the directory obj or all files with the .obj extension respectively.
Просто поместите шаблоны исключений в некоторый файл и укажите этот файл в командной строке. xcopy /I /E /EXCLUDE:c:\tmp\1.txt src_dir target_dir
В вашем случае файл c: \ tmp \ 1.txt должен содержать следующие строки:
.PDF .EXE .ZIP
martineau
2011-01-11 в 10:56
Да, вы можете исключить файлы с помощью встроенной xcopy
команды. Введите xcopy /?
информацию об использовании.
Другой альтернативой является бесплатная утилита xxcopy .
Похожие вопросы
Как узнать, кто вошел в Windows XP?
Как обстоят дела с папкой C: \ Program Files \ xerox \ nwwia?
Почему отключение моего флэш-накопителя приводит к синему экрану?
Есть ли какой-нибудь способ получить пункт меню «отправить в -> получатель почты» в Gmail?
Почему установщик IIS не может скопировать staxmem.dll, несмотря на то, что он находится в указанной…
Переключить настройки DNS для каждого пользователя Windows?
Есть ли способ поделиться сканером многофункционального принтера?
Как предотвратить сжатие панели задач при использовании удаленного рабочего стола?
Я что-то упускаю, придерживаясь Windows XP?
Что можно отключить на Windows XP, чтобы освободить память, не ломая все
Жизнь часто подкидывает нам всяческие задачки. В особенности, если Вы – “компьютерщик” 🙂 Вот и я столкнулся с одной, не то чтобы проблемой, но неприятностью, выход из которой был успешно найден. Поэтому спешу поделиться с Вами своими изысканиями.
Что влияет на скорость копирования
Что есть копирование файла вообще? Это не что иное как чтение битовой последовательности в определённых секторах дискового накопителя с последующей их записью в другие сектора или на другой носитель. Теоретически скорость чтения и записи зависит только от самого устройства хранения информации: то есть, его заводских параметров быстродействия. Однако, на практике всё гораздо сложнее.
В реальных условиях нужно учитывать ещё ряд параметров:
- степень изношенности носителя;
- качество соединительных шлейфов передачи данных;
- качество питания носителя;
- правильные настройки BIOS;
- наличие драйверов материнской платы;
- установленный режим передачи данных;
- степень “захламлённости” Windows.
Всё вышеперечисленное вместе или по отдельности может сказываться на понижении скорости копирования данных. Например, чем дольше мы пользуемся носителем информации, тем большая вероятность того, что часть секторов в нём станут нечитаемыми, что будет тормозить любые файловые операции. Плохой контакт шлейфа передачи данных может приводить к коротким замыканиям и потерям информации, а недостаточное питание не даст устройству работать на полную мощность.
Проблема может скрываться и в BIOS. Практически все современные компьютеры имеют жёсткие диски, которыми управляет SATA-контроллер. В BIOS этот контроллер должен быть обязательно активирован (“Enabled”) и работать в режиме “AHCI” (если, конечно, у Вас стоит современная ОС Windows 7 и выше):
Также озаботьтесь вопросом проверки наличия драйверов для чипсета. Если они не установлены, то южный мост Вашего ПК может некорректно работать на стандартных драйверах Windows, что вполне может приводить к проблемам в работе с носителями информации и USB-устройствами.
Если всё вышеперечисленное Вам не подошло, то ещё одним способом решить проблему медленного копирования штатными средствами может стать изменение режима передачи данных. Для этого вызовите Диспетчер устройств, откройте раздел “IDE ATA/ATAPI контроллеры”, вызовите свойства того контроллера, который отвечает за работу Вашего жёсткого диска и проверьте во вкладке “Дополнительные параметры” установленный режим передачи данных. Должен быть “DMA, если доступно” и текущий режим ультра DMA 5:
Если стоит PIO и изменить его не выходит, то у Вас, скорее всего, произошёл сбой в системе. Попробовать его устранить можно, удалив устройство с режимом передачи PIO и перезагрузив компьютер. Если и это не поможет, то решиться проблема может только переустановкой Windows.
Последним вариантом ускорения копирования для владельцев Windows 7 и выше (правда, в “Десятке”, вроде, этого уже нет) является отключение компонента “Удалённое разностное сжатие”. Для этого зайдите в Панель управления, раздел “Программы и компоненты”, нажмите внизу слева пункт “Включение или отключение компонентов Windows” и снимите соответствующую галочку:
Технология ускорения копирования
Для небольших файлов такая схема прямого копирования вполне приемлема, но для больших может вызывать замедление. Можно ли как-нибудь ускорить их копирование? Теоретически, да! Для этого нужно использовать какой-либо быстрый носитель информации, который будет кешировать сразу весь файл (или хотя бы его большую часть) и записывать из собственной быстрой памяти непрерывным потоком.
Одним из наиболее универсальных и доступных устройств подобного рода в компьютере является оперативная память. При стандартном копировании данные тоже могут передаваться через неё, но в виде потока мелких кластеров информации. Если же предварительно считать и поместить в неё целиком весь файл, то мы сможем получить существенное ускорение при его записи в непрерывном виде! Именно такой подход реализуют существующие программы для оптимизации копирования, которые я и предлагаю рассмотреть (кстати, подобные алгоритмы начали использоваться в Windows, начиная с “Восьмёрки”, но они ещё далеки от идеала).
Перед установкой я решил провести контрольный замер. Было взято 20 небольших (200 – 800 КБ) файлов-изображений общим размером 16 мегабайт и один большой ISO-образ на 3 ГБ. Время копирования в пределах одного раздела жёсткого диска составило 2 сек. для картинок и 2 мин. 3 сек. для большого файла. На флешку (средняя скорость записи – 5 МБ/сек) запись длилась 3,4 сек. и 9 мин. 35 сек. соответственно. Попробуем теперь копировать со специальными утилитами и сравним разницу.
Программы для ускорения копирования
TeraCopy
Наиболее знаменитой программой для ускорения копирования является TeraCopy:
При установке нам предложат поставить TeraCopy в обычном или портативном режиме, а также создать нужные ярлыки и ассоциировать с некоторыми файлами (лучше снять ассоциацию). После завершения установки запустится основное и единственное рабочее окно, которое, к счастью, имеет русскоязычный интерфейс.
Для копирования через программу Вам нужно перетащить в её окно нужные файлы и указать конечную папку, куда эти файлы требуется поместить. Кроме того, TeraCopy ассоциируется с Проводником и при перетаскивании или копировании горячими клавишами предлагает сделать это средствами программы.
Из дополнительных возможностей бесплатной версии стоит отметить возможность выполнения ряда действий по завершению копирования (выключение ПК, открытие дисковода, тестирование целостности скопированных файлов и т.п.). Также в опциях есть возможность активировать проигрывание звука по завершению задания, а также использование для работы кеша системы.
Что касается результатов, то на Windows 8.1 x64 они ненамного превзошли штатные, хотя, прирост есть. Так, в пределах жёсткого диска копирование 20 картинок (16 МБ) заняло 1,5 сек., а 3-гигабайтного образа – 1 мин. 48 сек. На флешку запись длилась 2,95 сек для изображений и 8 мин. 32 сек. для большого файла соответственно.
FastCopy
Следующей мы протестируем японскую программу, которая по заверениям разработчиков реализует самый быстрый алгоритм копирования файлов, – FastCopy:
Программа полностью бесплатна и имеет отдельную 64-битную версию. Поставляется она в виде архива с портативной программой и файлом setup.exe, который позволяет установить и зарегистрировать FastCopy в системе (добавится пункт копирования в контекстном меню) или же удалить все ассоциации.
К сожалению, язык интерфейса только английский, но не особо замороченный. Суть проста: нужно выбрать исходную папку (“Source”) и конечную, в которую нужно копировать содержимое источника. Чтобы не копировались все файлы из указанной директории можно активировать фильтр (“Filter”), который позволяет задать маски включения и исключения (например, *.exe или Image*.*). Не совсем удобно, но пользоваться можно.
Касаемо результатов. Копирование мелких файлов в другую папку заняло 1,8 сек., а большой скопировался за 1 мин. 49 сек. Копирование же на флешку завершилось с результатами 3,8 сек. для картинок и 9 мин. 12 сек. для образа. Как видим, несмотря на заверения разработчиков, результаты не самые лучшие, но есть.
Supercopier
Немецкое качество всегда ценилось. Посмотрим, есть ли оно в программе Supercopier, которая “родом” именно из Германии:
Интерфейс русифицирован только частично (особенно в меню много непереведённых английских слов). Зато интеграция с системой – максимальная: программа по умолчанию подменяет штатную функцию копирования без каких-либо дополнительных вопросов как в TeraCopy.
Из дополнительных функций стоит отметить наличие возможностей постановки копирования на паузу, автоматического пропуска ошибок копирования, импорта и экспорта списка файлов для перемещения, а также ручной настройки размера буфера для копирования.
Касательно непосредственно копирования немцы, всё-таки, подкачали! Картинки в новую папку скопировались практически мгновенно – за 0,9 сек., а вот образ диска на 3 ГБ – за 2 мин. 6 сек. С флешкой, правда, получилось получше: 2,7 сек. для изображений и 9 мин. 20 сек. для большого файла.
ExtremeCopy
Ещё одним претендентом на звание лучшей замены штатной функции копирования является программа ExtremeCopy:
Что же касается скорости копирования, то мелкие картинки в новую папку скопировались ровно за секунду, а большой файл за 1 мин. 48 сек. Для флешки результаты такие: 3 секунды для “мелочи” и 9 мин. 13 сек. для образа.
Сравнение
Выводы
Как видим, скорость копирования файлов реально повысить даже в современных операционных системах. Что уж говорить об устаревших Windows XP, Vista и 7. В них ещё не было прогрессивных систем передачи данных, поэтому ускорение на них будет весьма значительным.
В новых ОС прирост не особо заметен (максимум – 1 минута для крупных файлов и около секунды для мелких). Однако, и здесь программы для копирования могут пригодиться, поскольку многие из них имеют в своём арсенале такие дополнительные функции как пауза копирования, пропуск файлов и даже формирование списка файлов и отложенное копирование по ним. Поэтому выбирайте себе ту программу, которая Вам нравится больше всего и пользуйтесь на здоровье!
P.S. Разрешается свободно копировать и цитировать данную статью при условии указания открытой активной ссылки на источник и сохранения авторства Руслана Тертышного.
Копирование, перемещение, создание и удаление файлов и каталогов
Частыми операциями в файловой структуре являются создание файлов и каталогов, их копирование, перемещение, переименование, а также удаление. Очевидно для подобных действий в командной оболочке Linux должны быть предусмотрены специальные команды.
Копирование файлов и каталогов
В Bash для копирования файлов используется команда cp (от “copy”), которой обычно передаются два аргумента:
адрес с именем исходного файла,
новый адрес с именем или просто адрес каталога, куда помещается копия.
Адрес может быть как абсолютным, так относительным. Если операции с файлами выполняются в текущем каталоге, то указывать адрес смысла нет. Пишется только имя исходного файла и имя копии. Поскольку файлов с одинаковыми именами и адресами быть не может, имя копии должно отличаться от имени исходного файла.
cp readme readme2
В данном случае создается копия файла readme, которая остается в той же директории под именем readme2.
cp readme Desktop/
В папку Desktop копируется файл readme. Здесь текущим является родительский Desktop’у каталог. Имена копии и файла оригинала будут совпадать, а вот полные адреса – нет.
cp /home/irina/tux.png /mnt/D/pingvin.png
Здесь копируется файл из одного каталога в другой, используются абсолютные адреса, имя копии изменяется.
Если надо скопировать несколько разных файлов в один и тот же каталог, то после команды cp
сначала перечисляются все файлы-оригиналы, а последним указывается каталог, куда помещаются копии. Понятно, что при таком групповом действии имена файлов изменить не удастся.
Чтобы скопировать каталог со всем его содержимым, необходимо использовать ключ -r
команды cp
:
cp -r ./letters ./oldletters
Перемещение и переименование
В Bash-оболочке Linux для перемещения и переименования используется одна и та же команда – mv (от “move” – перемещать). Переименование можно рассматривать как частный случай перемещения, ведь по-сути изменяется полный адрес файла, что равносильно перемещению, даже если файл остается в том же каталоге.
Также как в случае cp
, для mv
необходимо указать пару аргументов. Выбор между перемещением и переименованием зависит от того, что это за аргументы. При перемещении файл меняет свой адрес, следовательно, если в первом и втором аргументах указаны разные адреса, то произойдет перемещение. Если адреса одинаковые, а различаются только имена, происходит переименование. Кроме того, перемещение может быть совмещено с переименованием.
В случае перемещения без переименования во втором аргументе указывается только каталог места назначения.
mv document.txt Work
mv document.txt Work/doc23.txt
Здесь в первом случае файл document.txt перемещается в каталог Work. Во-втором случае одновременно происходит перемещение файла и его переименование: document.txt перемещается в директорию Work и получает новое имя doc23.txt.
При использовании команды mv для переименования в качестве второго аргумента указывается новое имя:
mv order.txt orderNew.txt
mv Work/list.odt Work/names.odt
Каталоги перемещаются и переименовываются по тому же принципу, что и файлы (в отличие от cp
ключ -r
здесь не нужен).
Групповое перемещение файлов работает также, как с командой cp
: сначала указываются перемещаемые объекты, в конце каталог назначения.
Создание файлов и каталогов
Новые директории создаются командой mkdir. Например, чтобы создать каталог Work в текущей директории необходимо выполнить следующую команду:
mkdir Work
или
mkdir ./Work
Существует множество способов создания файлов, обычно они создаются какой-либо программой. Если все же возникает необходимость создать пустой файл, сделать это можно с помощью программы touch
. В качестве аргумента ей передается имя создаваемого файла. Еще один способ – перенаправление вывода какой-либо команды в файл. Пример:
cal > ./Work/January
Здесь программа cal
выводит календарь на текущий месяц, а поскольку стоит знак перенаправления вывода, то вывод команды будет записан в файл January, находящийся в папке Work.
Удаление файлов и каталогов
Для удаления файлов используется команда rm. Например:
Командой rmdir можно удалить пустой каталог. Если же каталог не пуст, следует использовать команду rm
с ключом -r
:
У вас в каталоге есть файлы с разными расширениями. Вам надо группу файлов, имеющих одно и тоже расширение, скопировать в другой каталог. Как это сделать одной командой?
Какой ключ надо использовать, чтобы при перемещении случайно не перезаписать уже имеющийся в каталоге файл с таким именем?
Курс с ответами к заданиям и дополнительными уроками
<!– :
–>
в PDF
<!– , android-приложение –>
- 29.01.2020
- 47 159
- 02.11.2020
- 24
Описание
XCOPY – Копирует файлы и каталоги, включая подкаталоги.
Синтаксис
Параметры
Примечания
- Использование параметра /exclude
Построчный вывод всех строк в каждом файле. При соответствии выведенной строки части пути копируемого файла, он исключается из процесса копирования. Например, если указана строка «\Obj\», исключается все файлы, расположенные в каталоге «Obj». Например, если указана строка «.obj», исключается все файлы с расширением .obj. - Использование параметра /z
Если во время фазы копирования теряется сетевое подключение (например, если сервер переходит автономный режим, разрывая подключение), копирование возобновляется после восстановления подключения. Использование параметра /z команды вызывает также отображение доли (в процентах) завершенной операции копирования для каждого файла. - Использование параметра /y в переменной среде COPYCMD. Можно применять параметр /y в переменной среде COPYCMD. Эта настройка может быть переопределена использованием параметра /-y в командной строке. По умолчанию если команда copy выполняется не в пакетной программе, при замене требуется подтверждение.
- Копирование зашифрованных файлов
При копировании файлов на том, не поддерживающий шифрованную файловую систему (EFS), возникнет ошибка. Следует предварительно расшифровать файлы или копировать их на том, поддерживающий EFS. - Добавление файлов
Чтобы объединить файлы, укажите один файл-результат, но несколько файлов-источников (с помощью подстановочных знаков или формата файл1+файл2+файл3). - Значение по умолчанию для результата
Если параметр результат не задан, xcopy будет копировать файлы в текущий каталог. - Указание в качестве результата файла или каталога
Если параметр результат не содержит существующий каталок или не заканчивается обратной чертой(\), выводится следующее сообщение:Что означает destination:
имя файла или каталога
(F = файл, D = каталог)?Нажмите F, если файл или файлы должны копироваться в файл. Нажмите D, если файл или файлы должны копироваться в каталог.Чтобы устранить вывод этого сообщения, используйте параметр /i. В результате чего, команда xcopy предполагает, что результат является каталогом, если источник престаляет собой несколько файлов или каталогов. - Использование команды xcopy для установки атрибута «архивный» для файлов результата
Команда xcopy создает файлы с установленным атрибутом «архивный», независимо от состояния этого атрибута у исходных файлов. - Сравнение команд xcopy и diskcopy
Команда xcopy должна быть использована вместо diskcopy при копировании файлов и подкаталогов на диск другого формата. Так как команда diskcopy копирует диски по дорожкам, требуется, чтобы исходный диск и диск-результат имели одинаковый формат. Для команды xcopy это требование не нужно. Обычно следует использовать команду xcopy, если только не требуется получить два диска с одинаковыми образами. - Коды завершения программы xcopy
- Использование параметра /exclude
Для анализа кодов завершения, выведенных командой xcopy, используйте параметр уровень_ошибки в командной строке if пакетных программ.
В следующей таблице перечислены коды завершения с кратким описанием.
Примеры использования
Чтобы копировать все файлы и подкаталоги (включая пустые подкаталоги) с диска A на диск B, введите:
xcopy a: b: /s /e
Чтобы включить в операцию копирования предыдущего примера системные и скрытые файлы следует использовать параметр /h:
xcopy a: b: /s /e /h
Чтобы обновить файлы в каталоге \Reports файлами из каталога \Rawdata, измененными после 29 декабря 1993 года, введите:
xcopy \rawdata \reports /d:29-12-1993
Чтобы обновить файлы предыдущего примера, уже существующие в каталоге \Reports, независимо от их даты, введите следующую команду:
xcopy \rawdata \reports /u
Чтобы получить списк файлов, которые были бы скопированы в предыдущем примере, следует ввести команду:
xcopy \rawdata \reports /d:29-12-1993 /l > xcopy.out
Список файлов, которые были бы скопированы, находится в файле Xcopy.out.
Чтобы скопировать каталог \Customer и все подкаталоги \\Public\Address на сетевой диск H, сохранить у файлов атрибут «только для чтения», введите команду:
xcopy \customer h:\public\address /s /e /k /p
Чтобы выдать предыдущую команду, убедиться, что команда xcopy создает каталог \Address и устранить вывод сообщение о создании нового каталога, добавьте параметр /i следующим образом:
xcopy \customer h:\public\address /s /e /k /p /i
Для запуска программы xcopy и анализа кодов завершения можно создать пакетный файл и использовать оператор if для обработки кодов завершения в случае возникновения ошибок. Например, следующая пакетная программа использует замещаемые параметры для задания источникаxcopy и результата:
@echo off
rem COPYIT.BAT копирует все файлы во всех подкаталогах
rem исходного диска или каталога (%1) на другой диск
rem или в другой каталог (%2)
?? xcopy %1 %2 /s /e
??if errorlevel 4 goto lowmemory
?if errorlevel 2 goto abort
?if errorlevel 0 goto exit
??:lowmemory ?
echo Недостаточно памяти для копирования файлов,
задан недопустимый ?echo диск или ошибка в синтаксисе командной строки.
?goto exit
??
:abort ?
echo Нажата комбинация CTRL+C для остановки копирования.
?goto exit ?
?
:exit
Эта пакетная программа может быть использована для копирования всех файлов каталога C:\Prgmcode и его подкаталогов на диск B следующим образом:
copyit c:\prgmcode b:
Командный интерпретатор подставляет C:\Prgmcode вместо параметра %1 и B вместо параметра %2, затем использует команду xcopy с параметрами /e и /s. Если при выполнении xcopy произошла ошибка, пакетная программа считывает код завершения и переходит на метку, указанную в соответствующей инструкции IF ERRORLEVEL. В результате на экран выводится сообщение о характере ошибки и осуществляется выход из пакетной программы.
Справочная информация