Как скопировать на сервер файл windows

Обновлено: 04.07.2024

Утилиту «ftp.exe», входящую в состав Windows по умолчанию, можно запустить из командной строки. Она позволяет скачивать и загружать файлы по протоколу FTP вручную, но главное ее достоинство — функции автоматизации. С ее помощью можно запланировать и автоматизировать передачу файлов по FTP на регулярной основе.

Чтобы получить справку по утилите FTP, введите в командной строке ftp -? и нажмите [Enter]. Чтобы посмотреть список доступных команд, введите ftp и нажмите [Enter] для запуска утилиты, а затем введите ? и снова нажмите [Enter]. Для завершения работы утилиты введите bye и нажмите [Enter].

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

Передача одного файла

Скопируйте в Блокнот (Notepad) следующий текст, подставив нужные значения, и сохраните его как «H:\TransferTest\transfer.bat».

Назначение команд:

• ftp — запускает утилиту FTP;
• -v — отключает вывод информации об ответах удаленного FTP-сервера;
• -n — отключает автоматический вход;
• -s: — указывает путь к файлу, содержащему команды для FTP-передачи. Путь не должен содержать пробелов .

Затем скопируйте в Блокнот следующий текст, подставив нужные значения, и сохраните его как «H:\TransferTest\transfer.ftp».

Назначение команд:

• open — открывает удаленный FTP-сервер;
• user — указывает имя пользователя для входа на сервер;
• password — указывает пароль для входа на сервер;
• cd — переходит в указанный удаленный каталог для загрузки файлов, в данном примере — «/public_ftp/test»;
• put — загружает указанный локальный файл на удаленный сервер; кавычки можно не использовать, если путь не содержит пробелов;
• bye — завершает сеанс подключения и работу утилиты FTP.

Совет: команды FTP можно сокращать до трех символов — например, использовать bin вместо binary.

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

• Откройте в Проводнике папку, в которой хранится нужный файл, нажмите правой кнопкой мыши на любом фрагменте адреса в адресной строке и выберите опцию «Копировать адрес как текст» (Copy Address as Text). Вставьте скопированный адрес в сценарий FTP и добавьте к нему имя файла.
• Нажмите правой кнопкой мыши на файле в Проводнике, выберите опцию «Свойства» (Properties) и откройте вкладку «Безопасность» (Security). Скопируйте полный путь к файлу из строки «Имя объекта» (Object name) и вставьте его в сценарий FTP.

В командной строке введите H:\TransferTest\transfer.bat и нажмите [Enter] или запустите командный файл двойным щелчком. При этом может появиться предупреждение безопасности, показанное на рис. I.

Три способа передачи файлов по FTP средствами Windows


Рисунок I. Выберите опцию «Общественные сети» (Public Networks) и нажмите кнопку «Разрешить доступ» (Allow Access).

Три способа передачи файлов по FTP средствами Windows


Рисунок J. Команда put загружает файл с клиентского компьютера на сервер. Если такой файл на сервере уже есть, он будет заменен.

Для скачивания файла с удаленного сервера на клиентский ПК используется команда get.

Передача нескольких файлов

Скопируйте в Блокнот следующий текст, подставив нужные значения, и сохраните его как «H:\TransferTest\multiple_transfer.bat».

Скопируйте в Блокнот следующий текст, подставив нужные значения, и сохраните его как «H:\TransferTest\multiple_transfer.ftp».

Назначение команд:

• open — открывает удаленный FTP-сервер;
• user — указывает имя пользователя для входа на сервер;
• password — указывает пароль для входа на сервер;
• cd — переходит в указанный удаленный каталог для загрузки файлов, в данном примере — «/public_ftp/test»;
• prompt — отключает интерактивные приглашения на ввод при загрузке множественных файлов с использование команды mput;
• mput — загружает указанные файлы ASCII с локального ПК; кавычки можно не использовать, если путь не содержит пробелов;
• lcd — переходит в указанный локальный каталог, в котором хранятся файлы для загрузки, в данном примере — «\Projects\PSWW\VIC\Package»;
• binary — переключается в режим двоичной передачи;
• mput — загружает указанные бинарные файлы с локального ПК; кавычки можно не использовать, если путь не содержит пробелов;
• bye — завершает сеанс подключения и работу утилиты FTP.

Теперь в командной строке введите H:\TransferTest\multiple_transfer.bat и нажмите [Enter] или запустите командный файл двойным щелчком (рис. K).

