Если вы хотите копировать или перемещать данные между операционными системами Windows и Linux, это проще, чем вы думаете. Мы собрали для вас четыре способа сделать это:
- Безопасное копирование файлов через SSH
- Передача файлов из Windows в Linux через FTP
- Обмен данными с помощью программного обеспечения для синхронизации
- Используйте общие папки на вашей виртуальной машине
С помощью каждого из этих методов вы сможете легко и без особых усилий перемещать файлы между операционными системами. Давайте рассмотрим их по очереди и выясним, какой из них вам больше подходит.
1. Копирование файлов между Windows и Linux через SSH
Если на вашем устройстве Linux включен SSH, вы можете отправлять данные с одного компьютера на другой через командную строку. Для этого вам необходимо настроить SSH-сервер на вашем Linux-компьютере.
Начните с обновления ОС.
sudo apt update
После завершения обновлений установите SSH-сервер. Сервер OpenSSH — хороший вариант.
sudo apt install openssh-server
Подождите, пока он установится. Чтобы проверить, запущен ли сервер OpenSSH, наберите:
sudo service ssh status
Для передачи данных из Windows используйте SSH-клиент, например PuTTY. Для этого требуется, чтобы инструмент PSCP (клиент безопасного копирования) загружался в вашу систему Windows, чтобы работать вместе с PuTTY. Найдите оба на домашней странице PuTTY.
Обратите внимание, что PuTTY необходимо установить, а PSCP работает без инсталляции. Просто сохраните загруженный файл pscp.exe в корне диска Windows C: или настройте его как переменную среды. Вам также необходимо подтвердить IP-адрес устройства Linux. Зарегистрируйтесь в терминале Linux с помощью
hostname -I
Установив соединение, вы можете перенести файл из Windows в Linux следующим образом:
c:pscp c:
omepathtoafile.txt user@remoteIP:homeuser
omepath
ewname.txt
Вам будет предложено ввести пароль для компьютера Linux перед началом передачи.
Хотите скопировать данные из Linux в Windows в одном сеансе SSH? Эта команда загрузит указанный файл в текущий каталог:
c:pscp user@remoteIP:homeuser
omefile.txt .
Обратите внимание на одинокий период в конце — включите это, иначе передача не будет работать.
2. Как перенести файлы из Linux в Windows с помощью FTP
Также можно использовать приложение протокола передачи файлов (FTP) с поддержкой SSH. Перенос файлов через SFTP в пользовательском интерфейсе, управляемом мышью, возможно, проще, чем полагаться на вводимые команды.
Перед запуском на машине Linux должен быть запущен SSH-сервер. Вам также следует убедиться, что вы установили приложение FTP в Windows, например FileZilla, которое имеет поддержку SFTP.
Чтобы использовать этот метод, запустите FileZilla, затем:
- Откройте File > Site Manager
- Создать New Site
- Установите протокол на SFTP
- Добавьте целевой IP-адрес в Host
- Укажите логин и пароль
- Установите тип входа в систему Normal
- Нажмите Connect, когда будете готовы.
Затем вы можете использовать приложение FTP для перемещения файлов из Windows в Linux и обратно с помощью перетаскивания.
Другой вариант, который можно рассмотреть, — это программа для синхронизации файлов. Обычно они кроссплатформенные и используют зашифрованный ключ для управления соединением между устройствами.
Все, что вам нужно сделать, это установить приложение, назначить папку синхронизации, а затем создать ключ. Настройте это на втором ПК, и ваши данные будут синхронизированы. Для этого доступны два хороших варианта:
- Resilio Sync: ранее известная как BitTorrent Sync, Resilio доступна практически для любой платформе, о которой вы можете подумать. Есть платная версия, но бесплатной достаточно для синхронизации двух устройств.
- SyncThing: для Linux, Windows, macOS и Android эта альтернатива Resilio Sync предлагает аналогичную функцию без платного компонента.
Вместо отдельного ПК обычно запускают Linux или Windows на виртуальной машине (ВМ). Есть ли способ передавать файлы между Windows и Linux, если они установлены на виртуальной машине?
К счастью, да. В VirtualBox вы можете создать виртуальный общий каталог для синхронизации данных.
Если вы используете Windows на виртуальной машине в Linux (или наоборот), VirtualBox уже настроен для совместного использования. Перед продолжением убедитесь, что на вашей виртуальной машине установлены гостевые дополнения.
В диспетчере VirtualBox выберите виртуальную машину, затем:
- Выберите Start> Headless Start (или при работающей виртуальной машине, Devices> Shared Folders)
- После запуска щелкните правой кнопкой мыши виртуальную машину и выберите «Настройки»> «Общие папки».
- Выбирать Machine Folders
- Щелкните символ + справа (или щелкните правой кнопкой мыши и выберите Добавить общую папку)
- Просмотрите путь к папке и найдите каталог, который хотите использовать.
- Задайте имя (при необходимости), затем ОК
- Установите флажок Auto-mount, чтобы обеспечить доступность общего ресурса при запуске виртуальной машины.
- Еще раз нажмите ОК, чтобы подтвердить и выйти.
Когда вы перезагрузите виртуальную машину, общий ресурс будет готов для обмена данными между хост-компьютером и гостевой операционной системой.
Есть еще один вариант обмена файлами между ПК с Windows и Linux. Однако создание общего файла в одной или обеих системах с последующим доступом к нему по сети в лучшем случае ненадежно.
Обмен файлами между Windows и Linux очень прост
Независимо от того, новичок ли вы в Linux или находите Windows незнакомой, обмен данными между ними проще, чем вы думаете. Мы рассмотрели несколько методов и рекомендуем вам попробовать каждый из них и решить, какой из них вам наиболее удобен.
Если Вы используете и Linux и Windows, вам в любом случае нужно как-то передавать файлы из Linux в Windows и обратно. Способов это сделать достаточно много, но большинство из них требуют особых знаний и опыта использования Linux. Например, как вариант можно создать общею папку в Linux или Windows, в первом случае нужно знать команды для настройки «samba», а во в тором для монтирования папки «mount». Сделать это новичку будет не просто. Но есть вариант гораздо проще, о нем Вам я сейчас и расскажу.
Если вам охота разобраться с монтирование сетевой папки в Linux и настройки Samba то можете почитать следующие статьи.
Ошибки при монтировании папки в Linux
Как подключить сетевой диск к Linux Mint
Как подключить сетевой диск к Fedora
Файловый сервер Samba на Linux Mint
Установка и настройка Samba сервера на Astra Linux
Самый простой способ передать файлы из Linux в Windows и обратно
Для обмена файлами межу системами Linux и Windows лучше использовать программу WinSCP.
Скачать WinSCP — https://winscp.net/eng/download.php
Она простая и очень удобная в использование, девайте пробежимся по процессу установки.
Далее выбираем тип установки я рекомендую выбирает стандартную установку.
Теперь выбираем интерфейс «Коммандер» намного удобней и функциональней.
Остается только нажать «Установить».
Для того чтобы передать файлы из Linux в Windows или наоборот, запускаем программу WinSCP. Пишем IP адрес, порт имя пользователя и пароль от Linux.
После удачного подключения в правой части отобразиться список каталогов системы Linux а в левой Windows.
Для того что передать какой либо файл или папку из из Linux в Windows, кликаем на нем ПКМ мыши выбираем пункт «Получить».
Выбираем папку куда будет сохранен файл, так же тут можно настроить параметры передачи.
Все передача файла из Linux в Windows завершена для того чтобы передать из Windows в Linux выбираем «Отправить» либо просто перетаскиваем мышкой.
На мой взгляд это самый простой, быстрый и удобный способ передачи файлов из Linux в Windows и обратно. У данной программы очень широкий функционал и много возможностей но об этом я постараюсь рассказать в следующей статье. Но если Вы знаете другой, обязательно поделитесь!
-
Главная
-
Инструкции
-
Linux
-
Копирование файлов по SSH
Протокол SSH (Secure Shell) — это сетевой протокол для удаленного управления операционной системой через командную строку, который можно назвать стандартом для удаленного доступа к *nix-машинам. Позволяет производить защищенный вход на сервер, удаленно выполнять команды, управлять файлами (создавать, удалять, копировать и т.д.) и многое другое. Большинство облачных и хостинг-провайдеров требуют наличие SSH для доступа к своим сервисам. В этой статье рассмотрим копирование файлов по SSH в Windows и Linux-системах.
SSH способен передавать любые данные (звук, видео, данные прикладных протоколов) через безопасный канал связи. В отличие от устаревших и небезопасных протоколов telnet и rlogin, в SSH обеспечивается конфиденциальность передаваемых данных и подлинность взаимодействующих сторон — необходимые условия для сетевого взаимодействия в Интернете.
Рассмотрим алгоритм установки зашифрованного соединения между клиентом и сервером:
- Установка TCP-соединения. По умолчанию сервер слушает 22-й порт. В работе протокола используется набор алгоритмов (сжатие, шифрование, обмен ключами), поэтому стороны обмениваются списком поддерживаемых алгоритмов и договариваются, какие из них будут использовать.
- Чтобы третья сторона не смогла выдать себя за сервер или клиент, стороны должны удостоверится в подлинности друг друга (аутентификация). Для этого используются асимметричные алгоритмы шифрования и пара открытый-закрытый ключ. Вначале проверяется аутентичность сервера. Если соединение происходит впервые, пользователь увидит предупреждение и информацию о сервере. Список доверенных серверов и их ключей записывается в файл по адресу /home/<username>/.ssh/known_hosts.
- Как только клиент убедился в достоверности сервера, стороны генерируют симметричный ключ, с помощью которого происходит шифрования всех обмениваемых данных. Таким образом при перехвате данных, никто, кроме сторон не сможет узнать содержимое сообщений.
- Далее происходит аутентификация пользовательского сеанса. Для этого используется либо пароль, либо присланный клиентом публичный ключ, сохраняемый в файле /home/<username>/.ssh/authorized_keys на сервере.
Самая популярная реализация на Линукс, OpenSSH, предустанавливается практически на всех дистрибутивах: Ubuntu, Debian, RHEL-based и других. На Windows в качестве клиентов можно использовать программы PuTTY, MobaXterm. Начиная с WIndows 10 и Windows Server 2019 инструменты OpenSSH доступны и на Windows.
Подробнее об SSH и работе с ним мы писали в статье «Как пользоваться SSH».
Копирование файлов
Копирование файлов в Linux по SSH осуществляется с помощью двух основных программ: scp и sftp. Обе утилиты поставляются вместе с пакетом OpenSSH. Существуют две основные версии протокола SSH: 1 и 2. Оболочка OpenSSH поддерживает обе версии, однако первая применяется редко.
Настройка автодополнений
При работе с scp крайне удобно использовать tab для автодополнения путей на удаленной машине. Для этого нужно настроить аутентификацию пользователя по публичному ключу.
Для начала сгенерируем открытый и закрытый ключ:
ssh-keygen
Вывод:
Generating public/private rsa key pair.
Enter file in which to save the key (/home/user/.ssh/id_rsa):
Created directory '/home/user/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/user/.ssh/id_rsa.
Your public key has been saved in /home/user/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:wJQ/XBZq69qXGHxseTuccUEpzWYHhsVVHcDXE3MrTHQ user@host
В конце вывода будет графическое представление ключа (key’s randomart image), которое легче запомнить, чем хэш ключа.
По умолчанию ключи (id_rsa.pub — открытый, id_rsa — закрытый) сохранятся в домашнем каталоге пользователя в директории .ssh. Также во время генерации программа попросит ввести пароль, которым будут защищены ключи. Если не хотите дополнительной защиты, нажмите два раза Enter.
Теперь копируем публичный ключ на удаленную машину:
ssh-copy-id [имя пользователя]@[ip-адрес]
Здесь [имя пользователя] — учетная запись пользователя, под которой будем логиниться на удаленной машине, [ip-адрес] — адрес удаленной машины (можно использовать доменное имя, если они локально резолвится). Далее вводим пароль пользователя. Если все прошло корректно, то в выводе будет команда для удаленного подключения:
Number of key(s) added: 1
Now try logging into the machine, with: "ssh '<имя пользователя>@<ip-адрес>'"
and check to make sure that only the key(s) you wanted were added.
Secure copy (SCP)
Для копирования небольших объемов информации (например, конфиги сервисов) лучше всего подойдет утилита scp.
Синтаксис команды для копирования с локальной машины на удаленный сервер:
scp [путь к файлу] [путь к файлу] [имя пользователя]@[ip-адрес]:[путь к файлу]
Попробуем скопировать файл на сервер:
scp test.txt user@192.168.1.29:/home/user/
Вывод:
test.txt 100% 12 20.6KB/s 00:00
Можно передать несколько файлов за раз. Для этого указываем пути, разделенные пробелами:
scp test1.txt test2.txt user@192.168.1.29:/home/user/
Для копирования с удаленного сервера на локальную машину нужно поменять источник и место назначения местами:
scp user@192.168.1.29:/home/user/test.txt ~/
Для передачи директории используйте ключ -r
:
scp -r testdir user@192.168.1.29:/home/user/
Также имеется возможность передачи с одного удаленного сервера на другой:
scp gendo@192.168.1.25:/home/gendo/test.txt user@192.168.1.29:/home/user/
Secure FTP (SFTP)
Еще одной утилитой для передачи файлов, поставляемых в OpenSSH, является sftp. C релизом OpenSSH 9.0 утилита scp переведена по умолчанию на использование SFTP вместо устаревшего протокола SCP/RCP. Sftp работает практически также, как и классический ftp, за исключением того, что в sftp данные передаются не в виде обычного текста, а по зашифрованному туннелю (туннелирование — это процесс упаковки и передачи одного сетевого подключения с помощью другого). Также для работы sftp не нужен отдельный FTP-сервер.
Пример простого скачивания через sftp:
gendo@melhior:~$ sftp misato@192.168.1.29
Connected to 192.168.1.29.
sftp> ls
file.txt file1.txt file2.txt test.txt
sftp> lcd testdir/
sftp> get test.txt
Fetching /home/misato/test.txt to test.txt
test.txt 100% 12 4.8KB/s 00:00
sftp> bye
Сам по себе sftp применяется редко: вместо этого его используют файловые менеджеры, например Midnight Commander и Nautilus:
Использование sftp в файловом менеджере Nautilus. Удаленная машина отображается в виде папки с именем пользователя и IP-адресом.
Копирование файлов по SSH в Windows
Скачать файл с сервера или на сервер в Windows можно с помощью консольной программы pscp, поставляемой вместе с PuTTY. Синтаксис очень похож на обычный scp:
pscp [путь к файлу] [имя пользователя]@[имя сервера/ip-адрес]:[путь к файлу]
Для SSH-копирования файлов на сервер, используйте следующую команду:
pscp C:\server\test.txt misato@192.168.1.29:/home/misato/
Скачивание файла с сервера на компьютер:
pscp misato@192.168.1.29:/home/misato/test.txt C:\file.txt
Увидеть список файлов на сервере можно при помощи опции -ls
:
pscp -ls [имя пользователя]@[ip-адрес]:[путь]
Если в пути или в названии файла есть пробелы, используйте кавычки:
pscp "C:\dir\bad file name" misato@192.168.1.29:/home/misato
Для получения помощи по команде введите pscp без аргументов.
Заключение
Мы рассмотрели, как копировать файлы на сервер и с сервера с помощью безопасного сетевого протокола SSH. Если вы используете облачные серверы, важно уметь работать с SSH, так как он является стандартом для удаленного доступа к *nix-машинам и будет необходим вам в повседневной работе.
Кстати, в официальном канале Timeweb Cloud собрали комьюнити из специалистов, которые говорят про IT-тренды, делятся полезными инструкциями и даже приглашают к себе работать.
How to get a file from my path d:/test.txt and copy it to /etc/var/test/test.txt?
I’ve tried this:
scp d:/test.txt /etc/var/test/test.txt
but that didn’t work.
How do I set the hard disk from where I copy my files?
asked Mar 14, 2014 at 10:30
1
Umm, if you’re using cygwin you want that command to look like
scp /cygdrive/d/test.txt <linux ip>:/etc/var/test/test.txt
Or you can use WinSCP, you’ll probably find that simpler.
answered Mar 14, 2014 at 10:47
The best way to copy files from Windows to Linux using the command line is through pscp. It is very easy and secure. For pscp to work on your windows machine, you need it add its executable to your systems path. Once it is done, you can use the following format to copy the file.
pscp -pw password D:\test.txt [email protected]:/etc/var/test/test.txt
You can refer the following blog post for more information on pscp setup.
http://comtechies.com/2016/02/copy-files-between-windows-and-linux.html
answered Feb 25, 2016 at 10:13
2
Assuming you are on Windows, best way is to download and install cygwin. Get the path to the binary folder and add it to the system path. You can now run Linux commands on your command line.
Open the command prompt and go to the directory where your file is that you want to copy. Run the following command;
scp file.txt [email protected]:/opt/
- scp — secure copy command
- file.txt — file you want to copy
- root — username used to log onto CentOS machine
- 1.1.1.1 — IP address of CentOS machine. Needless to say your Windows machine and the CentOS machine have to be able to communicate with one another
- :/opt — This is the directory with which you save the file to, I generally save everything to the /opt directory
- Don’t forget the @ between the username and IP Address and the : between the IP Address and directory you are saving the file to
If you need a key to login into the server, enter the following;
scp key.pem file.txt [email protected]:/opt
For handiness sake I just copy the file I want to copy across to the key file directory, that way you know everything will run smoothly
answered Mar 20, 2014 at 17:15
DanDan
1951 silver badge7 bronze badges
to copy a file from windows to linux write:
scp -i privatekey pathFileOnWindows user@publicIp:pathDirectoryLinux
(the colon : is important!)
Example:
//I am located here in my console
C:\Users\oscar>
//I’m executing the next command
scp -i C:\Users\oscar\Documents\llaves\ubuntu.pem C:\Users\oscar\Documents\index.html [email protected]:~/
You can puth the full path or location in the path where the file is located. ~/
means the home directory of the user ubuntu
Jenny D
27.9k21 gold badges75 silver badges114 bronze badges
answered Mar 19, 2019 at 3:47
1
I would highly recommend to use WinSCP if you’re a Windows user. It has a good intuitive interface and gets the job done easily and with no pain.
Download link
answered Oct 1, 2015 at 19:52
AndreiAndrei
1611 silver badge3 bronze badges
If you are on the remote machine:
scp user@hostname:D:\text.txt user@hostname:/etc/var/test/test.txt
If you are currently on Windows machine:
winscp D:\text.txt user@hostname:/etc/var/test/test.txt
answered Mar 14, 2014 at 10:56
pscp with -pw exposes my password, which I don’t like. The below answer works just like me using scp on linux -> linux.
pscp -scp C:\Windows\foo.txt [email protected]:/foo/bar
answered Aug 23, 2019 at 22:06
lobilobi
1,0932 gold badges15 silver badges30 bronze badges
First you have to install any ssh client (OpenSSH) which support command line interface for your windows machine:
And add its path to windows Variable:
My Windows System output like below:
Then you will able to execute the same commands on your windows machine
You can copy also complete directory by executing:
scp -r path/to/dir_name/* user@remote-ip:/path/to/destination_dir
To Copy Single File:
scp -r path/to/file_name.zip user@remote-ip:/path/to/destination_dir/
Replace the file extension with your own file.
answered Mar 1, 2016 at 14:44
WinSCP is definitely an useful utility, especially if you want a graphic interface. But if you’re looking for a command line alternative without having to deal with installing cygwin, there’s also pscp
which is part of the PuTTY collection of tools.
http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html
answered Oct 1, 2015 at 21:25
if you are using windows and want to copy to the linux server then install the WINSCP and just use the drag and drop
answered Oct 15, 2015 at 9:51
OpenSSH is available for PowerShell since 2019. Instructions for installation are available from Microsoft’s Docs site. Instructions for use of OpenSSH utilities are available on OpenSSH project site.
Basically, once you install the OpenSSH suite, scp will work as you are accustomed.
scp user@source:path/to/source/file user@destination:path/to/target/file
where source and destination are hostnames or IP addresses and a path and filename without a host name/address will be treated as local.
answered Apr 5, 2021 at 14:20
Jeter-workJeter-work
8454 silver badges15 bronze badges
SCP <path of the file along with filename and extension> <name of vm>@<ip address>:<path where file needs to be copied>
answered Dec 19, 2022 at 7:49
You must log in to answer this question.
Not the answer you’re looking for? Browse other questions tagged
.
Not the answer you’re looking for? Browse other questions tagged
.