Xcopy ошибка недостаточно памяти

Profile picture for user Олег

Windows Terminal cmd

Иногда при копировании с помощью xcopy вы можете натолкнуться на ошибку «Insufficient memory». Я такую ошибку увидел, когда стал разбираться с размером бэкапа сайта. Оказалось, что в какой-то момент времени бэкап сломался из-за этой ошибки.

xcopy

Несмотря на то, что текст ошибки переводится как «Недостаточно памяти», к оперативной памяти ошибка не имеет отношения. На сайте Microsoft подсказывают, что дело в слишком длинном полном пути к файлу, если он превышает 254 символа.

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

xcopy

Один из способов избавиться от проблемы — не использовать файлы такой длины. Это чудесно, но не решает проблему. Не все файлы можно удалить или переименовать. И мы не застрахованы от появления новых файлов с большим названием. Да и с удалением таких файлов могут возникнуть проблемы:

Windows — удалить файл с длинным именем

Второй способ — вместо xcopy применить robocopy. Если вы ранее использовали дополнительные опции xcopy, то их придётся заменить на другие, которые поддерживает robocopy.

Удаляю старую команду:

xcopy %SourceDir% %FullBackupDir%

И вставляю новую:

robocopy %SourceDir% %FullBackupDir%

Вот мой новый скрипт для резервного копирования папки:

BAT скрипт для резервного копирования папки

Проверяйте бэкапы!

The standard Windows command line tools like xcopy, rmdir cannot operate with paths longer than MAX_PATH(260 chars). If you want to remove the directory which contains such file which full path is longer than MAX_PATH, or if you want to copy recursively a directory to such a place where the full path to at least one of its files would be longer than MAX_PATH then these command line tools fail.

However you can bypass it with «move» command line tool, because in distinct to xcopy and rmdir(rd) it seems to not iterating the files in the directory one-by-one.
This workaround may be not always convenient and requires additional actions, but for the automation/scripting purpose I don’t see any other way if you cannot or don’t want using special tools a.k.a robocopy. This way works with a directory, but not with a single file. Let me show an example.

Create a directory. Path length: 245 chars

E:\>mkdir E:\veryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryloooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooongdirectory

Thy to create a file inside it so that the file path length is bigger than MAX_PATH. Usual way it won’t work.

E:\>echo "content" > E:\veryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryloooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooongdirectory\longlonglonglonglongfilename.txt
The system cannot find the path specified.

Workaround: Create a file(s) with a short path and move the directory containing the file(s) into the long path.

E:\>echo "content" > somedir\longlonglonglonglongfilename.txt

E:\>move somedir E:\veryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryloooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooongdirectory\
        1 dir(s) moved.

Check 1: Was the directory completely moved (with all files)? — Yes.

E:\>dir E:\veryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryloooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooongdirectory\somedir
 Volume in drive E is Workspace
 Volume Serial Number is C864-7C96

 Directory of E:\veryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryloooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooongdirectory\somedir

08/09/2019  11:52 AM    <DIR>          .
08/09/2019  11:52 AM    <DIR>          ..
08/09/2019  11:52 AM                12 longlonglonglonglongfilename.txt
               1 File(s)             12 bytes
               2 Dir(s)  130,574,221,312 bytes free

Check 2. The path is really longer than MAX_PATH, that’s why it won’t be accessible by the full path for the usual command line tools, so we did everything correct:

E:\>dir E:\veryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryloooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooongdirectory\somedir\longlonglonglonglongfilename.txt
 Volume in drive E is Workspace
 Volume Serial Number is C864-7C96

 Directory of E:\veryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryloooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooongdirectory\somedir

File Not Found

The same workaround is valid if you want to remove (with rmdir) the directory containing subfolders/files whose path is longer than MAX_PATH. Just move the upper directory to some short temporary location and there you can rmdir it.

NOTE: Windows command line tool «move» can move directories only within the same disk letter.

E.2.2. Копирование файлов

Содержание

E.2.2.1. Копирование в MS-DOS.

    E.2.2.1.1. Команда copy.
    E.2.2.1.2. Команда xcopy
    E.2.2.1.3. Команда Diskcopy

E.2.2.2. Копирование в IBM OS/2.

    E.2.2.2.1. Команда Copy.
    E.2.2.2.2. Команда xcopy.
    E.2.2.2.3. DISKCOPY.
    E.2.2.2.4. Команда xdfcopy.

