Копирование файлов windows server

Обновлено: 03.07.2024

Подключение к серверу посредством SSH – один из основных методов управления *nix серверами. Довольно часто возникает необходимость загрузить файл на удаленный сервер, либо выгрузить, и других средств кроме SSH-подключения нет. К счастью, копирование файлов через защищенное соединение – одна из штатных функций этого протокола и реализуется с помощь отдельной команды scp в Linux-системах, либо с помощью pscp.exe, входящей в состав SSH-клиента Putty для операционной системы Windows.

Работаем на ОС семейства Linux

Используем следующий формат команд:

scp [модификатор] [источник] [место_назначения]

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

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

Если собрать все вместе, то скопировать локальный файл /home/user/file.tgz в домашний каталог пользователя root удаленного сервера 123.123.123.123 можно командой:

scp /home/user/file.tgz root@123.123.123.123:/root

Чтобы скачать этот же файл с удаленного сервера:

scp root@123.123.123.123:/root/file.tgz /home/user

За одну операцию можно скопировать несколько файлов, для этого необходимо указать их в качестве источника, разделив пробелом – местом назначения будет считаться последний указанный параметр. Например, загрузить файлы file1.tgz и file2.tgz из локального каталога на удаленный сервер позволит команда:

scp file1.tgz file2.tgz root@123.123.123.123:/root

Для копирования каталога потребуется задействовать модификатор команды –r. Копируем локальный каталог /home/user/dir на удаленный сервер:

scp –r /home/user/dir root@123.123.123.123:/root

В тех случаях, когда SSH-сервер работает на нестандартном порту, поможет опция –P. Если нужно подключиться через порт 10022:

scp –P 10022 /home/user/file.tgz root@123.123.123.123:/root

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

Работаем на ОС семейства Windows

При использовании операционной системы Windows и Putty в качестве клиента, формат команды остается тот же, меняется только название исполняемого файл и используется синтаксис указания путей к файлам и каталогам Windows при указании источника или места назначения. Запускаем командную строку (cmd.exe) или PowerShell, переходим в каталог, где расположен файл pscp.exe вводим команду:

pscp.exe C:Tempfile.tgz root@123.123.123.123:/root

В случае запуска из какой-либо другой папки понадобится указать полный путь к pscp.exe. Если в каком-либо из путей присутствуют пробелы, используются двойные кавычки — “Путь к файлу”:

“C:Program FilesPuttypscp.exe” C:Tempfile.tgz root@123.123.123.123:/root

Как и в случае с scp, запустив pscp.exe без параметров, можно увидеть краткую справку по синтаксису команды и перечень поддерживаемых модификаторов.

Запуск команд на удаленном сервере через SSH-подключение

Протокол SSH, помимо работы в интерактивном режиме, поддерживает также разовый запуск команд или скриптов на удаленном сервере.

Работаем на ОС семейства Linux

ssh [пользователь]@[сервер] ‘[команда]’

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

Например, получим информацию об установленной на удаленном сервере операционной системе:

ssh root@123.123.123.123 ‘uname -a’

Чтобы запустить несколько команд за одно подключение, можно использовать символ “;” в качестве разделителя. Проверим сетевые настройки и активные сетевые подключения на удаленном сервере:

ssh root@123.123.123.123 ‘ifconfig; netstat -anp tcp’

В случае, если потребуется запустить на удаленном сервере локальный файла сценария, потребуется в SSH-подключении вызвать командный интерпретатор в режиме исполнения сценария (например, bash с ключом -s), и на стандартный ввод передать ему файл сценария. Выглядеть эта конструкция будет так:

ssh root@123.123.123.123 ‘bash -s’ < /home/user/myscript.sh

В результате локальный файл /home/user/myscript.sh исполнится на удаленном сервере.

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

Работаем на ОС семейства Windows

Если мы подключаемся к удаленному серверу с компьютера, работающего на операционной системе Windows, то нам снова потребуется обратиться к терминальному клиенту Putty, в состав которого входит исполняемый файл plink.exe. Работать с этим файлом необходимо из командной строки (cmd.exe) или из PowerShell.

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

plink.exe [сервер] -ssh -l [пользователь] “[команда]”

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

plink.exe 123.123.123.123 -ssh -l root “ifconfig”

Как и при работе с командой SSH в Linux, plink.exe позволяет использовать “;” в качестве разделителя для запуска нескольких команд:

plink.exe 123.123.123.123 -ssh -l root “ifconfig; netstat -anp tcp”

