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

Обновлено: 01.07.2024

Требуется: передавать файлы или текст между основной и гостевой операционными системами в прямом и обратном направлениях. В связи с этим, рассмотрим возможные способы передачи данных в виртуальной машине Virtual Box.

Через буфер обмена

Актуальные виртуальные машины:

Vmware Player (Vmware WorkStation) и Virtual Box

По сути, в настоящее время (2018 г.) одними из наиболее актуальных и удобных виртуальных машин являются Vmware (WorkStation) Player и Virtual Box . Первая обладает особенно легкой возможностью настройки, в ней работает двусторонний буфер обмена, причем, для копирования/вставки как файлов, так и текста. Подключается он безо всяких настроек, сразу после установки виртуальной машины. Тогда как в Virtual Box , несмотря на декларированность, буфер обмена может и не работать. Даже несмотря на выполненные настройки двунаправленного буфера, установку дополнений и т.д. Итак, перейдем к рассмотрению способов передачи файлов и текста. Т.е., по сути, рассмотрим, как можно эмулировать двусторонний буфер обмена между гостевой и основной системами в Virtual Box .

По протоколам SSH, FTP и др.

Этот способ передачи требует наличия соответствующего сервера в одной из операционных систем (например, в гостевой) и клиента (например, такого, как FileZilla ) - в другой. Понятно, что таким образом возможно передать только файлы, текст передать не получится. Для работоспособности способа передачи по протоколам SSH, FTP необходимо, чтобы соответствующие сервер и клиент были постоянно загружены в оперативную память, т.е. чтобы они были работоспособны. В сети существует множество (как правило, повторяющихся) рекомендаций, каким образом сделать такие серверы автозагружаемыми, т.е. чтобы они автоматически начинали работать при загрузке гостевой операционной системы. Аналогично, можно сделать автозагружаемым, например, клиент. Можно, но это приведет к необходимости держать постоянно (точнее, все время, пока потребуется перенос файлов между гостевой и основной операционными системами) включенным соответствующий сервер. Что, кстати, может быть и небезопасно, особенно, если пользовательь компьютера не владеет навыками администрирования сетей. Ибо бесконтрольный доступ по SSH, FTP или другим аналогичным протоколам может привести как к скачиванию с компьютера тех или иных файлов, так и к бесконтрольной записи на него (например, опасных прорамм, вирусов).

Через внешние носители информации

Это может быть, например, жесткий диск, флешка и др. Способ кажется парадоксальным, но он вполне работает. Однако, здесь может быть небольшая проблема. Мало того, что носитель потребуется подключить к USB-порту. Так еще при каждом переносе из одной операционной системы в другую придется КАЖДЫЙ РАЗ (при очередном копировани файлов) подключать его к гостевой системе и потом отключать. Это, во-первых, вынуждает тратить время (ибо внешние носители, подключаемые к портам USB , отключаются/подключаются не мгновенно, а через несколько секунд), а, во-вторых, попросту не совсем удобно. Тем более, иногда, например, в Ubuntu , установленной в Virtual Box , флешка может работать некорректно.

Через сайт или онлайн-сервис в интернете

Это - вообще, надо сказать, экстравагантный способ, но он вполне работает, особенно легко, при копировании текста. Но, лишь при условии, что из обоих операционных систем есть одновременный доступ в интернет. При этом, конечно, необходимы будут, во-первых, браузеры, запущенные в обоих системах, через которые будет осуществляться передача информации. Данный способ особенно легок для копировании/вставке текста. При этом текст копируется откуда-нибудь (например, из текстового редактора, открытого в Ubuntu ) на страницу сайта, позволяющую сохранять информацию. После чего, из другой операционной системы (например, из Windows 7 ) в браузере обновляется страница и - можно скопировать оттуда текст, вставить его в соответствующую программу. работающую уже в этой операционной системе.