E.2.2.3. Копирование файлов в операционной системе Linux.

    E.2.2.3.1. Команда cp.
    E.2.2.3.2. Команда mcopy.

В таблице E.I., приведены команды, используемые для работы с файлами. В этом разделе автор приводит подробное описание команд копирования файлов.

E.2.2.1. Копирование в MS-DOS.

E.2.2.1.1. Команда copy.

С помощью команды copy можно копировать файлы (не каталоги!). Команда внутренняя.

1. Ее синтаксис:

copy [опции] <параметр1> <параметр2> [опции]

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

1) Оба параметра — различные краткие имена файлов. В этом случае в текущей директории создается дубликат файла. Пример:

copy myfile.txt myfile.doc

В текущей директории создается дубликат файла myfile.txt — файл myfile.doc

2) Оба параметра — полные имена. Происходит копирование файла из одного каталога в другой с изменением имени. Например:

copy c:techmyfile.txt a:myfile.doc

Файл myfile.txt в директории c:tech изменяет свое имя на myfile.doc и копируется в корневой каталог диска A.

3) Первый параметр — имя файла (полное или краткое), а другой — путевое имя каталога. Файл копируется в каталог назначения без изменения имени. Например:

copy c:techmyfile.txt a:

Файл myfile.txt из директории c:tech копируется в корневой каталог диска A.

4) Первый параметр — шаблон, а второе — путевое имя каталога. Этот случай аналогичен случаю 3), однако при этом копируется не единичный файл, а группа файлов, удовлетворяющая условиям шаблона. Пример:

copy a:*.doc b:

В этом примере все файлы корневого каталога диска A: с расширением doc копируются в корневой каталог диска B: без изменения имени.

5) Оба параметра — шаблоны файлов. Тогда копируются файлы из каталога — источника, удовлетворяющие первому условию (параметр 1), в каталог — приемник. при этом имена файлов изменяются так, чтобы они удовлетворяли шаблону, указанному в параметре 2. Пример:

copy tech*.txt b:*.doc

Копируются файлы с расширением txt из каталога tech текущего диска в текущий каталог диска B:. При этом расширение всех файлов меняется на doc.

6) Первый параметр — шаблон файла, а второй — имя файла. Происходит копирование с объединением. Подробнее смотри раздел, посвященный объединению файлов.

2. Опции команды copy.

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

/A — копирование как текстовые файлы. Копируются содержимое файла(ов) до первого встреченного символа «конец файла» (EOF, ASCII 26 — смотри раздел, посвященный классификации файлов). После копирования символ EOF добавляется в конец файла.

Ключ действует на предшествующий файл, а также на все последующие до конца команды. Он отменяет действие ключа /B.

/B — копирование как двоичные файлы. Файлы рассматриваются как произвольная последовательность символов. Файлы копируются до конца, в конец скопированного файла не добавляется символ EOF.

Ключ действует на предшествующий файл, а также на все последующие до конца команды. Он отменяет действие ключа /A.

3. Замечания.

1) Команда copy не копирует:

a) каталоги,

b) скрытые и системные файлы.

2) Команда copy не копирует «образ» дискеты. То есть команда

copy a:*.* b:

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

Образ же дискеты лучше всего делается командой diskcopy, входящей в состав MS-DOS, или программой diskdupe.exe. Последняя может даже создавать образ дискеты в виде файла, чем широко пользуются компьютерные пираты, незаконно воспроизводя дистрибутивы с дискет.

3) При копировании файла в каталог, где существует файл с тем же именем, содержимое последнего СТИРАЕТСЯ!

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

4. Сообщения при копировании файлов.

a) <n> file(s) copied

<n> файлов скопировано

Успешно скопировано <n> файлов.

b) File not found

Файл не найден.

c) File cannot be copied onto itself

Файл не может быть скопирован сам на себя

Попытка копирования файла на себя. Не было указано, где содержится копия. В подобной ситуации MS-DOS копирование не производит.

d) Insufficient disk space

Недостаточно места на диске

Не хватает места на целевом диске для копируемого файла.

e) Cannot do binary reads from device

Не могу осуществить бинарный ввод с устройства

Используется ключ /B при копировании текста с какого-либо устройства (CON, AUX, PRN и других — смотри раздел, посвященный редиректору DOS). С этих устройств могут копироваться только текстовые файлы, заканчивающиеся символом EOF. Пример неправильного использования такой опции:

copy /B con myfile.doc

f) Invalid path or file name

Неправильный путь или имя файла.

Неправильно указано имя файла или путь доступа, некорректно используется имя каталога или оно неправильно записано. Выполнение команды прерывается.

E.2.2.1.2. Команда xcopy

Впервые эта команда появилась в MS-DOS версии 3.2. Команда позволяет копировать файлы и каталоги. Команда внешняя (xcopy.exe).

Синтаксис

xcopy <параметр_1> <параметр_2> [<опции>]

Действие:

Команда xcopy действует также, как и команда copy. Во всяком случае смысл ее параметров остался тем же (смотри E.2.2.2.1.1, описание). Однако благодаря наличию ключей она может дополнительно:

a) копировать и файлы, и дерево каталогов;

b) копировать файлы, которые создавались или модифицировались после указанной даты;

c) копировать файлов с установленным атрибутом «архивный»;

d) запрашивать подтверждение на копирование.

Ключи команды

/A — Копирование файлов, у которых установлен флаг архивации. После копирования флаг не сбрасывается. (A — Archive — Архив)

Примечание. Флаг архивации устанавливается каждый раз, когда файл создается или модифицируется.

/D:<дата> — Копирование файлов, которые были созданы или изменены в указанный день или позже. (D — Date — Дата).

/E — Копирование всех подкаталогов, даже если они пустые. Этот ключ используется с ключом /S. (E — Empty — Пустой).

/M — Тоже, что и ключ /A, однако после копирования атрибут «архивный» сбрасывается. (M — Modify — Изменять).

/P — Перед копированием каждого файла из группы запрашивается подтверждение. (P — Prompt — Запрашивать).

/S — Копирование дерева каталогов Это означает копирование файлов из указанного в команде каталога и изо всех его подкаталогов. (S — Subdirectory — Подкаталог).

/V — Проверка правильности записи файлов на диск — приемник. (V — Verify — Проверять).

/W — Перед копированием DOS выводит на экран запрос и ожидает установки в дисковод дискеты с входными файлами. (W — Wait — Ждать).

Возвращаемые коды завершения программы.

В зависимости от результатов копирования программа xcopy возвращает операционной системе один из следующих кодов завершения (errorlevel).

0 — Копирование прошло успешно, без ошибок.

1 — Не обнаружено файлов для копирования.

2 — Пользователь прервал копирование нажатием Ctrl+C.

4 — Общая ошибка. Может быть выдана по следующим причинам:

a) недостаточен объем памяти;

b) неправильно указан дисковод;

c) в командной строке допущена ошибка;

d) файл не обнаружен;

5 — Ошибка записи или считывания дискеты.

Замечания:

1. Команда xcopy не работает с устройствами.

2. Данная команда по-прежнему не копирует скрытые и системные файлы.

3. Команда xcopy не копирует файлы, не помещающиеся на одном носителе (дискете). Также не возможно прямое копирование на несколько дискет.

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

a) Выполнить команду Attrib +A *.* Эта команда устанавливает у всех файлов флаг архивации.

b) Выполнить команду xcopy *.* /M Эта команда копирует все файлы с установленным атрибутом «архивный», сбрасывая его после копирования.

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

4. Команда xcopy, как и команда copy, не создает образ дискеты (см. раздел E.2.2.1.1, замечания)

5. При копировании файла в каталог, где существует файл с тем же именем, содержимое последнего СТИРАЕТСЯ (как и у команды copy)!

Сообщения.

a) Reading source file(s)

Читаю исходные файлы.

Команда считывает содержимое дискеты или диска в память.

b)
<файл_1>
<файл_2>

<файл_n>

<n> File(s) copied

<n> Файла(ов) скопировано

Произведено успешное копирование n файлов.

c) Access denied

Доступ закрыт

Была попытка копирования файла с установленным атрибутом «только чтение», целевой файл используется другой программой, либо для исходного и целевого файла указано одно имя.

d) Cannot perform a cycled copy

Не могу осуществить циклическое копирование (см. E.2.2.1.d)).

e) Cannot copy from reserved device

Не могу копировать с зарезервированного устройства.

Cannot copy to reserved device

Не могу копировать на зарезервированное устройство.

Попытка копирования с/на устройство, или имя файла совпадает с именем устройства.