А запуск команд из локального файла можно реализовать с помощью дополнительного ключа -m:

Копирует один или несколько файлов из одного расположения в другое.

В консоли восстановления можно также использовать команду Копировать с другими параметрами. дополнительные сведения о консоли восстановления см. в разделе Windows среды восстановления (Windows RE).

Синтаксис

Параметры

Параметр Описание
/d Позволяет сохранить копируемые зашифрованные файлы в виде расшифрованных файлов в месте назначения.
/v Проверяет, правильно ли записаны новые файлы.
/n Использует короткое имя файла (если доступно) при копировании файла с именем длиннее восьми символов или с расширением имени файла длиннее трех символов.
/y Подавляет запрос на подтверждение перезаписи существующего целевого файла.
/-и Выводит запрос на подтверждение перезаписи существующего целевого файла.
/z Копирует сетевые файлы в перезапускаемый режим.
/a Указывает текстовый файл ASCII.
/b Указывает на двоичный файл.
<source> Обязательный. Указывает расположение, из которого необходимо скопировать файл или набор файлов. Источник может состоять из буквы диска и двоеточия, имени каталога, имени файла или их сочетания.
<destination> Обязательный. Указывает расположение, в которое необходимо скопировать файл или набор файлов. Назначение может состоять из буквы диска и двоеточия, имени каталога, имени файла или их сочетания.
/? Отображение справки в командной строке.

Remarks

Можно скопировать текстовый файл ASCII, в котором используется символ конца файла (CTRL + Z), чтобы указать конец файла.

Если параметр /a предшествует или следует за списком файлов в командной строке, он применяется ко всем файлам, перечисленным до тех пор, пока не встретится копия . В этом случае /b применяется к файлу, предшествующему /b.

Действие /a зависит от его расположения в строке командной строки: - Если после Source указано значение /a , команда Copy обрабатывает файл как ASCII-файл и копирует данные, предшествующие первому символу конца файла (Ctrl + Z). - Если параметр /a следует за назначением, команда Copy добавляет символ конца файла (Ctrl + Z) в качестве последнего символа файла.

Если /b указывает интерпретатору команд считывать число байтов, указанное размером файла в каталоге. /b — это значение по умолчанию для Copy, если только копирование не объединяет файлы.

Если /b предшествует или следует за списком файлов в командной строке, он применяется ко всем файлам в списке до тех пор , пока не встретится параметр /a. В этом случае /a применяется к файлу, предшествующему /a.

Действие /b зависит от его позиции в командной строке:-if /b следует за источником, команда Copy копирует весь файл, включая любой символ конца файла (Ctrl + Z). -If /b следует за назначением, команда Copy не добавляет символ конца файла (Ctrl + Z).

Если в переменной среды копикмд предустановлен параметр /y , его можно переопределить с помощью /-и в командной строке. По умолчанию при замене этого параметра выводится запрос, если команда Copy не выполняется в пакетном скрипте.

Чтобы добавить файлы, укажите один файл для назначения, но несколько файлов для источника (используйте символы-шаблоны или формат файла file1 + file2 + файл3 ).

Если во время фазы копирования теряется соединение (например, если сервер переходит в автономный режим), можно использовать копию/z , чтобы возобновить подключение после восстановления подключения. Параметр /z также отображает процент завершения операции копирования для каждого файла.

Имя устройства можно заменить одним или несколькими экземплярами источника или назначения.

Если назначением является устройство (например, COM1 или LPT1), параметр /b копирует данные на устройство в двоичном режиме. В двоичном режиме copy/b копирует все символы (включая такие специальные символы, как CTRL + C, CTRL + S, CTRL + Z и ввод) на устройство в виде данных. Однако если параметр /b не указан, данные копируются на устройство в режиме ASCII. В режиме ASCII специальные символы могут привести к объединению файлов во время процесса копирования.

Если в источнике указано несколько файлов, команда Copy объединяет их в один файл, используя имя файла, указанное в поле назначение. Команда Copy предполагает, что Объединенные файлы являются файлами ASCII, если не используется параметр /b .

Чтобы скопировать файлы длиной 0 байт или скопировать все файлы и подкаталоги каталога, используйте команду xcopy.

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

Где запятые указывают, что конечный параметр был намеренно оставлен.

Примеры

Чтобы скопировать файл с именем memo.doc для letter.doc на текущем диске и убедиться, что символ конца файла (Ctrl + Z) находится в конце скопированного файла, введите:

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