Три способа передачи файлов по FTP средствами Windows


Рисунок K. Этот сценарий позволяет загрузить на сервер сразу несколько файлов.

Обратите внимание — я использовал команду cd для смены каталога в командном файле и команду lcd для смены локального каталога в сценарии FTP, чтобы упростить команду mput за счет использования относительного пути вместо полного.

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

Команда mput позволяет загрузить несколько файлов с клиентского компьютера на удаленный сервер. Если на сервере такие файлы уже существуют, они будут заменены.

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

Передача текстовых и бинарных файлов

Передача текстовых (ASCII) и двоичных файлов с помощью утилиты FTP осуществляется по-разному. По умолчанию, утилита загружает файлы в режиме ASCII — именно такой способ используется в приведенном выше примере с передачей одного файла. В примере с загрузкой нескольких файлов присутствуют оба типа файлов — и ASCII, и бинарные. Чтобы предотвратить потерю данных, необходимо использовать подходящий метод передачи для каждого конкретного файла.

Проблемы безопасности

При передаче файлов по протоколу FTP возникает очевидная угроза безопасности. Если имя пользователя и пароль хранятся в незашифрованном текстовом файле, их может украсть любой, кто имеет доступ к компьютеру. Так что сценарий FTP стоит зашифровать. Подробнее о шифровании можно узнать в штатной справке Windows, воспользовавшись поиском по ключевому слову «шифрование». Нужные сведения содержатся в разделе «Шифрование или расшифровка папки или файла» (Encrypt or Decrypt a Folder or File). О шифровании в Windows 2000, Windows Server 2003, Windows XP, Windows Vista и Windows 7 рассказывается также на сайте Microsoft. В Википедии приводится полный версий Windows, поддерживающих систему шифрования данных Encrypting File System (EFS). Кроме того, можно воспользоваться сторонним приложением для шифрования, например, TrueCrypt.

Проблемы при использовании брандмауэра

В заключение

Прежде чем пускаться на поиски стороннего приложения для работы с FTP, обратите внимание на встроенные инструменты Windows. Возможно, одного из описанных методов будет вполне достаточно для выполнения стоящих перед вами задач.

Подключение к серверу посредством 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:

Передача файлов с буфера обмена в Hyper V и копирование с Powershell

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

Первый вариант работает с версий ВМ Windows Server 2012 R2 и Windows 8.1 и называется Enhanced Session Mode (ESM). Эта возможность работает по тому же принципу, что и RDP, то есть мы можем использовать не только буфер обмена, но и USB устройства, принтеры и так далее. Отличия от RDP в том, что мы не используем сеть в данном случае, но если у вас настроены политики ограничивающие RDP подключения они могут быть причиной ошибок.

По умолчанию Enhanced Session Mode включен. Мы можем проверить ее если зайдем в настройки Hyper V:

Enhanced Session Mode Hyper V

Включение буфера обмена Hyper V

Или выполнить аналогичное через Powershell:

Настройка расширенного сеанса Hyper V (ESM) устанавливается только на уровне сервера, но что бы у нас работала возможность копирования нужно включить и пакет интеграции Hyper V, который по умолчанию отключен. Эта служба интеграции называется Guest services (Гостевая служба), и она включается у каждой виртуально машины отдельно. Для ее включения зайдем в настройки виртуально машины:

Настройки виртуальной машины Hyper V

И включить гостевую службу:

Копирование Hyper V

Аналогичную настройку через Powershell можно сделать так:

Последнее что нужно сделать - это включить службу "Remote Desktop Services":

hyper v передача файлов

Можно установить и в консоли PS:

Теперь включим виртуальную машину и подключимся к ней:

Включение виртуальной машины Hyper V

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

Включение копирование файлов в виртуальную машину

На второй закладке стоит галочка под Clipboard (Буфер обмена) - это то что нам нужно:

Hyper V Clipboard буфер обмена

После этого у нас будет работать в Hyper V буфер обмена путем копирования/вставки, а перетаскивание файлов в виртуальную машину работать не будет, так как такого функционала нет.

Мы так же можем использовать Powershell:

Microsoft описывает проблему, при которой копирование так же не будет работать и оно связано с политиками. По следующему пути нужно изменить политику с "Do not allow drive redirection" на "Disabled" или "Not Configured":

Такого пути в групповых политиках я у себя не нашел.

Передача файлов в Hyper V через публичную папку