Данный способ отлично подойдет для переноса между операционными системами как "просто текста", так и файлов. Повторимся, для переноса текста достаточно будет вставить его на соответствующую страницы сайта в одной системе. а скопировать - из другой. Однако, вполне возможно, что форматирование (цвет, размер шрифта, поля и др.), конечно же, могут не сохраниться – это зависит от технологий, примененных на сайте. Кроме того, видимо, не всегда будет возможным вставить на сайт контент более сложный, чем текст, как то - таблицы, картинки. впрочем, есть облака, Google-диск, Яндекс-диск и т.п. Электронная почта, в конце концов. Кроме того, если страница такого сайта находится в открытом доступе - этот текст может быть доступен любым желающим, в том числе и поисковикам Google, Яндекс. При этом он может проиндексироваться ими и тогда его доступность для всех желающих еще более увеличится. Правда, можно разработать специальную страницу, защищенную паролем - как от остальных пользователей, так и от поисковиков. Впрочем, скорее всего, ничего разрабатывать не придется, так как уже давно имеются обласные технологии, позволяющие передавать файлы целиком. Есть электронная почта, разного рода WhatsApp и многие другие сервисы. Впрочем, для входа на запароленную страницу потребуется вводить пароль, что может быть несколько неудобно.

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

Через общие папки

Опять же, можно поступить, как минимум, двумя путями. Можно сделать общую папку (share) в основной операционной системе, затем установить сетевое соединение между ней и гостевой системой (на адрес вида 192.168.х.х ) и передавать файлы. Получится аналогия предыдущей возможности, правда, не через глобальную сеть (интернет), а через локальную, что, конечно, будет гораздо быстрее. Однако, этот способ сложен своею настройкой. Придется либо пробрасывать порты, либо отключать политику NAT . Последнее приведет к появлению дополнительной уязвимости, поэтому непрофессионалам это делать нежелательно. Да и профессионалам, без крайней необходимости, тоже.

А второй способ реализации общей папки является довольно простым. Его мы и рассмотрим ниже.

Как сделать общую папку в Virtual Box

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

Во-первых, следует правильно настроить виртуальную машину Virtual Box , установить дополнения для нее. Во-вторых, следует создать папку с соответствующим именем в каком-нибудь каталоге в основной операционной системе ( Windows 7 ). Пусть это будет папка с именем Common , расположенная в каталоге С:\Мои документы . Затем, в менеджере Virtual Box нужно выбрать:

Машина -> Настроить -> Общие папки

Появится панель, на которой можно добавить новую общую папку. Нажав кнопку (с зеленым крестиком), добавится строчка, в которой можно будет ввести адрес любой папки, которую мы ходим сделать общей:

Выбор общей папки в менеджере виртуальной машины Virtual Box