Если каталог птиц не существует, файл Renamed . Typ копируется в файл с именем птиц , расположенный в корневом каталоге на диске C.

Чтобы объединить Mar89. rpt, Apr89. rpt и May89. rpt, расположенные в текущем каталоге, и поместить их в файл с именем Report (также в текущем каталоге), введите:

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

Чтобы объединить все файлы в отчете, если файл с именем Report уже существует, введите:

Чтобы объединить все файлы в текущем каталоге, имеющие расширение имени файла .txt, в один файл с именем Combined.doc, введите:

Чтобы объединить несколько двоичных файлов в один файл, используйте подстановочные знаки, включите /b. это не доWindows расинтерпретации CTRL + Z как символа конца файла. Например, введите:

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

date

13.05.2020

directory

PowerShell

comments

комментариев 6

PowerShell командлет Copy-Item используется для копирования файлов между локальными, сетевыми каталогами или между компьютерами по сети через WinRM. Командлет Copy-Item предоставляет большое количество опций, которые можно использовать в разных сценариях копирования файлов и каталогов (по своим возможностям этот командлет почти не уступает утилите robocopy). Например:

  • перезапись файлов (override)
  • фильтрация по имени/шаблону
  • исключение по имени/шаблону
  • Verbose режим
  • Копирование файлов с/на удаленные компьютеры

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

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

Чтобы скопировать один файл 1.txt из каталога C:\SourceFolder\ в F:\DestFolder\, выполните:

Copy-Item -Path "C:\SourceFolder\1.txt" -Destination "F:\DestFolder\1.txt"

Можно использовать сокращенный синтаксис командлета, пропустив указание параметров Path и Destination:

cpi "C:\SourceFolder\1.txt" "F:\DestFolder\1.txt"

Теперь скопируем каталог C:\SourceFolder\folder в F:\DestFolder\folder. В папке folder находится файл 1.txt. Обратите внимание что без ключа –Recurse, папка folder копируется без содержимого:

Copy-Item -Path "C:\SourceFolder\folder" -Destination "F:\DestFolder\folder" -Recurse

С помощью Copy-Item также можно просто объединить файлы из несколько директорий в одну (слияние директории), для этого нужно перечислить директории в ключе –Path:

Copy-Item -Path "C:\SourceFolder\*", "C:\SourceFolder2\*", "C:\SourceFolder3\*" -Destination "F:\DestFolder\"

Копирование с заменой и копирование с заменой read-only файлов

copy-item DirectoryExists

Для перезаписи файла с атрибутом read-only, нужно использовать ключ -Force. Если его не использовать, вы получите ошибку “отказано в доступе по пути… CopyFileInfoItemUnauthorizedAccessError”.

copy-item CopyFileInfoItemUnauthorizedAccessError

Чтобы скопировать файл с перезаписью файла с read-only атрибутом используйте параметр Force.

Copy-Item -Path "C:\SourceFolder\1.txt" -Destination "F:\DestFolder\1.txt" -Force

Совет. Чтобы не путаться, ключ –Force можно рассматривать как ключ для копирования с заменой.

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