f) Does <name> specify a file name or directory name on target? (F — file, D — directory).

<name> указывает на имя файла или каталога? (F — файл, D — каталог).

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

g) File cannot be copied onto itself

Файл не может быть скопирован сам на себя.

Идентичное описание параметров 1 и 2. Такое также возникает, когда не найден целевой или исходный диск, каталог или имя файла.

h) File creation error

Ошибка в создании файла

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

i) <name> File not found

Файл с именем <name> не найден

j) Insufficient disk space

Недостаточно места на диске.

Это значит, что либо файл не помещается на дискету (и нужно отказаться от копирования), либо дискета заполнена файлами.

k) Invalid date

Неправильная дата.

Дата записана с недопустимыми символами.

l) Incorrect DOS version

Некорректная версия DOS

Программа xcopy должна быть той же версии, что и файл command.com

m) Invalid drive specification

Неправильное имя дисковода.

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

n) Invalid number of parameters

Неправильное число параметров

Синтаксическая ошибка.

o) Invalid parameter

Неправильный параметр

Неопознанный ключ, или пропущен слэш у ключа («/»).

p) Invalid path

Неправильный путь

Неправильно записано путевое имя, или оно слишком длинное.

q) Path not found

Путь не найден

r) Path too long

Путь слишком длинен

s) Press any key to begin copying file(s)

Нажмите любую клавишу, чтобы начать копирование файла(ов)

Сообщение появляется, когда указан ключ /W.

t) Unable to create directory

Не могу создать каталог

Dos не может создать каталог, если имена файла и подкаталога (с расширением) совпадают. Сообщение также появляется, если дискета заполнена, либо допущена ошибка в определении пути доступа.

E.2.2.1.3. Команда Diskcopy

С помощью этой команды можно создавать идентичные копии съемных дисков. При этом содержимое всех кластеров на дискетах становится одинаковым, то есть создается как бы «образ» дискеты (в отличие от использования команд copy и xcopy). Образы дискет бывают необходимы в случае копирования загрузочных и дистрибутивных дискет. Команда внешняя.

Синтаксис:

diskcopy [<дисковод1>] [<дисковод2>] [/1]

где <дисковод1> — дисковод с исходной дискетой,

<дисковод2> — дисковод с целевой дискетой (на которую производится копирование).

Действие:

С исходной дискеты создается образ, который переносится на целевую дискету.

Опция

/1 — используется только одна сторона дискеты.

Возвращаемые коды:

0 — копирование произошло успешно.

1 — произошла ошибка, которая не является серьезной.

2 — пользователь прервал копирование, нажав Ctrl+C.

3 — серьезная ошибка. Программа на может считать исходную дискету или форматировать целевую дискету.

4 — недостаточный объем оперативной памяти, неправильно указан дисковод или ошибка в команде.

Замечания:

1. Ни в коем случае не перепутайте местоположение целевой и исходной дискеты. В противном случае данные на исходной дискете будут разрушены! Поэтому желательно исходную систему защитить от записи (заклеить вырез 5,25″ дискете или открыть отверстие в 3,5″ дискете).

2. Команда diskcopy осуществляет форматирование целевой дискеты, если она не форматирована или имеет другой формат.

3. Все данные на целевой дискете уничтожаются.

4. Команда копирует скрытые и системные файлы.

5. Если для целевой и исходной дискеты используется один привод, то дискеты меняются при появлении сообщения, выдаваемого командой.

6. Если объем оперативной памяти достаточно большой, то происходит считывание содержимого исходной дискеты в оперативную память перед его копированием на целевую дискету. В MS-DOS 5.0 и выше для этого используется расширенная память (при установке драйвера HIMEM.SYS). Если же объем памяти меньше необходимого, то содержимое исходной дискеты переносится частями.

7. Эту команду нельзя использовать в сети и вместе с командами assign и subst.

8. Если указано имя одного дисковода или имена двух дисководов совпадают, то копирование дискеты будет осуществляться на одном приводе.

9. При копировании исходная дискета обозначается словом SOURSE (источник), а целевая — словом TARGET.

Сообщения.

a) Cannot DISKOPY to or from a network drive.

Не могу копировать на/из сетевого диска.

Команда не должна использоваться в сети.

b) Cannot DISKCOPY to or from ASSIGNed or SUBSTed drive.

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

c) Copy another diskette (Y/N)?

Копировать другую дискету (Да/Нет)?

