Как перенести файл между виртуальной машиной VirtualBox и хостом без общих папок
Функция общих папок не работает для вашей ОС на виртуальной машине VirtualBox? Вот быстрый обходной путь для передачи файлов между хостом и виртуальными машинами.
VirtualBox имеет функцию переадресации портов, которая позволяет получить доступ к службе или приложению, работающему на виртуальной машине, с хоста или даже из Интернета. С его помощью вы можете настроить быстрый http или ftp-сервер в виртуальной машине, а затем получить доступ к файлам снаружи. Или используйте команду scp для передачи файлов.
Шаг 1. Настройте переадресацию портов
Во-первых, выключите виртуальную машину. Затем откройте его «Настройки». Во всплывающем диалоговом окне перейдите в «Сеть» -> Адаптер 1 -> Дополнительно -> Переадресация портов.
В следующем диалоговом окне «Правила переадресации портов» щелкните значки в правом углу, чтобы добавить/удалить правила. Затем установите хост-порт и соответствующий гостевой порт.
- Например, если вы хотите использовать SSH или SCP для виртуальной машины, добавьте правило и установите гостевой порт на 22 (если используется порт SSH по умолчанию) и установите порт хоста на тот, который не используется.
- В моем случае я хочу настроить временный http-сервер Python, а затем получить доступ с хоста, поэтому я добавил правило и установил для хоста и гостевого порта значение 8000.
Шаг 2. Настройте временный http-сервер для передачи файлов.
Python предустановлен в большинстве Linux. Имеет встроенный скрипт, позволяющий быстро настроить http-сервер одной командой.
Просто загрузите виртуальную машину Linux. Затем щелкните правой кнопкой мыши нужную папку и выберите «Открыть в терминале» или «Открыть терминал здесь». Наконец, запустите команду для настройки простого http-сервера на виртуальной машине:
python3 -m http.server
Наконец, на хост-компьютере откройте веб-браузер и перейдите по адресу localhost:8000. Затем вы можете получить доступ (загрузить) ко всем файлам в этой папке на виртуальной машине.
Если вы хотите создать временный http-сервер с поддержкой загрузки, установите модуль uploadserver
на свою виртуальную машину с помощью команды:
pip install uploadserver
В некоторых Linux вы можете добавить флаг --break-system-packages
. Итак, команда будет:
pip install uploadserver --break-system-packages
Затем запустите http-сервер с функцией загрузки, выполнив команду:
python3 -m uploadserver
Наконец, на хосте перейдите по адресу localhost:8000/upload, чтобы загрузить файлы на виртуальную машину.
Шаг 3. (Необязательно) Используйте SSH/SCP.
По выбору вы также можете использовать протокол безопасной оболочки (SSH) для доступа к вашей виртуальной машине. В этом случае вам необходимо сопоставить порт 22 в гостевой системе с любым неиспользуемым портом (в моем случае 8088) на хосте.
SSH доступен в большинстве репозиториев Linux, и Windows может установить его из «Настройки» -> «Приложения» -> «Дополнительные функции» -> «Добавить функцию» -> «Сервер OpenSSH».
Запустив SSH-сервер на виртуальной машине, хост-машина может выполнить следующую команду для доступа к нему:
ssh -p 8088 jim@localhost
Замените номер порта 8088 и имя пользователя виртуальной машины jim
на свое.
Или используйте команду scp для передачи файлов между хостом и виртуальной машиной. Например, отправьте пакет «Sigil-2.0.1.tar.gz» из папки «Загрузки» хоста в домашний каталог пользователя виртуальной машины Джима:
scp -P 8088 /home/ji/Downloads/Sigil-2.0.1.tar.gz jim@localhost:
Или отправьте «Sigil-2.0.1.tar.gz» из домашнего каталога пользователя виртуальной машины Джима в текущий каталог на хост-компьютере:
scp -P 8088 jim@localhost:~/Sigil-2.0.1.tar.gz ./