Copy-Item (Join-Path "C:\SourceFolder\" "*") "F:\DestFolder\" -Exclude (Get-ChildItem "F:\DestFolder\") -Recurse

Этот скрипт скопирует все файлы и папки из C:\SourceFolder в F:\DestFolder без замены файлов уже существующих в F:\DestFolder

Копирование с фильтрацией по шаблону

С помощью Copy-Item можно скопировать файлы/директории выбранные с помощью wildcard символа * или с помощью символа ?. Также поддерживаются некоторые регулярные выражения

Для примера возьмём такую структуру файлов:

source

Выполним копирование командой:

Copy-Item -Path "C:\SourceFolder\fol*" -Destination "F:\DestFolder\"

Результат в F:\DestFolder\

copy-item replace

Теперь чистим папку назначения и выполняем:

Copy-Item -Path "C:\SourceFolder\folder3" -Destination "F:\DestFolder\"

result

Папка без цифры в окончании не скопировалась, потому что folder1 подразумевает что после folder будет как минимум еще 1 символ между 0 и 3

Исключение файлов при копировании

С помощью ключа –Exclude можно исключить файлы при копировании. Например, следующай команда скопирует все файлы кроме файлов с расширением txt.

Copy-Item -Path "C:\SourceFolder\*" -Destination "F:\DestFolder\" -Recurse -Force -Exclude "*.txt"

Аналогичным же образом можно применить ключ –Include, например

Copy-Item -Path "C:\SourceFolder\*" -Destination "F:\DestFolder\" -Recurse -Force -Include "*.txt"

Скопирует только txt файлы. Хотя для простоты гораздо удобнее использовать при копировании вид -Path "C:\SourceFolder\*.txt" .

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

Copy-File может копировать не только по SMB протоколу, но и через WinRM (WSMan).

Создайте новую сессию с компьютером testnode1 и выполните копирование в её контексте:

$session = New-PSSession -ComputerName testnode1
Copy-Item -Path "C:\SourceFolder\*" -ToSession $session -Destination "C:\SourceFolder\" -Recurse -Force

Эта команда скопирует файлы с локального компьютера из директории C:\SourceFolder на компьютер testnode1 в C:\SourceFolder\.

Примечание. Доступность WSMan на удаленном компьютере можно проверить с помощью командлета Test-WSMan.

Test-WSMan -ComputerName testnode1

Test-WSMan

Если WSMan не настроен, вы можете выполнить его быструю конфигурацию. Для этого откройте командную строку с правами администратора и выполните winrm quickconfig

winrm quickconfig

Также можно копировать и через обычные сетевые SMB шары, для этого просто используйте UNC формат сетевого пути.

Copy-Item -Path "C:\SourceFolder\*" -Destination "\\testnode1\C$\copy_tutorial\"

Можно скопировать файл с удаленного компьютера. Принцип такой же, как и при копировании файлов на удаленный компьютер, за исключением параметра –ToSession, вместо него нужно использовать –FromSession:

$session = New-PSSession -ComputerName testnode1
Copy-Item -FromSession $session -Path "C:\SourceFolder\*" -Destination "F:\DestFolder\" -Recurse -Force

Эта команда скопирует содержимое папки C:\SourceFolder\ с компьютера testnode1 на локальный компьютер в директорию F:\DestFolder

Ключ PassThru

Командлет Copy-Item (как и многие другие командлеты PowerShell) не возвращает результатов в консоль. Параметр PassThru применяется скриптах, или для лог-файлов, когда нужно получить список скопированных файлов и работать с ним дальше. Рассмотрим пример

$items = Copy-Item -Path "C:\SourceFolder\*" –Destination "\\testnode1\C$\copy_tutorial\" -PassThru

Переменная $items будет содержать список скопированных файлов, с которым вы можете работать дальше.Это значит что вы можете напрямую работать с этими файлами. Например выполнив команду Remove-Item $items[0] , вы удалите директорию folder.

copy-item passthru

Ключ Verbose

При использовании ключа -Verbose вы получите подробный лог операций копирования. Например, вывод команды

Copy-Item -Path "C:\SourceFolder\*.txt" -Destination "F:\DestFolder\" -Recurse -Force -Verbose

copy-item verbose лог

Несколько полезных скриптов с Copy-Item

Скопировать только файлы:

Get-ChildItem "C:\SourceFolder" -File -Recurse | Copy-Item -Destination "F:\DestFolder"

Скопировать структуру папок, без файлов:

$path = Get-ChildItem "C:\SourceFolder" -Recurse | ?
$dest = "F:\DestFolder\"
$parent = $path[0].Parent.Name
$path | foreach $_.FullName -match "$parent.+"
New-Item -ItemType directory ($dest + $Matches[0])
>

Copy-Item очень простой и удобный в использовании командлет PowerShell для выполнения операций копирования и перемещения файлов. В сочетании с другими инструментами PowerShell, Copy-Item также является мощным инструментом для написания скриптов.

ОС Windows Server содержит средство резервного копирования, помогающее сэкономить на покупке стороннего программного продукта. Настройка Windows Server backup занимает минимум времени.

backup

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

Для установки Windows Server backup необходимо выполнить последовательно действия:

  1. Откройте Диспетчер серверов. В ней на панели мониторинга необходимо нажать Добавить роли и компоненты.
  2. На вкладке Перед началом работы используйте Далее.
  3. Выберите Установка ролей или компонентов и жмите Далее.
  4. Установите переключатель Выберите сервер из пула серверов и найдите подходящий сервер, куда будет устанавливаться средство копирования. Жмите Далее.
  5. На вкладке Выбор ролей сервера нажимайте Далее.
  6. На вкладке Выбор компонентов необходимо выбрать Система архивации данных Windows Server и нажать Далее.
  7. На вкладке Подтверждение установки компонентов используйте кнопку Установить. Дождитесь завершения установки.
  8. Нажмите Закрыть, чтобы окончательно выйти из окна мастера, используемого для добавления ролей и компонентов.

Установка компонентов windows backup

Рис. 1. Установка компонентов

Создание копии

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

Откройте Диспетчер серверов, из меню Средства выберите команду Система архивации данных Windows Server.

Запуск средства резервного копирования windows backup

Рис. 2. Запуск средства резервного копирования

Основное окно средства копирования показано на рис. 3. На данный момент резервная копия не создавалась.

Система архивации данных Windows Server windows backup

Рис. 3. Система архивации данных Windows Server

Выберите команду Расписание архивации (данная команда будет доступна на панели справа после перехода в раздел Локальная архивация на панели слева). Для настройки расписания в Windows Server backup следуйте следующим инструкциям:

Конфигурация windows backup

Рис. 4. Конфигурация

Время создания архива windows backup

Рис. 5. Время создания архива

выбор места хранения копий windows backup

Рис. 6. Где хранить копии?

Выбор диска назначения windows backup

Рис. 7. Выбор диска назначения

выбор диска назначения windows backup

Рис. 8. Выберите диск и нажмите Далее.

Выбор диска назначения windows backup

Рис. 9. Сводка

форматирование диска windows backup

Рис. 10. Форматирование диска для архивации

Время первой архивации windows backup

Рис. 11. Время первой архивации

Широкий спектр услуг
по выделенным северам
и мультиклауд-решениям Конфигурация VPS и бесплатный тест уже через 2 минуты Организация вашей IT-инфраструктуры на основе мультиклауд-решения

Восстановление из резервной копии

Для восстановления из копии нужно нажать команду Восстановление на панели Действия (см. рис. 3).

Сперва нужно определить, где находится архив — на этом сервере или в другом расположении (рис. 12).

12.jpg

Рис. 12. Выбор расположения архива

Выберите дату создания архива (рис. 13).

выбор даты архива windows backup

Рис. 13. Выбор даты архива

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

windows backup

Рис. 14. Что нужно восстановить

Если вы выбрали первый вариант, далее мастер предоставит вам возможность отметить файлы и папки, подлежащие восстановлению. На рис. 15 показано, что будут восстановлены папки , inetpub и php .

выбор файлов windows backup

Рис. 15. Выбор файлов и папок

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

Параметры восстановления windows backup

Рис. 16. Параметры восстановления

Сводка по восстановлению windows backup

Рис. 17. Сводка по восстановлению

Процесс восстановления windows backup

Рис. 18. Процесс восстановления

Немного математики

Резервное копирование данных Windows Server не единственное возможное решение. Платформа Xelent предлагает клиентам услугу по созданию резервных копий. Все, что вам нужно — включить создание резервной копии непосредственно в панели управления сервером. Больше никаких сложных настроек выполнять не нужно.
Стоимость услуги очень просто рассчитать, используя формулу Z = G * S * (N / 7), где G — стоимость услуги берется за 1 гигабайт, S — суммарный объем всех дисков сервера, N — глубина хранения копий. Например, стоимость 28 дней хранения резервных копий сервера с дисковым объемом 70 Гб составит всего 840 рублей в месяц — доступная плата за безопасность данных и ваше спокойствие. Минимально за сервер придется заплатить всего 210 рублей в месяц — за 7 дней хранения.

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

В нашем самом простом случае, когда на сервере не было, по сути, реальных данных, его резервная копия заняла 31 Гб (см. рис. 4). Размер основного жесткого диска нашего сервера — 70 Гб. Если вы добавите еще один жесткий диск SAS такого же размера, то это обойдется вам в 350 рублей в месяц. Однако такой диск способен вместить только две копии. Для хранения семи резервных копий потребуется объем

220 Гб. такого размера обойдется в 1100 руб/мес.

Можно, конечно, добавить размером 200 Гб. На него поместится 6 полных резервных копий и он обойдется в 600 руб/мес. Заметьте, мы получили такие суммы при глубине резервного копирования 7 дней или меньше.

Как видите, результат налицо — всего за 840 рублей в месяц можно получить резервное копирование длительностью 28 дней, или же всего за 210 рублей (7 дней), если вам нужна экономия. Для этого ненужно ни устанавливать компоненты, ни настраивать расписание, все, что нужно — это включить услугу резервного копирования прямо в панели управления сервером.

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