Данное сообщение появляется после завершения копирования дискеты. Оно запрашивает, будет ли продолжено копирование дискет. Если необходимо копировать другую дискету, нажмите клавишу Y и смените дискеты. В противном случае нажмите клавишу N.

d) Copy not completed

Копирование не закончено

Команда DISKCOPY не смогла завершить копирование дискеты. Рекомендуется произвести повторное копирование на другую целевую дискету.

e) Copying <n> tracks

<m> Sectors/Track, <s> Side(s)

Копирую <n> дорожек,

<m> Секторов на дорожку, <s> сторон.

Команда сообщает формат дискеты.

f) Disk error while reading drive A:

Abort, Ignore, Retry?

Ошибка при чтении дискеты в дисководе A:

Во время копирования обнаружена ошибка на исходной дискете. Нажатие A: приведет к отмене копирования, I — продолжение процесса копирования с потерей данных, R — произвести повторную попытку прочитать исходную дискету.

g) Disk must be the same size.

Диск должен иметь тот же размер.

Запрещено копировать диски с разным форматом.

h) Drive <x>: not ready

Make shure a diskette is inserted into the drive
and the door is closed

Диск <n> не готов. Убедитесь, что дискета установлена в дисковод и его замок закрыт.

i) Drive types or diskette types not compatible

Тип дисководов или дискет не совместим. (Например, при копировании 5,25″ дискеты HD/DS на DD/DS и т.п.).

j) Formating while copying

Форматирование перед копированием.

В процессе этой операции формат целевой дискеты приводится к формату исходной.

k) Incorrect DOS version

Неверная версия DOS.

Версия программы DISKCOPY должна совпадать с версией command.com.

l) Insert [SOURSE|TARGET] diskette in drive A:
Press any key when ready

Поместите исходную|целевую дискету в дисковод A: и нажмите любую клавишу для продолжения.

m) Insufficient memory

Недостаточно памяти (для копирования дискет).

n) Invalid drive specification/
Specified drive does not exist or is non-removable

Неправильная спецификация дисковода.

Указанный дисковод не существует или является несъемным.

o) Invalid parameter.
Do not specify file name(s)
Command format (<x>:) (<x:>) [/1]

Неправильный параметр.

Не указывайте имена файлов

p) SOURCE|TARGET diskette bad or incompatible
Copy process ended

Исходная|целевая дискета повреждена или несовместима

Процесс копирования завершен.

Команда не может считать целевую дискету или отформатировать целевую.

q) TARGET diskette is write protected

Целевая дискета защищена от записи.

Необходимо снять защиту от записи на целевой дискете перед процессом копирования.

r) TARGET diskette may be unusable

Целевая дискета, возможно, непригодна

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

s) Unrecoverable read/write error on drive (<x>:)
side <s>, track <t>

В дисководе <x>:на стороне <s> и дорожке <t> обнаружена неисправимая ошибка.

t) Sourse and target diskettes are not the same format.
Cannot do the copy

Исходная и целевая дискеты имеют разный формат. Не могу делать копию.

Попытка копирования 5.25″ дискету на 3,5″ дискету и наоборот.

E.2.2.2. Копирование в IBM OS/2.

Поскольку в 80-е годы XX столетия OS/2 задумывалась как «правоприемница» MS-DOS, то при реализации ее командной строки использовался тот же набор команд. Однако правила использования команд претерпели некоторые изменения. Об отличиях в использовании команд MS-DOS и IBM OS/2 будет рассказано ниже.

E.2.2.2.1. Команда Copy.

Синтаксис:

copy [/A|/B] <источник> [/A|/B] <приемник> [/A|/B] [/V]

Действие:

Копирование файлов или группы файлов. В отличие от MS-DOS эта команда может копировать каталоги.

Ключи:

Те же, что и в MS-DOS.

Смысл параметров:

<Источник> — диск, директория или файл (группа файлов), который(-ые) должны быть скопированы.

<Приемник> — устройство, диск, или директория, куда необходимо переместить копии файла(-ов).

Замечания:

1. Также, как и в MS-DOS, командой copy в OS/2 нельзя копировать дерево каталогов. Если при копировании указать только имя каталога, то с него будут скопированы все файлы, но не подкаталоги. Для копирования же подкаталогов необходимо по-прежнему использовать команду xcopy.

