- Как передавать и обмениваться файлами между Windows и Linux
- 4 способа передачи файлов из Windows в Linux
- 1. Совместное использование сетевых папок между Linux и Windows
- 2. Скопируйте файлы через SSH из Windows в Linux
- 3. Как перенести файлы из Linux в Windows, используя FTP
- 4. Делитесь файлами между Linux и Windows с помощью Resilio Sync
- Копирование файлов через SSH
- Копирование файлов по SSH на Linux
- Как скопировать файл по SSH с локальной машины на удалённый сервер
- Как скопировать файлы с удалённого сервера на локальный компьютер
- Как скачать папку со всеми файлами и подпапками
- Как подключиться к серверу по нестандартному порту
- Как передать и скачать файлы по SSH на Windows
- Кунг-фу стиля Linux: удобная работа с файлами по SSH
- Нет ли тут подвоха?
- Пара слов о sshfs
- Предварительная подготовка
- Скрипт
- Решаем обратную задачу
- Итоги
Как передавать и обмениваться файлами между Windows и Linux
Копирование данных с ПК с Windows в Linux — или в другом направлении — поначалу может показаться пугающим. В конце концов, это то, что кажется простым, но оказывается сложным.
По правде говоря, делиться файлами из Windows в Linux легко, но только если вы знаете, как это сделать. Готовы выяснить?
4 способа передачи файлов из Windows в Linux
Перенос данных между операционными системами Windows и Linux проще, чем вы думаете. Мы собрали пять способов сделать это:
- Поделиться сетевыми папками
- Передача файлов с FTP
- Безопасное копирование файлов через SSH
- Обмен данными с помощью программного обеспечения для синхронизации
С помощью каждого из этих методов вы сможете легко (а в некоторых случаях легко) перемещать файлы между операционными системами.
Давайте посмотрим на них по очереди и выясним, какой из них подходит вам больше всего.
1. Совместное использование сетевых папок между Linux и Windows
Наиболее очевидный способ обмена файлами между Linux и Windows — это использование сетевых ресурсов. Этот термин относится к папкам на одном ПК, которые доступны пользователям на других компьютерах. В сети только для Windows это легко настроить. Добавление устройства Linux немного усложняет ситуацию, хотя это можно преодолеть.
Начиная с Windows, щелкните правой кнопкой мыши значок сетевого подключения на панели задач и выберите «Открыть сеть и настройки Интернета». Далее нажмите «Параметры общего доступа» и включите текущий профиль.
- Включить обнаружение сети
- Включите общий доступ к файлам и принтерам
Нажмите «Сохранить изменения» для подтверждения, затем перейдите в папку, содержащую файлы, которыми вы хотите поделиться. Щелкните правой кнопкой мыши папку, выберите «Свойства» и откройте вкладку «Общий доступ». Здесь нажмите «Расширенный общий доступ», затем установите флажок «Поделиться этой папкой».
Вы можете управлять доступом к папке через разрешения; это относится к локальным пользователям Windows, а не к сетевым устройствам.
Нажмите OK, чтобы подтвердить изменение, затем откройте вкладку Безопасность в Свойствах. Настройте это, чтобы отразить настройки в поле Полномочия ранее. Вам не нужно делать слишком много здесь, так как Windows 10 должна включать группу под названием Authenticated Users. Это используется для удаленного доступа к вашему компьютеру.
Снова нажмите ОК, когда вы закончите.
Чтобы найти общий ресурс Windows на ПК с Linux, просто откройте браузер файлов и выберите «Сеть». Отсюда перейдите к папке, размещенной в Windows, и начните обмен данными.
Доступ к общему ресурсу Linux из Windows
Чтобы переместить данные в другом направлении, вам нужно установить Samba на ваш компьютер с Linux.
Затем установите имя пользователя для общего ресурса samba.
Вам будет предложено ввести пароль для новой учетной записи (не используйте для этого «имя пользователя»!).
Затем создайте каталог для обмена данными.
Затем отредактируйте файл smb.conf в своем текстовом редакторе:
Добавьте следующее в конец файла конфигурации:
Внесите необходимые изменения в соответствии со своими потребностями, затем нажмите Ctrl + X, чтобы выйти, и нажмите Y, чтобы сохранить. Далее перезапустите Samba:
После этого вы сможете получить доступ к общему ресурсу из Windows. Откройте проводник или браузер и введите IP-адрес или имя хоста удаленного устройства Linux, а затем имя папки. В нашем примере это
2. Скопируйте файлы через SSH из Windows в Linux
С включенным SSH на вашем устройстве Linux вы можете отправлять данные через командную строку с одного компьютера на другой. Однако, чтобы это работало, вам нужно настроить SSH-сервер на вашем Linux-компьютере.
Начните с открытия терминала и обновления и обновления ОС.
После завершения установите сервер SSH. Сервер OpenSSH — хороший вариант.
Подождите, пока он установит. Чтобы в любой момент проверить, работает ли сервер OpenSSH, используйте
Для передачи данных из Windows используйте SSH-клиент, например PuTTY. Это требует загрузки инструмента PSCP в вашу систему Windows для запуска вместе с PuTTY. Найти оба на домашней странице PuTTY.
Обратите внимание, что в то время как PuTTY нужно будет установить, PSCP — нет. Однако его следует сохранить в корне диска C:\ или настроить как переменную среды. Вам также необходимо подтвердить IP-адрес устройства Linux. Отметьте это на коробке с
После установления соединения вы можете отправлять данные следующим образом:
Перед началом передачи вам будет предложено ввести пароль для компьютера с Linux.
Хотите скопировать данные из Linux в Windows в одном сеансе SSH? Эта команда загрузит указанный файл в текущий каталог:
Обратите внимание на одиночный период в конце — включите его, иначе перевод не будет работать.
3. Как перенести файлы из Linux в Windows, используя FTP
Можно также использовать приложение протокола передачи файлов (FTP) с поддержкой SSH. Передача файлов через SFTP в пользовательском интерфейсе, управляемом мышью, возможно, проще, чем полагаться на набранные команды.
Опять же, сервер SSH должен быть запущен на компьютере с Linux перед началом работы. Вы также должны убедиться, что вы установили приложение FTP, такое как FileZilla, которое поддерживает SFTP.
Чтобы использовать этот метод, запустите FileZilla, затем откройте Файл → Менеджер сайтов. Создайте новый сайт, заботясь о том, чтобы установить протокол на SFTP. Добавьте целевой IP-адрес в Host, затем имя пользователя и пароль, установив тип входа в систему как Нормальный.
Нажмите Готово, когда будете готовы, затем используйте интерфейс FTP для перетаскивания файлов между двумя компьютерами.
4. Делитесь файлами между Linux и Windows с помощью Resilio Sync
Другим вариантом, который вы должны рассмотреть, является программа синхронизации файлов. Обычно они кроссплатформенные и используют зашифрованный ключ для управления соединением между устройствами.
Все, что вам нужно сделать, это установить приложение, назначить папку синхронизации, а затем создать ключ. Установите это на втором ПК, и ваши данные будут синхронизированы. Для этого есть два хороших варианта:
- Resilio Sync: ранее известная как BitTorrent Sync, Resilio доступна практически на любой платформе, о которой вы только можете подумать. Есть платная версия, но бесплатного варианта достаточно для синхронизации двух устройств.
- SyncThing: для Linux, Windows, macOS и Android эта альтернатива Resilio Sync предлагает аналогичную функцию без платного компонента.
Совместное использование файлов между Windows и Linux очень просто
Если вы новичок в Linux, или вы находите Windows незнакомой, обмен данными между ними проще, чем вы думаете.
Мы рассмотрели несколько методов. Мы рекомендуем вам попробовать все из них и решить, какой из них вам наиболее удобен.
Источник
Копирование файлов через SSH
В статье мы расскажем, как копировать файлы в Windows и Linux-системах, и покажем основные команды, с помощью которых происходит передача файлов по SSH.
Для копирования файлов по SSH в Linux-системах и Windows используют разные инструменты:
- scp (Secure CoPy) — утилита для безопасного копирования данных между Linux-системами по протоколу SSH. Она входит в состав OpenSSH, поэтому для работы с утилитой не нужно устанавливать дополнительное ПО;
- pscp.exe — утилита для загрузки файлов по SSH в ОС Windows. Она обладает теми же возможностями, что и scp. Утилита входит в состав программы Putty — SSH-клиента для Windows. Скачать программу можно по ссылке.
Копирование файлов по SSH на Linux
Для Linux копирование файлов по SSH происходит с использованием команды scp. С её помощью можно копировать файлы:
- с локального компьютера на удалённый сервер,
- с удалённого сервера на локальный компьютер.
Общий вид команды:
scp [опция] [источник] [получатель]
Как скопировать файл по SSH с локальной машины на удалённый сервер
Как загрузить файл на сервер по SSH? Для этого используйте команду вида:
scp [путь к файлу] [имя пользователя]@[имя сервера/ip-адрес]:[путь к файлу]
scp /home/test.txt root@123.123.123.123:/directory
Файл test.txt будет скопирован на хост 123.123.123.123 в директорию «/directory».
Как скопировать файлы с удалённого сервера на локальный компьютер
При подключённом SSH скачать файл на локальный компьютер с удалённого сервера можно с помощью команды:
scp [имя пользователя]@[имя сервера/ip-адрес]:[путь к файлу] [путь к файлу]
scp root@123.123.123.123:/home/test.txt /directory
Файл test.txt будет загружен с сервера 123.123.123.123 на локальный компьютер в папку «/directory».
Как скачать папку со всеми файлами и подпапками
Если вы хотите скачать папку со всеми файлами и подпапками, используйте ключ -r:
scp -r [источник] [получатель]
Как подключиться к серверу по нестандартному порту
Бывает, что для подключения по SSH нужно указать нестандартный порт. Без указания порта команда подключается к серверу по стандартному 22 порту. Чтобы указать нестандартный порт, введите команду с ключём -P:
scp -P [источник] [получатель]
scp -P 12345 /home/test.txt root@123.123.123.123:/directory
Эта команда подключается по порту 12345 к серверу 123.123.123.123 и копирует на него файл «test.txt» с локального компьютера в директорию «/directory».
Как передать и скачать файлы по SSH на Windows
Скопировать файл по SSH на сервер можно командой:
pscp [путь к файлу] [имя пользователя]@[имя сервера/ip-адрес]:[путь к файлу]
Скачать файл по SSH с сервера командой:
pscp [имя пользователя]@[имя сервера/ip-адрес]:[путь к файлу] [путь к файлу]
Увидеть список папок и файлов на сервере можно через pscp.exe. Для этого введите:
pscp -ls [имя пользователя]@[имя сервера/ip-адрес]:[путь]
Если в пути или в названии файла есть пробелы, используйте кавычки:
pscp “C:\files or docs\file name” root@123.123.123.123:/home
Источник
Кунг-фу стиля Linux: удобная работа с файлами по SSH
Если у вас имеется больше одного Linux-компьютера, то вы, вероятно, постоянно пользуетесь ssh . Это — отличный инструмент, но мне всегда казалась в нём странной одна деталь. Несмотря на то, что ssh-соединения позволяют передавать файлы с применением scp и sftp , у нас нет возможности перемещать файлы между локальной и удалённой системой, не запуская программу на локальном хосте, или не подключаясь к локальной машине с удалённой.
Последнее — это настоящая проблема, так как к серверам часто подключаются, находясь в это время за файрволом или за NAT-маршрутизатором, то есть, не имея постоянного IP-адреса. В результате сервер, в любом случае, не сможет подключиться к локальной системе, с которой раньше к нему обращались. Если бы в ssh-сессии можно было бы просто взять локальный или удалённый файл и передать его туда, куда нужно, это было бы очень удобно.
Я, на самом деле, не вполне достиг этой цели, но подобрался к её достижению очень близко. В этом материале я расскажу вам о скрипте, который позволяет монтировать удалённые директории на локальном компьютере. На локальной машине надо будет установить sshfs , но на удалённой, на которую вы, возможно, не можете устанавливать программы, ничего менять не придётся. Если же потратить на настройку систем некоторое время, и если на клиентском компьютере имеется работающий ssh-сервер, то можно будет ещё и монтировать локальные директории на удалённых системах. При этом не придётся беспокоиться о блокировке IP-адресов или портов. Фактически, если вы способны подключиться к удалённой машине, это означает, что вам удастся и то, о чём я хочу рассказать.
В результате, если это всё скомбинировать, оказывается, что я очень близок к цели. Я могу работать с командной оболочкой на клиенте или на сервере и имею возможность удобно читать и записывать файлы на обеих сторонах соединения. Для этого нужно лишь всё правильно настроить.
Нет ли тут подвоха?
Возможно, вы решите, что тут кроется какой-то подвох. Ведь речь, фактически, идёт об использовании двух ssh-соединений. Одно применяется для монтирования файловой системы, а другое — для входа на компьютер. И это, на самом деле, так и есть. Но если правильно настроить ssh , то аутентификацию нужно будет выполнять лишь один раз, не тратя слишком много времени на организацию двух подключений.
Кроме того, работу значительно облегчает скрипт, о котором я расскажу. Он скрывает от пользователя детали, поэтому процедура подключения выглядит (почти) как обычно, а после этого всё работает как надо.
Пара слов о sshfs
Утилита sshfs даёт возможность работать с файловой системой в пользовательском пространстве (filesystem in userspace, FUSE). То есть, речь идёт о том, что в пользовательском пространстве имеется слой, находящийся поверх базовой файловой системы. В данном случае такой файловой системой является ssh-сервер, поддерживающий sftp . Это позволяет работать с файлами, находящимися на удалённой системе, воспринимая их так, будто они находятся в реальной файловой системе на локальном компьютере. Если вы ещё не пробовали sshfs — попробуйте. Работает эта утилита очень хорошо.
Предположим, вы вошли на компьютер myserver и выполнили с локальной машины следующую команду:
Это приведёт к тому, что директория удалённого компьютера /home/admin будет доступна в локальной системе по пути
При использовании sshfs можно пользоваться различными опциями. Например, можно сделать так, чтобы после потери соединения осуществлялось бы повторное подключение. Подробности о sshfs ищите в справке.
Так как sshfs использует удалённо смонтированную версию файла, то все изменения, внесённые в файл, сохраняются на удалённой машине. А после того, как sshfs-соединение закрывают, на локальной компьютере ничего не остаётся. Сейчас мы это исправим.
Предварительная подготовка
/remote , а в ней создаю поддиректории для каждого удалённого компьютера. Например — это могут быть директории
Скрипт называется sshmount . Он принимает те же аргументы, что и ssh . Для упрощения работы со скриптом сведения об удалённом хосте стоит хранить в файле
/.ssh/config , что позволит пользоваться простыми и короткими именами хостов. Например, сведения о компьютере lab могут выглядеть так:
На самом деле, острой необходимости в этом нет, но при таком подходе в вашем распоряжении будет приятно выглядящая директория
/remote/lab , а не сложная конструкция вида
/remote/alw@lab.wd5gnr-dyn.net:444 . Во всех этих параметрах нет ничего таинственного. Единственно, хочу обратить ваше внимание на то, что ControlMaster и ControlPath позволяют организовать более быструю работу с соединениями, что, в нашем случае, очень важно.
Кроме того, можно организовать автоматическое подключение к удалённой системе с использованием приватных ssh-ключей. Вот материал об этом.
Скрипт
Наш скрипт можно использовать двумя способами. Так, если его вызывают через ссылку к sshunmount , то он размонтирует файловую систему, связанную с указанным удалённым хостом. Если его вызывают иначе (обычно — как sshmount ), то он выполняет следующие три действия:
- Он проверяет, есть ли в директории
/remote поддиректория, имя которой совпадает с именем хоста (например — lab ). Если такой директории нет — он выводит сообщение об ошибке и продолжает работу.
Этот скрипт можно найти на GitHub. А вот его код, из которого убраны некоторые комментарии:
Этот скрипт даёт мне половину того, что мне нужно. А именно, позволяет удобно работать с удалёнными файлами на локальном компьютере, к которому я подключён. Но сделать так, чтобы с удалённого компьютера можно было бы работать с файлами, расположенными на локальной машине, немного сложнее.
Решаем обратную задачу
Если вы хотите поэкспериментировать с монтированием на сервере папок, находящихся на локальной машине, то нужно будет, чтобы на локальной машине работал бы ssh-сервер. Конечно, если ваш локальный компьютер видим и доступен серверу, то это просто: достаточно запустить на удалённом компьютере sshfs и смонтировать на нём папку с локального компьютера. Но во многих случаях у нас нет доступа к локальной системе, которая может быть расположена за файрволами или маршрутизаторами. Особенно это актуально в том случае, если роль локальной системы выполняет ноутбук, который может подключаться к сети из разных мест.
Но нашу задачу, несмотря на все эти сложности, всё же, можно решить. Её решение состоит из двух частей.
Во-первых — надо, при вызове sshmount , указать дополнительный аргумент (файл можно отредактировать в том случае, если вам нужно будет постоянно выполнять подобную команду):
Во-вторых — после подключения к хосту нужно выполнить такую команду:
Благодаря опции -R на удалённой машине создаётся сокет на порте 5555 (который, естественно, должен быть свободным) и осуществляется его связь с портом 22 локальной машины. Если исходить из предположения о том, что ssh-сервер работает на порте 22 , то это позволит серверу подключиться к локальной машине по тому же соединению. Ему не нужно знать наш IP-адрес или иметь открытый порт.
Команда sshfs , которую можно выполнять при запуске системы, связывает локальную директорию /home/me с директорией
/local удалённого сервера. Если, вдобавок, войти в систему локально, то можно будет взглянуть на переменные окружения, имена которых начинаются с SSH_ , и узнать подробности о SSH-соединении. Например, это переменные $SSH_CLIENT и $SSH_TTY .
Конечно, вам, чтобы вышеприведённые команды заработали бы у вас, нужно будет поменять имена хостов и директорий, а так же — адреса портов на те, которые используются в ваших системах. Но после того, как всё будет настроено, все нужные вам файлы будут доступны и на локальной, и на удалённой машинах. Я, кстати, не пытался организовать циклическое монтирование директорий. Если попытаться это сделать — может получиться нечто очень странное.
Итоги
Полагаю, нужно с осторожностью выполнять одновременное монтирование удалённых папок на локальной машине и локальных папок на удалённой машине. Например, утилиты, занимающиеся сканированием всей файловой системы, могут в таких конфигурациях запутаться. Кроме того, я всё ещё ищу ответ на вопрос о том, как правильно отключаться от серверной файловой системы при выходе из последней сессии.
Но и сейчас всё это даёт нам хорошие инструменты для организации удобной и надёжной работы с файлами по ssh . Надо отметить, что ещё одним вариантом решения задачи по работе с файлами удалённых систем может стать синхронизация папок и использование их для передачи файлов между компьютерами.
Чем вы пользуетесь для работы с файлами удалённых Linux-систем?
Источник