
Копирует файлы и каталоги, включая подкаталоги.
Описание команды xcopy, параметры, примеры использования.
Синтаксис
xcopy источник [результат] [/w] [
/p] [/c] [/v] [/q] [/f] [
/l] [/g] [/d[:мм-дд-гггг]] [
/u] [/i] [/s [/e]] [/t] [
/k] [/r] [/h] [{/a|/m}] [
/n] [/o]
[/x] [/exclude:файл1[
+[файл2]][+[файл3]] [{/y|/-y}] [
/z]
Параметры
- источник
- Обязательный параметр. Задает местонахождение и имена файлов для копирования. Параметр
должен задавать или диск, или путь. - результат
- Задает место, куда будут скопированы файлы. Параметр может включать имя диска с двоеточием,
имя каталога, имя файла или их комбинацию. - /w
- Выводит следующее сообщение с ожиданием подтверждения начала копирования:
Нажмите любую клавишу, чтобы начать копирование файлов
- /p
- Запрашивает подтверждение при создании каждого файла-результата.
- /c
- Игнорирует ошибки.
- /v
- Проверяет каждый скопированный файл на соответствие его оригиналу.
- /q
- Отменяет вывод на экран сообщений команды xcopy.
- /f
- Выводит имена исходных файлов и файлов-результатов в процессе копирования.
- /l
- Отображает список копируемых файлов.
- /g
- Создает незашифрованные файлы-результаты.
- /d[:мм-дд-гггг]
- Копирует только файлы, измененные не ранее заданной даты. Если не включить значение
мм-дд-гггг, команда xcopy копирует все файлы-источники, которые новее
существующих файлов-результатов. Эта возможность позволяет обновлять только
измененные файлы. - /u
- Копирует (обновляет) только те файлы-источники, которые уже существуют в каталоге
результата. - /i
- Если источником является каталог или источник содержит подстановочные знаки и
результат не существует, команда xcopy считает, что результат это
имя каталога, и создает новый каталог. Затем xcopy копирует все указанные файлы в
новый каталог. По умолчанию команда xcopy запрашивает подтверждение, является ли
параметр результат каталогом или файлом. - /s
- Копирует каталоги и подкаталоги, если они не пусты. Если параметр /s не задан,
команда xcopy будет работать только с одним каталогом. - /e
- Копирует все подкаталоги, включая пустые. Параметр /e используется с параметрами
/s и /t. - /t
- Копирует только структуру подкаталога (т. е. дерево), а не файлы. Для копирования пустых
каталогов следует задать ключ /e. - /k
- Копирует файлы с атрибутом «только для чтения» с сохранением этого атрибута для
скопированных файлов, оригиналы которых имеют этот атрибут. По умолчанию команда
xcopy удаляет атрибут «только для чтения». - /r
- Копирует файлы с атрибутом «только для чтения».
- /h
- Копирует системные и скрытые файлы. По умолчанию команда xcopy не копирует системные
и скрытые файлы. - /a
- Копирует только те файлы, которые имеют установленный атрибут «архивный». При использовании
параметра /a атрибут “архивный” у исходных файлов не меняется. Сведения об установке
атрибутов с помощью команды
attrib. - /m
- Копирует только те файлы, которые имеют установленный атрибут «архивный». В отличие от
параметра /a, параметр /m очищает атрибут «архивный» у скопированных файлов.
Сведения об установке атрибутов с помощью команды
attrib. - /n
- Копирует с использованием коротких имен файловой системы NTFS. Параметр /n требуется
при копировании из файловой системы NTFS в файловую систему FAT или когда на
диске-результате требуется использование соглашения об именах файлов как в файловой системе
FAT (8.3). Файлы могут записываться в файловую систему FAT или NTFS. - /o
- Копирует сведения о принадлежности файлов и избирательной таблице
управления доступом (DACL). - /x
- Копирует сведения о параметрах аудита файла и системной таблице управления доступом (SACL)
(подразумевается наличие /p). - /exclude:файл1[+[файл2]][+[файл3]]
- Определяет список файлов, содержащих строки.
- /y
- Устраняет выдачу запроса на подтверждение перезаписи существующего конечного файла.
- /-y
- Выдает запрос на подтверждение перезаписи существующего конечного файла.
- /z
- Копирует по сети в режиме перезапуска.
- /?
- Отображает справку в командной строке.
Примеры
Чтобы копировать все файлы и подкаталоги (включая пустые подкаталоги) с диска A на диск B,
введите:
xcopy a: b: /s /e
Чтобы включить в операцию копирования предыдущего примера системные и скрытые файлы следует
использовать параметр /h:
xcopy a: b: /s /e /h
Чтобы обновить файлы в каталоге \Reports файлами из каталога \alldata, измененными после 29
декабря 2013 года, введите:
xcopy \alldata \reports /d:29-12-2013
Чтобы обновить файлы предыдущего примера, уже существующие в каталоге \Reports, независимо от
их даты, введите следующую команду:
xcopy \alldata \reports /u
Чтобы получить список файлов, которые были бы скопированы в предыдущем примере, следует ввести
команду:
xcopy \alldata \reports /d:29-12-2013 /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 может работать с датами создания (модификации) файла,
ее можно использовать, например, для копирования файлов, созданных (модифицированных) сегодня:
xcopy c:\TEMP D:\vbk\in /D:%date:~3,2%-%date:~0,2%-%date:~8%
Для запуска программы xcopy и анализа кодов завершения можно создать пакетный файл и
использовать оператор
if для обработки кодов завершения в случае возникновения ошибок.
Например, следующая пакетная программа использует замещаемые параметры для задания
источникаxcopy и результата:
Эта пакетная программа может быть использована для копирования всех файлов каталога
C:\Prgmcode и его подкаталогов на диск B следующим образом:
copyit c:\prgmcode b:
Где copyit – имя командного файла, текст которого приведен выше.
Командный интерпретатор подставляет C:\Prgmcode вместо параметра %1 и B вместо
параметра %2, затем использует команду xcopy с параметрами /e и
/s.
Если при выполнении xcopy произошла ошибка, пакетная программа считывает
код завершения и переходит на метку, указанную в соответствующей инструкции
IF ERRORLEVEL. В результате на экран выводится сообщение о
характере ошибки и осуществляется выход из пакетной программы.
Следует отметить, что XCOPY предназначена для работы с файлами и каталогами,
но не с устройствами (например, c принтером).
Для вопросов, обсуждений, замечаний, предложений и т. п. можете использовать
раздел форума
этого сайта (требуется регистрация).
Как сохранить текст из командной строки
Командная строка Windows — это довольно удобный инструмент, который позволяет делать многие вещи намного быстрее. Но, она имеет один недостаток, с ней нельзя работать также как с другими программами. Текстовый интерфейс требует знания специальных команд. В данной статье мы рассмотрим два способа, как сохранить текст из командной строки в Windows 11, 10 и 7.
Копирование текста в командной строке Windows 11 и Windows 10
Если вы используете операционную систему Windows 11 или Windows 10, то вы можете копировать текст из командной строки точно также, как это делается в других программах. Для этого достаточно выделить текст мышкой и нажать комбинацию клавиш .

Кроме этого, в Windows 11 и Windows 10 текст можно скопировать выделив его мышкой и просто нажав правую кнопку мышки. При этом выделение отменяется, а выделенный текст копируется и помещается в буфер обмена.
Для того чтобы вставить скопированное обратно в командную строку можно использовать сочетание клавиш или клик правой кнопкой мышки.
После того как текст скопирован его можно вставить в любой документ или программу и сохранить в нужном формате.
Копирование текста в командной строке Windows 7
Если вы пользуетесь операционной системой Windows 7 или Windows XP, то текст нужно копировать по другому. Для этого нужно кликнуть правой кнопкой мышки по командной строке и в открывшемся меню выбираем пункт «».

После этого нужно выделить содержимое с помощью мышки и нажать клавишу Enter. После нажатия на Enter выделение исчезнет, а текст будет скопирован в буфер обмена.
Сохранение текста из командной строки в буфер обмена
С помощью команды «» вывод командной строки можно сразу сохранить в буфер обмена. Для этого после команды нужно добавить вертикальную черту и команду «», например:
команда | clip
Предположим, нам нужно выполнить команду «» и скопировать ее вывод в буфер обмена. В этом случае полная команда будет выглядеть так:
ipconfig /all | clip

После выполнения команды результаты будут помещены в буфер обмена. Для того чтобы воспользоваться этими результатами достаточно вставить текст в любой редактор с помощью комбинации клавиш.
Сохранение текста из командной строки в файл
Если вам нужно сохранить текст из командной строки в файл, то для этого нужно использовать оператор перенаправления вывода (> или >>). Данный оператор добавляется после команды и выполняет перенаправление всего вывода данной команды в указанный файл, например:
команда > файл.txt
Предположим, нам нужно выполнить команду «» и сохранить ее в файл «». В этом случае полная команда будет выглядеть так:
ipconfig /all > d:\cmd.txt

После выполнения данной команды будет создан текстовый файл, в котором будут сохранены все результаты.
Несколько важных моментов при использовании перенаправления вывода:
- Оператор перенаправления > перезаписывает существующие файлы, а оператор >> дописывает вывод в конец.
- Текст в файле будет закодирован с помощью кодировки IBM CP866. Поэтому для нормального отображения кирилицы его нужно открывать в Notepad++ или Akelpad.
- Для сохранения файла у пользователя должны быть права на запись. Поэтому сохранение в корень системного диска может не сработать.
Создатель сайта comp-security.net, автор более 2000 статей о ремонте компьютеров, работе с программами, настройке операционных систем.
Задайте вопрос в комментариях под статьей или на странице
«Задать вопрос»
и вы обязательно получите ответ.
Robocopy – это консольная утилита Windows для копирования файлов, которую можно использовать для синхронизации/репликации файлов и каталогов, и в сценариях резервного копирования. Robocopy (Robust File Copy) доступна начиная с Windows NT 4.0 Resource Kit, но по умолчанию эта функция появилась только в Windows Vista и Windows Server 2008. Robocopy заменяет Xcopy и copy, как более функциональная.
Основные возможности Robocopy
Кроме обычного копирования файлов и папок из папки источника в каталог назначения, в Robocopy есть множество очень полезных функций:
- Устойчивость к обрывам сети (robocopy может продолжить копирования после восстановления сетевого доступа);
- Корректное копирование файлов с их атрибутами и NTFS правами доступа;
- Копирование с сохранением исходной временной метки;
- Возможность копирования файлов и директорий, запрещенных для доступа даже администратору, с помощью ключа /B (ключ позволяет игнорировать проверку прав доступа, ключ доступен только для участников группы Администраторы или Операторы архива);
- Возможность задать количество попыток копирования файла, если файл недоступен;
- Режим полного зеркалирования директорий;
- Пропуск уже существующих файлов (с одинаковым размером или временной меткой timestamp);
- Индикатор прогресса копирования;
- Корректная работа с длинными путями (более 260 символов);
- Эффективные алгоритмы и многопоточность позволяют выполнять копирование файлов намного быстрее, чем обычное копирование средствами Windows;
- Поддержка коды возврата (что позволяет использовать robocopy в различных внешних скриптах и утилитах).
Официальной графической версии robocopy (c GUI) от Microsoft нет. Существуют пользовательские версии, но их поддержка прекращена. Список неофициальных GUI для robocopy (это сторонние программы):
- EazyCopy
- RoboMirror
- RichCopy
Синтаксис и параметры robocopy
Robocopy имеет много параметров, которые на первый взгляд могут показаться сложными, но имея под рукой документацию, вы с легкостью разберетесь и сможете править скрипты под себя.
Синтаксис robocopy состоит из двух обязательных параметров (исходный и целевой каталог) и двух необязательных (фильтр файлов и параметры):
Поддерживаются как локальные пути, так и UNC, например, \\server\directory
Полный синтаксис утилиты robocopy (все параметры и их описания) доступны по команде:

Исполняемы файл robocopy.exe находится в каталоге C:\Windows\System32.
Поскольку ключей в robocopy много, мы будем рассматривать их на практике, в готовых командах. Мы не будем рассматривать самые простые примеры использования robocopy, т.к. обычно они не вызывают вопросов. Ниже представлены готовые к применению более сложные команды robocopy, которые можно использовать в реальных сценариях.
Для тестирование различных команд robocopy без выполнения операций (копирования, перемещения или удаления) с файлами используется параметр
/L
. Данный параметр вернет список файлов и папок, которые будут скопированы вашей командой.
Использование robocopy для зеркалирования каталогов
Вы можете зеркалировать (синхронизировать) содержимое двух каталог с помощью следующей команды robocopy (под зеркалированием понимается копирование файлов из целевой папки с удалением файлов в целевом каталоге, если они удалены в источнике).
robocopy \\testnode1\C$\source\ \\testnode2\c$\dest\ *.txt /MIR /COPYALL /Z /B /J /R:3 /W:1 /REG /TEE /LOG+:%appdata%\robocopy.log
-
\\testnode1\C$\source\
— исходный каталог, откуда копируются файлы -
\\testnode2\C$\dest\
— каталог назначения, куда скопируются файлы -
*.txt
– фильтр файлов. Синхронизируются только .txt файл и директории. -
/MIR
– полное зеркалирование данных в source и dest директориях. Файлы, удаленные из source директории или не присутствующие в ней, также будут удалены из dest. Если вы хотите, чтобы удаленные из source файлы оставались в dest, то поменяйте параметр /MIR на /E -
/COPYALL
– копирует всю информацию о файле (Атрибуты, параметры безопасности и т.д.). Как альтернатива, можно применять флаг /COPY:DT для копирования timestamp, а не всей информации. /COPALL требует прав администратора -
/Z
– robocopy продолжит копирование файла при обрыве. Полезно при копировании больших файлов (неплохая альтернатива копированию файлов по BITS) -
/B
– позволяет robocopy избегать ошибки access denied error. В этом режиме robocopy игнорирует все права на файлы, которые могли бы помешать прочитать/записать файл. Этот режим требует прав администратора либо участие в группе Операторы архива -
/J
– Копирование без буфера (файлового кэша, оперативной памяти). Эффективно для больших файлов. -
/R:3
– количество попыток скопировать недоступный файл. Значение по умолчанию – миллион, поэтому необходимо его сменить. -
/W:1
– секунды между попытками скопировать недоступный файл. Значение по умолчанию – 30 секунд. -
/REG
– сохранить текущие значения ключей /R и /W в реестр как стандартные, для будущих вызовов robocopy. -
/TEE
– разделение вывода работы команды и в лог файл, и в консоль. При фоновом вызове robocopy (например, из планировщика задача) этот параметр можно убрать, оставив только /LOG -
/LOG
– путь к файлу лога
Обратите внимание на ключ /Z даже если вы копируете небольшие файлы по устойчивому каналу. Он не несёт дополнительных расходов при использовании, но в случае обрыва, вы сможете продолжить копирование просто повторно запустив скрипт.
При копировании больших файлов (более 2 Гб) с некоторых iSCSI/SAN томов, процесс robocopy может существенно использовать оперативную память сервера. Проблем обычно связано с тем, что для данного LUN в настройках RAID используется write-through кэширование вместо write-back.
Инкрементальное копирование с помощью robocopy
Сам по себе robocopy не может полностью обеспечить инкрементальное резервное копирование каталога (копирование новых и измененных файлов), для этого мы будем использовать небольшой bat скрипт:
@echo off set date_=%date:/=-% set source=C:\source set dest=\\testnode2\C$\dest\%date_% mkdir %dest% robocopy "%source%" "%dest%" /maxage:1 /E /COPYALL /Z /B /J /R:3 /W:1 /REG /LOG+: /LOG+:%appdata%\robocopy.log @echo on
-
set date_=%date:/=-%
— эта строчка присваивает значение переменной date_ в формате DD.MM.YYYY -
/maxage:1
— Максимальный возраст файла. Исключает файлы старше N дней или даты. Дата указывается в формате YYMMDD, например, /maxage:20200421 -
/E
– копирует подпапки, без ограничения уровня вложенности. Для контроля уровня вложенности директорий можно использовать параметр /lev, например, /lev:3
Инкрементальность осуществляется за счёт параметра /maxage:1 — файлы старше суток копироваться не будут. Для первого, “базового” копирования, можно выполнить этот скрипт без параметра /maxage.
Заметка. Если файловые системы source или dest не являются NTFS, используйте ключ
/FFT
, так как на других файловых системах (включая эмулированные NTFS) может возникнуть ошибка, из-за которой robocopy будет видеть старые файлы как измененные, из-за отличий в метке времени.
Перемещение файлов
С помощью ключа
/mov
или
/move
вы можете переместить файлы (а точнее удалить успешно скопированные файлы из исходной директории):
robocopy C:\source\ F:\dest\ /MOVE /E /COPYALL /Z /B /J /R:3 /W:1 /REG /TEE /LOG+:%appdata%\robocopy.log
-
/MOVE
– удалить файлы и директории из исходной папки, после того как они были скопированы. Имейте в виду, что этот ключ нужно использовать вместе с /E или /S, в противном случае вы перенесете только файлы, но не директории. Если вы хотите перенести только файлы, используйте ключ /MOV
Примечание. Поведение robocopy при использовании ключей
/MOVE
и
/MOV
не интуитивно.
- Если вы используете ключ /MOVE с ключом /E, то вы перенесете все файлы, директории (включая файлы внутри них) и пустые директории. Файлы и директории удалятся из исходной папки. /MOVE с /S даст такой же результат, но пустые директории не перенесутся и будут удалены.
- Если вы используете ключ /MOV с ключом /E, то вы перенесете все файлы, включая те, которые находятся в директориях и поддиректориях, также скопируются все директории (включая пустые), но они не будут удалены из исходного каталога, в отличие от файлов. Используя /MOV с /S, вы получите такой же результат, но пустые директории не будут скопированы.
Пример использование robocopy в планировщике задач
Для примера возьмём задачу: нам необходимо с помощью robocopy регулярно синхронизировать содержимое сетевой папки между двумя серверами с ведением логов.
- Исходный путь — \\testnode1\C$\source
- Целевая директория- \\testnode2\C$\source
Запустите командную строку с правами администратора и введите: compmgmt.msc
Перейдите в System Tools -> Task Scheduler Library. Создайте новое задание планировщика (Create task).

Укажите имя задания, и выберите пользователя из-под которого будет выполняться задание. Пользователь должен иметь доступ на чтению и запись в обоих каталогах (при копировании по сети между серверами домена можно использовать аккаунт System, в этом случае нужно предоставить на целевой каталог права RW для объекта computer сервера-источника) .

Перейдите на вкладку Triggers и создайте новый триггер.
Выберите параметр On a schedule (по расписанию), выберите время начала и отметьте Repeat task every, указав интервал выполнения. В моём случае это 5 минут – каждые 5 минут, начиная с часа дня 22 апреля (обязательно измените эту дату на ту, которая нужна вам), директории будут синхронизированы. В for a duration of поставьте Indefinitely (бесконечно)

Выберите Start a program, и укажите путь к .bat скрипту.
@echo off robocopy \\testnode1\C$\source\ \\testnode2\c$\dest\ /MIR /COPYALL /Z /B /J /R:3 /W:1 /REG /LOG+:C:\robocopy.log @echo on
Помимо журнала выполнения задания планировщика, robocopy будет писать собственный лог файл копирования в C:\robocopy.log. Если аккаунт из-под которого будет выполняться скрипт не имеет прав администратора, смените C:\robocopy.log на нужный вам путь.

Остальные настройки заполнять не надо. После нажатия на кнопку ОК, вас попросит ввести пароль от учетной записи, которую вы выбрали для запуска задания.
Если вы всё настроили правильно, директории должны начать синхронизироваться. 
Если у вас возникли проблемы с выполнением скрипта, то обязательно проверьте вкладку History вашей задачи

Отслеживание изменений в каталогах с помощью robocopy
В robocopy есть встроенный механизм отслеживания изменений в исходном каталоге (и их последующего копирования) и встроенный планировщик – параметры
/mon
и
/mot
.
-
/mon:N
– проверяет исходную директорию на предмет изменений каждую 1 минуту, и если изменений в директории больше чем N, то будет произведено копирование в целевую директорию. Если задан параметр /mot:Y, то изменения будут проверяться каждые Y минут. -
/mot:N
– проверяет исходную директорию на предмет изменений каждые N минут. Минимальное значение N = 1, в минутах. Если параметр /mon не задан, то будет считаться что /mon:1
.bat скрипт для зеркалирования с отслеживанием изменений с интервалом в 1 минуту. Этот скрипт нужно запускать из-под аккаунта с правами администратора.
@echo off robocopy \\testnode1\C$\source\ \\testnode2\c$\dest\ /MIR /COPYALL /Z /B /J /R:3 /W:1 /REG /LOG+:%appdata%\robocopy.log /mon:1 /mot:1
- Не нужно создавать задание в планировщике задач
- Подходит для непостоянного выполнения. Например, в течение нескольких часов, в таком случае запустить скрипт руками через CMD проще, чем создавать задание в планировщике
- Чтобы запустить .bat скрипт в фоновом режиме, нужно либо использовать VBS скрипт, либо стороннее ПО, например, NirCmd.
- Минимальный интервал поиска изменений и копирования – 1 минута. Для меньшего интервала нужно использовать PowerShell или bat скрипт.
Коды возврата (ошибки) robocopy
Ниже приведены стандартные коды возврата robocopy, которые можно использовать для обработки различных ошибок, которые возвращает утилита после выполнения действия копирования (кот возврата эта битовая маска).
Любое значение больше 7 говорит о том, что при копировании через robocopy возникла ошибка. Вы можете обрабатывать эти ошибки в bat файле:
Утилита robocopy имеет огромный функционал и позволяет гибко настроить операции копирования. Как альтернативу robocopy в PowerShell можно использовать командлет Copy-Item, который хоть и менее функционален, но работает с объектной моделью PowerShell, что может быть важно, если вы часто используете PowerShell или используете цепочки автоматизации с другими языками программирования.
Если тебе нужно не только локальное, а и удаленное резервное копирование файловой базы данных 1С, используя стандартные средства платформы виндовс, тогда читай ниже.
Не хотелось использовать сторонние утилиты, поэтому из интернета по кусочку вышел такой способ резервного копирования, в моем случае, файловой базы данных 1С на резервный ftp-сервер.
!У удаленного фтп сервера серый, динамический айпи, Поэтому я использовал сервис https://www.noip.com/ для постоянного доступа к серверу.
Сервис представляет собой получение внешнего «статического» айпи адреса, а точнее доменного имени.
Значит, поехали. Создаем и сохраняем файл с именем ftp_backup_DB_1C.bat
:: кодировка, если с ней у вас все норм, тогда ниже строка вам
:: не нужна
:: «убить» процесс 1С
taskkill /IM 1cv8.exe /F /T
:: перейти в дирректорию «винрар-архиватора», который будет архивировать папку, естественно, архиватор должен уже быть :: установлен
cd “C:\Program Files\WinRar\”
:: архивируем папку d:\Base_1C\WorkDB в папку C:\db\, не забудьте создать папку db по пути :: C:\ с результирующим именем :: WorkDB-Год_Месяц_День_Часы_Минуты
:: в итоге выходит наименование файла типа «WorkDB-2014-03-07_00-32.rar»
Rar a -agYYYY-MM-DD_HH-MM C:\db\WorkDB- “d:\Base_1C\WorkDB”
:: подключиться к фтп серверу ftpserver.no-ip.biz с настройками с файла Connect.txt, который :: лежит по локальному адресу :: C:\
ftp -n -s: C:\Connect.txt -i ftpserver.no-ip.biz
:: удалить уже не нужный нам архив с папки
del /f /q C:\db\*.*
А теперь создаем по пути C:\ файл Connect.txt с содержимым
:: перейти в папку 1C_DB_Sklad на фтп сервере
:: скопировать с локального компьютера на фтп сервер все, что находится в папке C:\db\, а у нас там :: архив базы данных
:: закрыть фтп соединение
Далее, в Планировщике заданий (например, в моем случаи виндовс платформы) я создал задачу, где в выборе Действия выбрал батник, а в рабочей папке я указал C:\
Таким способом у меня два сервера бекаплят базы данных как локально, так и друг на друга без каких-либо проблем.
Кстати, почему-то, переброс резервного архива базы данных через cmd отправляется намного быстрее, чем используя вручную Проводник.
!Ниже приведу листинг файлов на всякий случай
taskkill /IM 1cv8.exe /F /T
cd "C:\Program Files\WinRar\"
Rar a -agYYYY-MM-DD_HH-MM C:\db\WorkDB- "d:\Base_1C\WorkDB"
ftp -n -s:C:\Connect.txt -i ftpserver.no-ip.biz
del /f /q C:\db\*.*USER admin pass
cd 1C_DB_Sklad
mput C:\db\*.*
quitПротокол передачи файлов (FTP) был широко используемым протоколом для удаленной передачи файлов или данных в незашифрованном формате, что не является безопасным способом связи. Поскольку все мы знаем, что FTP совсем не безопасен, потому что все передачи происходят в незашифрованном тексте, и данные могут быть прочитаны кем угодно во время прослушивания пакетов в сети.

Таким образом, в основном FTP можно использовать в ограниченных случаях или в сетях, которым вы доверяете. Какое-то время SCP и SSH устраняли эту неоднозначность безопасности и добавляли зашифрованный уровень защиты при передаче данных между удаленными компьютерами.
SFTP (Secure File Transfer Protocol) по умолчанию работает по протоколу SSH на стандартном порту 22 для установления безопасного соединения. SFTP был интегрирован во многие инструменты GUI (FileZilla, WinSCP, FireFTP и так далее).
Эта статья познакомит вас с 10 примерами команд sftp, которые вы можете использовать через интерфейс командной строки.
Как подключиться к SFTP
[root@merionet ~]# sftp merionet@127.48.137.6 Connecting to 127.48.137.6... merionet@127.48.137.6's password: sftp>
Получение помощи
Оказавшись в командной строке sftp проверьте доступные команды, набрав ‘? ‘ Или ‘help’ в командной строке.
sftp> ? Available commands: cd path Change remote directory to 'path' lcd path Change local directory to 'path' chgrp grp path Change group of file 'path' to 'grp' chmod mode path Change permissions of file 'path' to 'mode' chown own path Change owner of file 'path' to 'own' help Display this help text get remote-path [local-path] Download file lls [ls-options [path]] Display local directory listing ln oldpath newpath Symlink remote file lmkdir path Create local directory lpwd Print local working directory ls [path] Display remote directory listing lumask umask Set local umask to 'umask' mkdir path Create remote directory put local-path [remote-path] Upload file pwd Display remote working directory exit Quit sftp quit Quit sftp rename oldpath newpath Rename remote file rmdir path Remove remote directory rm path Delete remote file symlink oldpath newpath Symlink remote file version Show SFTP version !command Execute 'command' in local shell ! Escape to local shell ? Synonym for help
Проверьте текущий рабочий каталог
Команда «lpwd» используется для проверки локального текущего рабочего каталога, а команда «pwd» – для проверки удаленного рабочего каталога.
sftp> lpwd Local working directory: / sftp> pwd Remote working directory: /merionet/
Список файлов
Перечисление файлов и каталогов как в локальной, так и в удаленной системе.
sftp> ls [На локальной] sftp> lls [На удаленной]
Загрузить файл
Поместите один или несколько файлов в удаленную систему.
sftp> put local.profile Uploading local.profile to /merionet/local.profile
Загрузить несколько файлов
Размещение нескольких файлов на удаленной системе.
sftp> mput *.xls
Скачать файлы
Получение одного или нескольких файлов в локальной системе.
sftp> get SettlementReport_1-10th.xls Fetching /merionet/SettlementReport_1-10th.xls to SettlementReport_1-10th.xls
Получить несколько файлов в локальной системе.
sftp> mget *.xls
Переключение каталогов
Переключение из одного каталога в другой в локальных и удаленных местах.
sftp> cd test [На локальной] sftp> lcd Documents [На удаленной]
Создать каталоги
Создание новых каталогов в локальных и удаленных местах.
sftp> mkdir test [На локальной] sftp> lmkdir Documents [На удаленной]
Удалить каталоги
Удалить каталог или файл в удаленной системе.
sftp> rm Report.xls [На локальной] sftp> rmdir sub1 [На удаленной]
Примечание: чтобы удалить любой каталог из удаленного расположения, каталог должен быть пустым.
Выход из sFTP Shell
Команда ‘!’ выкидывает нас в локальную оболочку, откуда мы можем выполнять команды Linux. Введите команду ‘exit’, после чего мы сможем увидеть подсказку sftp>.
sftp> ! [root@sftp ~]# exit Shell exited with status 1 sftp>
Рекомендуем
В локальных (да и глобальных) сетях файлы между системами обычно передаются с помощью протоколов SMB, FTP или HTTP. Проблема всех этих протоколов – сложности с докачкой больших файлов, которые могут усугубляться проблемами передачи данных по медленному или нестабильному каналу. При копировании файлов по этим протоколам обычно задействуется вся доступная пропускная способность канала связи между сервером и получателем, что может негативно сказаться на производительности сети и работе других приложения (не всегда возможно настроить корректные политики QoS на уровне сетевого оборудования). В этой статье мы рассмотрим возможность использования протокола BITS и командлетов PowerShell для копирования больших файлов через сеть по нестабильному или медленному каналу.
Протокол BITS
BITS или Background Intelligent Transfer service — (Фоновая интеллектуальная служба передачи) – это служба Windows, которая используется для передачи файлов между системами. С помощью протокола BITS можно передавать как скачивать, так и закачивать файлы. Именно по этому протоколу компьютеры скачивают файлы с серверов при выполнении автоматического обновлении Windows (в т.ч. при скачивании обновлений со WSUS сервера), при получении программ с SCCM точек распространения и т.д.
Преимущества протокола BITS:
- BITS — интеллектуальный протокол, который при работе способен регулировать используемую полосу канала связи, чтобы не оказывать влияния на другие сетевые приложения и сервисы. BITS может использовать только незанятую полосу пропускания канала и динамически изменять скорость передачи данных в процессе работы (если другие приложения увеличат нагрузку на сеть, BITS может уменьшить скорость передачи данных по сети);
- Загрузка файла может идти в фоновом режиме, незаметно для пользователя;
- Задание BITS в режиме докачки будет автоматически продолжено даже в случае обрыва канали связи между компьютером и клиентом, или после перезагрузки компьютера;
- В любой момент вы можете приостановить или возобновить загрузку по BITS без потери данных;
На заметку. Возможность перезапуска процедуры копирования файлов по сети имеется также и в утилите robocopy.exe, позволяющей возобновить закачку файла в случае обрыва соединения.
- BITS позволяет управлять приоритетами задач загрузки;
- Передача файлов между компьютерами происходит по портам 80 (HTTP) или 443 (HTTPS), поэтому вам не придется открывать дополнительных портов на межсетевых экранах. Например, 445 порта, по которому идет копирование при использовании протокола SMB (не забудьте, что в старых версиях протокола SMB 1.0 много уязвимостей);
- На стороне получателя и сервера не обязательно требуется наличие развернутого IIS сервера.
Таким образом, BITS является оптимальным протоколом для передачи больших файлов по медленным и нестабильным сетям (спутниковый канал, GPRS соединение и т.д.).
Требования к ОС и версии PowerShell
Для работы по рассматриваемому сценарию нам потребуется ОС не ниже Windows Vista или Windows Server 2008, и PowerShell не ниже версии 2.0. Современные версии Windows 10 и Windows Server 2016 / 2012 R2 протокол BITS полностью поддерживают.
Совет. Возможно использовать и Windows Server 2003. В этом случае придется установить специальное обновлений KB 923845 и PowerShell V2.0.
Поддержка BITS требуется как на стороне клиента, так и сервера.
Как скачать файл по протоколу BITS с помощью PowerShell
Предполагается, что к данному URL адресу разрешен анонимный доступ (в дальнейшем мы рассмотрим доступ к URL адресу с аутентификацией).
В первую очередь загрузите в сессию PowerShell модуль поддержки BITS:
После загрузки модуля, вы можете вывести список всех доступных команд модуля BitsTransfer:

Как вы видите, доступно всего 8 командлетов:
- Add-BitsFile
- Complete-BitsTransfer
- Get-BitsTransfer
- Remove-BitsTransfer
- Resume-BitsTransfer
- Set-BitsTransfer
- Start-BitsTransfer
- Suspend-BitsTransfer
Синхронная передача файлов между компьютерами с помощью BITS
Start-BitsTransfer –source _http://10.2.2.148/erd65_32.iso -destination c:\temp

Сообщение This is a file transfer that uses the Background Intelligent Transfer service (BITS) говорит о том, что начато скачивание указанного файла по протоколу BITS.
В данном примере командлет выполняет загрузку файла в синхронном режиме. Закачка файла напоминает обычную процедуру копирования через проводник или с помощью PowerShell командлета Copy-Item. При это на экран выводится прогресс бар, отображающий статус выполнения закачки. При перезагрузке компьютера, закачка возобновлена не будет (вам заново скачивать весь файл).
Используем BITS для асинхронного копирования больших файлов по сети
Процесс загрузки файлов через BITS можно запустить и в асинхронном режиме, для этого к рассмотренной выше команде нужно добавить параметр –asynchronous. В этом режиме, если что-то случится в процессе загрузки файла (перезагрузка сервера, клиента, обрыв канала связи и пр.), задание автоматически продолжится после восстановления доступности источника и загрузка файла продолжится с момента прерывания связи.
Start-BitsTransfer -source _http://10.2.2.148/erd65_32.iso -destination c:\temp -asynchronous

Важно. По умолчанию Start-BitsTransfer работает с приоритетом Foreground (наивысший из возможных). Предполагается, что загрузка файла, запущенная в этом режиме будет соревноваться с другими процессами за полосу пропускания канала. Чтобы избежать этого, нужно явно указать в качестве аргумента команды любой другой приоритет, например, -Priority low:
Start-BitsTransfer -source _http://10.2.2.148/erd65_32.iso -destination c:\temp -asynchronous -Priority low
Асинхронное задание BITS выполняется в фоновом режиме, а на экран не выводится процесс выполнения команды загрузки файла. Статус задания BITS можно получить из консоли PowerShell с помощью команды Get-BitsTransfer:
Команда возвращает статус передачи (в данном случае видно, что передача окончена -Transferred), информацию о количестве переданных байт, общем размере файла, времени создания и завершения задания BITS.
Вы можете просмотреть статус всех заданий BITS, запущенных на компьютере, в табличной форме:
При использовании асинхронного режима передачи, в целевом каталоге создается временный файл с расширением TMP (по умолчанию скрыт в проводнике). Чтобы конвертировать его в исходный тип файла (который хранится на сервере-источнике), нужно выполнить команду Complete-BitsTransfer:

Задание загрузки BITS после этого считается завершенным и пропадает из списка заданий.
Вы можете загрузить локальный файл в общую сетевую папку на удаленном сервере. Для этого используется следующая команда (для удобства можно указать имя задания копирования):
Start-BitsTransfer -Source C:\iso\w101809.iso -Destination \\ekt-fs1\iso -Asynchronous -DisplayName CopyISOtoEKT
Чтобы временно приостановить задание BITS, выполните:
Для продолжения задания используется командлет Resume-BitsTransfer:
Вы можете добавить в задание BITS дополнительные файлы с помощью командлета Add-BitsFile:
Чтобы удалить все задания загрузки BITS на компьютере (в том числе запущенные другими пользователями), выполните команду:
Вы не сможете отменить задания BITS, запущенные из-под System (ошибка 0x80070005 Unable to cancel job). Для отмены такого задания нужно выполнить команду Remove-BitsTransfer из-под SYSTEM.
Если сервер, на котором хранится файл, требует аутентификации пользователя, вы можете вызвать окно, в котором нужно указаны учетные данные для доступа к ресурсу:
Start-BitsTransfer -source _http://10.2.2.148/erd65_32.iso -destination c:\temp -asynchronous -Priority low -Authentication NTLM -Credential Get-Credential

Чтобы было удобнее отслеживать результаты выполнения задания BITS, можно воспользоваться простым скриптом, который отслеживает выполнение задания и раз в несколько секунд выводит процент выполнения загрузки на экран. По окончании загрузки файла, скрипт автоматически преобразует TMP файл в исходный формат:
Копирование всего содержимого общей сетевой папки через BITS
Как мы уже говорили, для работы BITS не нужен Web сервер, это означает, что вы можем скопировать файлы непосредственно с других Windows-компьютеров или общих сетевых папок:
Start-BitsTransfer -Source \\msk-rep01\os\rhel-server-7.0-x86_64-dvd.iso -Destination c:\temp -Asynchronous
Командлеты модуля BitsTransfer не умеют рекурсивно копировать все файлы и папки из определённой директории, или файлы, которые используются другими программами. Чтобы из указанной сетевой папки скопировать все файлы с подкаталогами, воспользуемся такой функцией (можно предварительно проверить, существует ли целевой каталог и создать его):
Загрузка файла на HTTP сервер с помощью PowerShell и BITS

Если вы используете анонимную авторизацию, необходимо разрешить анонимным пользователям запись в каталог на уровне NTFS. Если загрузка файлов выполняется под авторизованными пользователями, им необходимо предоставить RW разрешения на папку загрузки.
Чтобы загрузить файл на HTTP сервер с помощью протокола BITS, выполните команду:
Start-bits –source c:\iso\win2016.iso -destination http://10.10.1.200/MEDVImages/win2016.iso –Transfertype Upload
Обратите внимание, что по-умолчанию IIS позволяет загружать файлы до 30 Мб. Чтобы разрешить загружать большие файлы, нужно в файле web.config изменить значение в параметре maxAllowContentLength.
Таким образом, использование возможностей BITS представляет собой отличную альтернативу традиционному копированию файлов по сети по протоколу SMB. В отличии от последнего, задание копирования файлов BITS выполняется несмотря на разрывы связи и перезагрузки компьютеров, и не так загружает канал связи, не мешая работе других сетевых приложений и пользователей. Протокол BITS может быть оптимальным решением для передачи по WAN сети больших файлов ISO образов и файлов виртуальных машин (vmdk, vhdx).
Using copy command, we can copy files from one directory to another directory. This command is similar to the Linux cp command, but it does not match with the full functionality of cp. Windows copy command can be used to copy files only, we can’t copy directories.
The syntax and usecases of copy command are explained below with examples.
Copy the contents of a file to another file
copy sourceFile destinationFile
Example: To copy a file from c:\data\file1.doc to D:\backup\file2.doc
copy c:\data\file1.doc D:\backup\file2.doc
If the destination file already exists you will be prompted for confirmation. To suppress this confirmation you can use /Y switch with copy command. This would be useful if you are executing copy command from a batch file.
c\> copy /Y c:\dir1\subdir1\file1.txt c:\dir2\subdir2\file2.txt
Copy file to another directory
When we specify a directory path as the destination, the files will be copied with the same name. We can assign a different name by specifying the new name in the destination path. Example is shown below.
To copy the file 1.doc loated at c:\data\documents to the directory c:\data\newdocs
c\> copy c:\data\documents\1.doc c:\data\newdocs\
Copy files with white space in name
If the file name has white space within it, we can wrap up the name in double quotes.
Example: To copy file, my resume.doc to another folder
copy "my resume.doc" D:\data\
Copy multiple files
We can’t specify multiple file names in copy command. However, we can use wildcards to identify a group of files and then copy all of them in a single command.
For example, to copy all excel files from current folder to another folder F:\backup
copy *.xls F:\backup\
To copy all files in current folder to another folder
copy * D:\dir1\dir2
Use of environment variables
Copy D:\file.pdf %HOMEPATH%\Documents\
You may also want to read
После эксплуатации различных “бесплатных” обработок и скриптов решил написать свой cmd-файл для ежедневного архивирования баз 1С.
Работает на конфигурациях, где есть процедуры “ЗавершитьРаботуПользователей” и “РазрешитьРаботуПользователей” (т.е. во всех типовых, в нетиповые данные модули можно скопировать из типовых).
Сохраняет файлы как локально так и на удаленном файловом сервере. Автоматически удаляет старые архивы и копирует на удалённый сервер отсутствующие.
Расписание задается установкой соответствующего задания (запуска cmd-файла по времени) в планировщике задач Windows.
Для борьбы с зависшими сеансами, рекомендуется настроить в режиме конфигуратора параметры информационной базы: “Время засыпания пассивного сеанса” и “Время завершения спящего сеанса”.
Тескт CMD-файла в кодировке WIN
@echo off
SET SRV=localhost
SET BASE=UT82
SET User1C=Automat
SET PWDUser1C=Automat
SET BackUpPath=F:\BackUpDataBase\“’_10.3
SET BackUpPath2=\\SRV_BackUp\Backup_1C\“’_10.3
SET Days_Archive=365
SET Days_Archive2=30
SET DriveNet=U:
SET UserNet=Domen\User_SRV_BackUp
SET PWDUserNet=PWD_User_SRV_BackUpSET FileTime=%TIME:~0,-3%
SET FileTime=%FileTime::=%
SET FileTime=%FileTime: =0%
SET BackUpFileName=%BASE%-%date:~-4%%date:~3,2%%date:~0,2%-%FileTime%.dt
SET BackUpPathString=%BackUpPath%\%BackUpFileName%
Описание строк файла
SET SRV=localhost - путь к серверу 1С
SET BASE=UT82 - имя базы на сервере 1С
SET User1C=Automat - имя пользователя с правами администратора
SET PWDUser1C=Automat - пароль пользователя с правами администратора
SET BackUpPath=F:\BackUpDataBase\“’_10.3 - путь к папке для архивирования на локальном компьютере
SET BackUpPath2=\\SRV_BackUp\Backup_1C\“’_10.3 - путь к папке для архивирования на удаленном компьютере
SET Days_Archive=365 - число дней хранения архивов на локальном компьютере
SET Days_Archive2=30 - число дней хранения архивов на удаленном компьютере
SET DriveNet=U: - имя подключаемого диска для пути BackUpPath2
SET UserNet=Domen\User_SRV_BackUp - пользователь для доступа к удаленному серверу архивирования
SET PWDUserNet=PWD_User_SRV_BackUp - пароль пользователя для доступа к удаленному серверу архивирования
Блок получения пути и имени файла архива по имени базы 1С, даты и времени архивирования:
SET FileTime=%FileTime::=%
SET FileTime=%FileTime: =0%
SET BackUpFileName=%BASE%-%date:~-4%%date:~3,2%%date:~0,2%-%FileTime%.dt
SET BackUpPathString=%BackUpPath%\%BackUpFileName%
Вызов 1С для завершения работы пользователей (odinCdir - глобальная переменная - путь к папке 1С\bin):
call "%odinCdir%\1cv8.exe" ENTERPRISE /S"%SRV%\%BASE%" /WA- /N"%User1C%" /P"%PWDUser1C%" /DisableStartupMessages /C"‡ ўҐаиЁвмђ Ў®вгЏ®«м§®ў ⥫Ґ©" /UC"Љ®¤ђ §аҐиҐЁп"
Вызов 1С для архивирования:
call "%odinCdir%\1cv8.exe" DESIGNER /S"%SRV%\%BASE%" /WA- /N"%User1C%" /P"%PWDUser1C%" /DisableStartupMessages /UC"Љ®¤ђ §аҐиҐЁп" /DumpIB "%BackUpPathString%"
Вызов 1С для разрешения работы пользователей:
call "%odinCdir%\1cv8.exe" ENTERPRISE /S"%SRV%\%BASE%" /WA- /N"%User1C%" /P"%PWDUser1C%" /DisableStartupMessages /C"ђ §аҐиЁвмђ Ў®вгЏ®«м§®ў ⥫Ґ©" /UC"Љ®¤ђ §аҐиҐЁп"
Удаление файлов из папки "BackUpPath" с датой больше "Days_Archive" дней:
forfiles /P "%BackUpPath%" /M *.dt /c "cmd /c del @path /F /Q" /D -%Days_Archive%
Подключение сетевого диска (необходимо т.к. forfiles - не работает с UNC-путями):
NET USE %DriveNet% %BackUpPath2% /USER:%UserNet% %PWDUserNet%
Копирование *.dt-файлов на удаленный сервер из локального каталога архивирования с датой не старше дней "Days_Archive2" (вдруг их там кто-то случайно подтёр :) ):
robocopy "%BackUpPath%" "%DriveNet%" "*.dt" /MAXAGE:%Days_Archive2% /Z /R:5
ping -5 127.0.0.1 - пауза
Удаление файлов из папки "BackUpPath2" с датой больше "Days_Archive2" дней:
forfiles /P "%DriveNet%" /M *.dt /c "cmd /c del @path /F /Q" /D -%Days_Archive2%
ping -5 127.0.0.1 -пауза
NET USE %DriveNet% /DEL /Y - отключение сетевого диска
______________________________________________________________________________
Пример архивирования для файловой базы 1С
SET BASE_PATH=F:\BASE82\BP82_Extern
SET BASE=BUH_Extern
SET User1C=Automat
SET PWDUser1C=Automat
SET BackUpPath=F:\BackUpDataBase\ЃгеЈ «вҐаЁп_2.0_(ўҐиЁҐ)
SET BackUpPath2=\\SRV_BackUp\Backup_1C\ЃгеЈ «вҐаЁп_2.0_(ўҐиЁҐ)
SET Days_Archive=365
SET Days_Archive2=30
SET DriveNet=U:
SET UserNet=Domen\User_SRV_BackUp
SET PWDUserNet=PWD_User_SRV_BackUpSET FileTime=%TIME:~0,-3%
SET FileTime=%FileTime::=%
SET FileTime=%FileTime: =0%
SET BackUpFileName=%BASE%-%date:~-4%%date:~3,2%%date:~0,2%-%FileTime%.dt
SET BackUpPathString=%BackUpPath%\%BackUpFileName%
* – Вопросы с кодировкой (русскими именами папок) решаются с помощью Far (клавиша F8 – смена кодировки) или Word (файл открывается с кодировкой MS-DOS)

Доброе времени суток. Уважаемые читатели и гости, крупного 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 килобайта, но это не уменьшает ее мощи и функционала.