Щелкнув дважды на названии папки (или на кнопке "Изменяет выбранную папку" , появится панель, на которой можно будет изменить ее адрес. Например, сделаем общую папку с названием Common , расположенную в С:\Мои документы . При этом путь к папке будет С:\Мои документы\Common , тогда как ИМЯ будущей общей папки в основной системе ( Windows 7 ) будет просто Common .

Изменение названия общей папки в менеджере виртуальной машины Virtual Box

Таким образом, в Virtual Box в основной системе задано имя папки, которая вскоре станет общей.

Монтируем общую папку в гостевой системе Linux Ubuntu

Для этого открываем гостевую систему в виртуальной машине. Чтобы общая папка была доступна всем пользователям (в том числе и из основной системы Windows 7 ), назначаем ей самые широкие права доступа:

sudo chmod 777 /media/sf_Desktop

После чего, в консоли вводим команду монтирования:

sudo mount -t vboxsf Common /media/ sf_Desktop

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

Следует пояснить этот момент, ибо ПРАКТИЧЕСКИ НИГДЕ, где нам довелось читать материалы по настройке общих папок, он "почему-то" не объяснен вообще, даже на официальном сайте разработчика Virtual Box . Объяснение настройки виртуальной машины, на наш взгляд, достаточно туманное. И хорошо понятное лишь для тех, кто и так уже ознакомлен с этим процессом. Что же касается достаточно многих публикаций в интернете, то, насколько видно, достаточно многие из них попросту копируют одинаковый, по сути, контент другими словами, не делая детальных пояснений (сделав вид, что он "очевиден"), даже не вдумываясь в его смысл. Хотя, тем, для кого он действительно очевиден, подобные статьи (в том числе и эта) попросту ни к чему, они и так все это знают.

Итак, команда mount запускается в режиме администратора, поэтому в Ubuntu необходимо запускать ее через sudo . Потребуется ввести пароль.

vboxsf - это группа, в которую должен быть добавлен текущий пользователь Ubuntu . Если он НЕ добавлен, вначале следует это сделать. Для этого открываем терминал и от администратора ( root ) выполняем следующую команду:

sudo adduser user_name vboxsf (тоже может потребоваться ввод пароля).

Вместо user_name нужно ввести имя виртуальной машины (точнее, имя гостевой операционной системы Ubuntu в виртуальной машине), которое Вы вводили при инсталляции гостевой системы. И под которым работаете в Ubuntu (т.е. имя "простого" пользователя, не администратора). Возможно, после этого потребуется перезагрузить виртуальную машину, чтобы эти изменения вступили в силу. Перезагрузку можно сделать тремя способами:

  1. Первый . В консоли набираем соответствующую команду, например, reboot
    И нажимаем Enter , естественно. Ubuntu будет вскоре перезагружена.
  2. Второй . В менеджере Virtual Box выбираем Машина -> Перезапустить
  3. Третий . Выключить (закрыть соответствующее окно) гостевую операционную систему ( Ubuntu ) и затем в менеджере Virtual Box нажать
    Машина -> Сбросить сохраненное состояние или просто Сбросить

Common - это имя общей папки, точно соответствующее ее имени в основной операционной системе ( Windows 7 ), которое фигурирует в менеджере Virtual Box (конкретнее, в настройках общих папок, см. выше).

/media/sf_Desktop - это путь к этой общей папке в Ubuntu (здесь, как видим, она имеет ДРУГОЕ ИМЯ, не Common !! Да, здесь у нее может быть и другое имя, не совпадающее с именем в основной системе!). Каталог media содержится в корневом каталоге (под названием "Компьютер" ) Ubuntu .

sf_Desktop - это имя общей папки, которое создала сама Virtual Box , автоматически, при ее создании (см. выше). Оно может, повторимся, как совпадать, так и не совпадать с Common . Это – важный момент, на котором почти никто не акцентирует внимание.

А почему - именно sf_Desktop ? Это – дело случая. Дело в том, что sf_ - это стандартная аббревиатура, используемая Virtual Box . А Desktop - это имя ранее (изначально) использовавшейся общей папки на компьютере автора этой статьи. В принципе, это имя можно изменить и сделать его, например, Common (чтобы имена общей папки совпадали в обоих операционных системах). А можно и оставить, как есть.

С файлами - понятно, но как быть с передачей текста?

Таким образом, общая папка может легко использоваться для передачи файлов между обоими операционными системами в Virtual Box и туда, и обратно. Копируем в общую папку файл в одной операционной системе, переходим в другую операционную систему, смотрим уже там соответствующую общую папку - и видим этот файл уже там. Но, как же передать часть содержимого файла, например, текст? Очевидно, для этого в общей папке следует держать какой-нибудь (желательно, пустой) текстовый файл, в качестве буфера обмена. И. копировать в него текст в текстовом редакторе в одной операционной системе, а извлекать этот текст - в другой. Например, копируем в основной системе текст в Windows 7 в редакторе Notepad++ , а в Linux Ubuntu (гостевая система) - используем редактор Gedit . Т.е., по сути, у нас получился практически аналог буфера обмена, правда, немного менее удобный, требующий нескольких лишних нажатий мыши. Кроме того, обязательно : оба файла должны быть в одинаковой кодировке! Если в Linux Ubuntu кодировка UTF-8 установлена по умолчанию (в том числе и в текстовом реадкторе Gedit ), то в Windows редактор Notepad++ или какой-либо другой текстовый редактор может открыть файл и в другой кодировке, например, в CP1251 . В результате, нелатинские буквы могут превратиться в нечитаемые символы.

Ну, а как быть с рисунками, таблицами, .

Здесь - два варианта. Либо используем, опять-таки, два соответствующих графических, табличных редактора в разных операционных системах (например, кроссплатформенные Gimp или InkScape - для графики), вставляя рисунок в одной системе, извлекая - в другой. Либо - архивируем соответствующий файл и передаем через общую папку, затем производим разархивирование.

Странно, конечно, что же мешало разработчикам Virtual Box сделать полноценный, легко настраиваемый буфер обмена - как для текстов, так и для файлов? Как это сделано в Vmware Player . Ведь, по сути-то, ничего сложного здесь нет. Вполне можно было бы сделать временный каталог и временный файл, которые и выполняли бы функции соответствующих буферов обмена.

В этой статье показано, как перемещать файлы между рабочей станцией и виртуальной машиной Azure под управлением Linux, используя протокол SCP. Быстрое и безопасное перемещение файлов между рабочей станцией и виртуальной машиной с Linux является важной частью управления инфраструктурой Azure.

Для этой статьи необходима виртуальная машина Linux, развернутая в Azure с помощью файлов открытого и закрытого ключей SSH. Кроме того, нужен клиент SCP для локального компьютера. Он создан на основе SSH и включен в стандартную оболочку Bash на большинстве компьютеров Linux и Mac, а также в PowerShell.

Быстрые команды

Копирование файла на виртуальную машину под управлением Linux

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

Подробное пошаговое руководство

В качестве примера мы переместим файл конфигурации Azure на виртуальную машины Linux и извлечем каталог файлов журнала, используя SCP и ключи SSH.

Аутентификация с помощью пары ключей SSH

SCP использует SSH на транспортном уровне. Протокол SSH осуществляет аутентификацию на целевом узле, перемещая файл в зашифрованный канал, который по умолчанию предоставляется для SSH-подключения. Для аутентификации SSH можно использовать имена пользователей и пароли. Тем не менее по соображениям безопасности рекомендуется использовать аутентификацию с открытым и закрытым ключами SSH. После аутентификации подключения с помощью SSH инструмент SCP начинает копирование файла. При использовании правильно настроенного файла

/.ssh/config , а также открытого и закрытого ключей SSH подключение SCP можно установить, указав только имя сервера (или IP-адрес). При наличии только одного ключа SSH инструмент SCP будет искать его в каталоге

/.ssh/ и использовать по умолчанию для входа на виртуальную машину.

Дополнительные сведения о настройке файла

Копирование файла на виртуальную машину Linux с помощью SCP

В первом примере файл конфигурации Azure копируется на виртуальную машину Linux, которая используется для автоматизации развертывания. Так как этот файл содержит учетные данные API Azure, в том числе секреты, важно обеспечить его безопасность. Зашифрованный туннель, предоставляемый SSH-подключением, защищает содержимое файла.

Копирование каталога с виртуальной машины Linux с помощью SCP

В этом примере выполняется копирование каталога с файлами журнала с виртуальной машины Linux на вашу рабочую станцию. Файл журнала может содержать или не содержать секретные данные. Однако применение SCP гарантирует шифрование содержимого файлов журналов. Самый простой способ передать каталог и файлы журналов на рабочую станцию — использовать SCP для безопасной передачи файлов.

Следующая команда копирует файлы из каталога /home/azureuser/logs/ на виртуальной машине Azure в локальный каталог /tmp.

Если в командной строке указан флаг -r , SCP рекурсивно копирует файлы и каталоги, начиная с указанного в команде места в иерархии каталогов. Обратите также внимание, что синтаксис для командной строки аналогичен синтаксису команды копирования cp .

Как перенести файлы с Windows на Ubuntu, установленные на Virtualbox? Когда я подключаю USB, он появляется только в Windows.

Как я могу увидеть его в Ubuntu?

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

Вариант 1: Перед загрузкой Ubuntu внутри виртуальных настроек Virtualbox Ubuntu укажите папку общего доступа. Затем после входа в Ubuntu создайте новый каталог, например /media/vboxshared , и смонтируйте этот диск с помощью команды sudo mount -t vboxsf SHARENAME /media/vboxshared . Введите пароль, когда он запрашивает пароль.

Вариант 2: Перед загрузкой Ubuntu добавьте новый сетевой адаптер и выберите «Bridged Adapter». Затем после входа в Ubuntu запустите команду ifconfig -a | more , чтобы получить IP-адрес этого нового сетевого адаптера. В Windows используйте WinSCP или FileZilla для передачи файла в Ubuntu

Спасибо за ответ Элвина Сим. Хотя это ясно, я все еще трачу некоторое время, чтобы сделать все правильно. Хорошо, вот мои подробные шаги с использованием варианта Alvin Sim 1.

  1. Перед запуском вашего гостя
  2. Перейти в VirtualBox Manager
  3. Выберите желаемого гостя.
  4. Перейдите на страницу Guest Настройки
  5. В гостевом Настройки прокрутите левое боковое меню и перейдите в Общие папки
  6. В Общие папки добавьте свою интересующую папку на хост-машине
  7. После добавления пути к папке «Хост» вы увидите обновленный Folders List в Общие папки . Помните свою новую папку Name , показанную в этом списке. Скажем, что это HOST_SHARE .
  8. Нажмите «ОК» и сохраните изменения.
  9. Запустите вашу гостевую машину.
  10. В гостевой машине создайте новую папку, например. GUEST_SHARE

В гостевом терминале введите

Если вы видите ошибку mount: wrong fs type, bad option, bad superblock on … , это означает, что вам сначала нужно установить virtualbox-guest-utils

Затем снова запустите команду mount

Вы найдете свои материалы в этой папке GUEST_SHARE .

В любом случае вы можете легко сделать USB-ключ видимым в гостевой. Из вашего вопроса я предполагаю, что вы запустили Ubuntu в гостевой системе, а хост - Windows.

Всякий раз, когда вы вставляете USB-ключ, если вы хотите увидеть его в гостевой системе, выполните следующие действия:

Извлеките USB из окон, щелкнув соответствующий значок в правом нижнем углу и выбрав опцию «безопасно удалить . ».

В окне VirtualBox выберите пункт меню «Devices => usb devices» в главном меню гостевого окна и выберите USB-ключ. Теперь он должен появиться в Ubuntu.

Эта операция эквивалентна физическому вставке вашего USB-ключа в USB-порт гостевой машины.

В противном случае остальные параметры

Общая папка, как указано в ответах laebshade и Alvin Sim. Но это может быть медленным.

FTP и т. д., как также указано в ответе Алвина Сим (предполагается, что у вас есть ftp-сервер на хосте Windows).

Простая гора самба из гостя:

Для небольших томов и частой синхронизации откройте учетную запись Dropbox.

  1. создайте свою общую папку на своем ПК. например «c: \ SharedBoth»
  2. убедитесь, что вы выбрали свою общую папку c:\SharedBoth в меню виртуальных ящиков «настройки» - «общие папки» - «добавить» - constant /automount ", прежде чем запускать виртуальную машину ubuntu.
  3. запустите терминал ubuntu, введите команду выше,
    sudo mount -t vboxsf SharedBoth /media
  4. затем проверьте, создана ли папка sf_SharedBoth в папке с медиа Прежде чем сделать шаг 3, вам нужно убедиться, что вы установили «гостевые дополнения»

Какой хост, и который является гостем? В любом случае, Virtualbox имеет механизм совместного использования, который вы можете использовать; просто установите гостевые дополнения как описано в документации , затем настройте общий ресурс в конфигурации VirtualBox.

Как передавать файлы между хостом и виртуальной машиной (Ubuntu 14.04) в Virtualbox

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

1. Монтажная панель общего хоста и виртуальной машины.

Условия подготовки: Virtualbox оснащен инструментами улучшения (VBoxGuestAddtions.iso)

1. Откройте Virtualbox, выберите виртуальную машину, к которой необходимо предоставить общий доступ, и нажмите «Настройки (S)».







3. Запустите эту виртуальную машину, вы обнаружите, что можете скопировать файл с хоста на виртуальную машину, перетащив мышью, или скопировать строку на хосте с помощью CTRL + C, а затем использовать CTRL + V в виртуальной машине. Используйте эти скопированные строки.

2. Создайте общий каталог между хостом и виртуальной машиной.

Условия подготовки: Virtualbox оснащен инструментами улучшения (VBoxGuestAddtions.iso)

1. Откройте Virtualbox, выберите виртуальную машину, к которой необходимо предоставить общий доступ, и нажмите «Настройки (S)».



2. Выберите «Общая папка» во всплывающем меню, а затем нажмите кнопку «Добавить» в правом верхнем углу (область, обведенная красным пером).




4. Запустите эту виртуальную машину, затем создайте каталог (/ home / miss / share), а затем выполните команду «sudo mount -t vboxsf Share / home / miss / share /», где Share - это имя совместно используемого файла, созданного ранее. Наконец, выполните df, чтобы убедиться, что он успешно смонтирован.



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

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