Второй вариант это создать в Hyper V виртуальную сеть через внутренний коммутатор. Внутренний или Internal коммутатор не использует физический сетевой адаптер и разрешает пользоваться таким типом соединения хосту Hyper V и виртуальным машинам. Таким образом затрачиваемые ресурсы, при копировании в Hyper V большого объема данных, не будут сильно отличаться от первого способа.

Для создания внутреннего коммутатора нужно зайти в окно управления свичами:

Создание виртуальных свичей Hyper V

В новом окне выбрать "Internal" или "Частный":

Создание частного свича Hyper V

Ввести имя коммутатора и подтвердить создание:

Создание частного коммутатора Hyper V

Это делается в Powershell одной командой:

После этого для каждой виртуальной машины, с которой мы хотим обмениваться данными, нужно подключить адаптер к этому коммутатору. Для этого зайдем в настройки виртуальной машины:

Настройки виртуальной машины Hyper V

Теперь создадим виртуальный сетевой адаптер:

Создание сетевого адаптера Hyper V

Теперь подключим адаптер к коммутатору:

Подключение адаптера к коммутатору Hyper V

В случае с Powershell это так же одна команда:

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

Копирование файлов в Hyper V через виртуальный диск

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

Вы можете создать диск воспользовавшись статьей "Создание виртуальных дисков в Hyper V". Папку, где лежит виртуальный диск можно увидеть через настройки виртуальной машины:

Жесткий диск Hyper V

Если путь заканчивается на avhdx, то вы используете контрольную точку. Для монтирования диска нужно перейти по пути и выбрать Mount у vhd/vhdx файла:

Монтирование VHD и VHDX в Hyper V

В моем случае появилось два раздела, так как это системный диск. Для размонтирования дисков нужно кликнуть по разделу и нажать Eject.

Если хотите выполнить команду через Powershell, то это можно сделать так:

Командлет выше подразумевает, что у вас подключен один диск. В случае нескольких дисков запустите:

Копирование в Hyper V используя буфер обмена с RDP

Последний способ подключения работает через "Подключению к удаленному рабочему столу" или RDP. Для такой возможности копирования, кроме открытых портов и включенной возможности в свойствах компьютера дополнительных требований нет. Так же стоит проверить галочку в свойствах подключения RDP:


Мануал

В этом уроке мы узнаем, как установить и использовать инструмент pscp в операционной системе Windows.

Утилиту pscp можно скачать по следующей ссылке.

Существуют разные типы установки.

pscp может быть установлен в автономном режиме или с пакетом установки putty.

Я предпочитаю установочный пакет Putty, где настройка конфигурации Пути также выполняется автоматически.

Как видим, есть 32- и 64-битные версии.

Я буду использовать 64 бит, потому что моя ОС Windows 64 битная соответственно 🙂 .

Установка Pscp

Мы установим скачанный 64-битный MSI-пакет putty в обычном стиле Windows Далее-> Далее.

Помощь и Настройки

Если нам нужно перечислить все доступные опции и справочную информацию, мы можем просто ввести команду pscp в командную строку или MSDOS, как показано ниже.

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

Как указывалось ранее, мы будем использовать протокол SSH для подключения и передачи.

Мы просто предоставим имя пользователя удаленной системы, IP-адрес или имя хоста и файл с его абсолютным путем.

Мы также предоставим имя файла, который мы хотим сохранить локально.

> pscp ismail @ 192.168.142.144 : / home / ismail / pass pass . txt

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

Затем мы предоставляем пароль для пользователя ismail.

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

В предыдущем примере мы загрузили или получили один файл с удаленного сервера.

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

В этом примере мы загрузим все gzip-файлы с расширением gz, которые находятся в /home/ismail.

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

Загрузить или поместить файл на удаленный сервер

Мы также можем загрузить или поместить данный файл на удаленный SSH-сервер с помощью команды pscp.

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

Загрузить несколько файлов на удаленный сервер

Мы также можем поместить несколько файлов на удаленный сервер с помощью команды pscp.

Мы предоставим имена файлов перед удаленным сервером, информацию о пользователе.

В этом примере мы скопируем локальные файлы pass.txt, config.sys на удаленный сервер.

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

Загрузить каталоги рекурсивно на удаленный сервер

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

Мы снова будем использовать опцию -r.

Мы поместим каталог Downloads на удаленный сервер 192.168.142.144 и в папку /home/ismail/Downloads

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