2. При записи новых файлов поверх старых необходимо учитывать, что в OS/2 не предусмотрены средства для восстановления удаленных с командной строки файлов!

E.2.2.2.2. Команда xcopy.

Назначение:

Копирование файлов и дерева каталогов.

Синтаксис:

xcopy <источник> <приемник> [<опции>]

Действие:

Копирование файлов, исключая скрытые и системные, и также дерева каталогов из <источника> в <приемник>. Смысл <источника> и <приемника> аналогичен тем же терминам в команде copy [E.2.2.2.1.]

Ключи:

/A, /D, /E, /M, /P, /S, /V, /W — назначение этих ключей полностью совпадает с назначением ключей в команде xcopy MS-DOS, а потому здесь не рассматриваются (см. E.2.2.1.2., ключи).

/Y — не запрашивать подтверждения для перезаписи существующих файлов назначения.

E.2.2.2.3. DISKCOPY.

Назначение:

Копирование содержимого (образа) одного съемного диска на другой.

Синтаксис:

diskcopy <диск1>: [<диск2>:]

Ключи: нет (в отличие от MS-DOS).

Замечания:

1. Команда diskcopy OS/2 аналогична своей «тезки» в MS-DOS, однако не поддерживает копирование только одной стороны дискеты (ключ /1).

2. Команда Diskcopy не поддерживает XDF-формат данных.

Примечание: XDF-формат (eXtended Data Format — расширенный формат данных) позволяет на дискету 3.5″ HD/DS записывать до 1,8 Мбайт информации (вместо 1,44 Мбайт).

E.2.2.2.4. Команда xdfcopy.

Копирование образов дискет в XDF-формате.

Синтаксис:

xdfcopy <источник> <приемник>

Смысл параметров:

<Источник> — диск или файл-образ диска, которые копируются.

<Приемник> — диск или имя файла-образа диска.

Ключи: нет.

Замечания:

1. xdfcopy аналогична программе diskcopy OS/2, только работает с дисками с xdf-форматом данных.

2. Команда xdfcopy позволяет сохранить образ дискеты в файл, что роднит ее с программой копирования дискет в diskdupe MS-DOS. Однако эти команды различаются форматом хранения данных.

3. Команда xdfcopy может также выполнятся в сеансе MS-DOS под управлением OS/2 (а не только в командной строке OS/2).

E.2.2.3. Копирование файлов в операционной системе Linux.

Операционная система Linux является клоном операционной системы UNIX, работающая на Intel-совместимых компьютерах. В настоящее время Linux является наиболее распространенным клоном UNIX, и именно ее автор будет рассматривать как пример в UNIX-подобных операционных системах.

E.2.2.3.1. Команда cp.

В отличие от MS-DOS, в операционной системе Linux нет команд, копирующих или только файлы (как команда copy), или только файлы с деревом каталога (команда xcopy). Оба этих действия выполняет команда cp, которая, в зависимости от контекста, копирует и файлы, и каталоги. Ее синтаксис следующий:

cp <опции> {<источник>} <приемник>

Смысл команды следующий.

1. И источник, и приемник — имена файлов. Тогда команда просто создает копию (дубликат) файла с новым именем в текущем каталоге.

Пример:

cp oldfile newfile

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

Пример:

cp oldfile /home/den/mydir

3. Источник шаблон файла, приемник — каталог. Удовлетворяющие шаблону файлы копируются в каталог — приемник.

Пример:

cp ???file /home/den/mydir

4. Источник — имя файла (краткое или полное), приемник — полное имя файла. Происходит копирование указанного файла в каталог вместе с его переименованием.

Примеры:

cp thefile newdir/oldfile

— копирует файл thefile в подкаталог newdir в файл oldfile

cp newdir/oldfile newfile

— копирует файла oldfile из подкаталога newdir в файл newfile в текущем каталоге.

cp thefile ../file

— копирует файл thefile в файл file родительского каталога.

5. Источник — каталог + шаблон *.*, приемник — каталог. Копируются файлы из каталога — источника в каталог приемник. Подкаталоги копируются только в том случае, если указан ключ -r (смотри ниже).

Пример:

cp mydir/*.* newdir

— копируются все файлы из каталога mydir в каталог newdir.

Остальные комбинации являются запрещенными.

Основные опции команды cp.

-i — выдача запроса на подтверждение перезаписи. Дело в том, что при копировании в Linux происходит следующее:

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

b) Если файл с именем, указанным в приемнике, существует, то он СТИРАЕТСЯ, а на его месте создается новый файл БЕЗ ПРЕДУПРЕЖДЕНИЯ!

Чтобы выдать предупреждение, вводится опция -i. Пример ее использования:

cp -i newfile oldfile

После этой команды будет выдано предупреждение:

Overwrite oldfile?

Если на запрос ответить нажатием клавиши Y, то файл перезапишется. Любой другой ответ будет воспринят как «нет».

-r — при копировании использовать подкаталоги любой вложенности. Аналогична использованию ключей /S и /A в команде DOS xcopy.

E.2.2.3.2. Команда mcopy.

Файловые системы Linux и MS-DOS разные. Чтобы подключить диск с любой файловой системой в UNIX (в частном случае — в Linux) необходимо эту файловую систему смонтировать. Однако если используются дискеты на 3.5″, то монтирование файловой системы каждой дискеты перед ее употреблением, а потом ее размонтирование при смене дискет было бы делом неразумным. Именно для того, чтобы избежать постоянных циклов монтирования — размонтирования файловых систем на дискетах, для работы с дискетами MS-DOS в операционной системе Linux есть так называемые команды mtools.

Для копирования с дискеты MS-DOS на диск Linux и наоборот служит команда mcopy. Ее синтаксис следующий:

mcopy <имя_файла> a:| b:

— для копирования файла из Linux в текущий каталог диска a: или b:.

mcopy a: | b: <имя_файла>

— для копирования файла из текущего каталога диска a: или b: на диск Linux.

Ключи: нет.

Замечания:

1. При копировании файлов можно использовать шаблоны.

2. При копировании файлов с/на дискету копируются файлы только в текущем каталоге. Указание любых каталогов на диске a: (или b:) ЗАПРЕЩЕНО! Если необходимо перейти в подкаталог на диске a: (или b:), используйте команду mcd.

Назад |
Содержание |
Вперед

Category:

  • IT
  • Cancel

при бэкапе пользовательских папок — уперся в ограничене в длину пути (256 символов), в связи с чем команда xcopy — выдавала ошибку insufficient memory. Бэкап соответ. полностью не проходил. Погуглив тему — оказалось, что у MS есть утилита robocopy. которая спокойно справляется с этим ограничением и вообще в ней много других приятных вещей присутствует.
robocopy /? — вам в помощь!

example =
robocopy /E /R:10 /W:10 v:\Post d:\backup\

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and
privacy statement. We’ll occasionally send you account related emails.

Already on GitHub?
Sign in
to your account

Assignees

@Xelu86

Comments

@SoftwareTailor

I got an insufficient memory error using xcopy, but it seems to be a minor glitch in some cases.
You can get the error even if you just want to use the list switch, xcopy /y/d/l

You should be able to use xcopy . d: to copy files from a folder on one drive to a folder on another drive.
Or use xcopy folder1 d:folder1, but it’s only a minor glitch.
Instead, use xcopy . d: to copy files.
Or use xcopy folder1*.* d:folder1


Document Details

Do not edit this section. It is required for learn.microsoft.com ➟ GitHub issue linking.

  • ID: 69a1e859-b436-290e-69c0-810dd3a5ce90
  • Version Independent ID: 10c81289-2bf7-40d9-39ea-e624cf92aa3e
  • Content: xcopy
  • Content Source: WindowsServerDocs/administration/windows-commands/xcopy.md
  • Product: windows-server
  • Technology: windows-commands
  • GitHub Login: @JasonGerend
  • Microsoft Alias: jgerend

@Xelu86

Hey SoftwareTailor,

Thanks again for contacting Microsoft. We value your feedback.

A documentation change has been made in the Remarks section about insufficient memory and will be live after the next business day.

Other reasons why this can potentially occur is due to:

  • Trying to copy too large a number of files or folders
  • Unnecessary programs or several browser tabs consuming RAM
  • RAM health degradation
  • Too little RAM set in VM environment

We will now be closing this thread. Thank you and have a most pleasant day.
#please-close

2 participants

@SoftwareTailor

@Xelu86

Like this post? Please share to your friends:
  • Xbox ошибка dns сервера
  • Xcopy игнорирование ошибок
  • Xerox 3010 ошибка 191 310
  • Xcomew exe ошибка 0xc000007b
  • Xerox 242 ошибка 016 311