Como copiar arquivos de uma máquina virtual para uma máquina local?

3

Eu tenho uma máquina virtual no Virtualbox com o Ubuntu 15.04 (somente na interface de linha de comando) e quero copiar arquivos da máquina virtual para o host. Como eu tenho apenas o CLI, não consigo usar pastas compartilhadas.

Eu tentei acessar minha unidade USB do Virtualbox, mas não ajudou (eu tive que formatar o disco rígido depois de conectar ao Windows).

Existe alguma maneira de copiar arquivos do Ubuntu 15.04 (máquina virtual) para o Windows 7 ou drive USB?

Minha resposta: Eu marquei uma resposta como boa, mas consegui resolver o meu problema antes. Eu criei dois programas python. um arquivo de envio, segundo arquivo de recebimento.

Se alguém precisar deste programa aqui é código: (em ambos os casos xxx.xxx.xxx.xxx para o IP do fileServer)

fileServer.py (no computador que você deseja receber arquivos):

import socket
print('File server V 1.0 by vakus')
serv = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
serv.bind(('xxx.xxx.xxx.xxx', 9999))
serv.listen(1)
conn, addr = serv.accept()
print('Incoming Connection. Please write password:')
pas = bytes(input(), 'UTF-8')
conpass = conn.recv(1024)
if conpass != pas:
    print('Passwords are not the same. closing connection')
    conn.sendall(bytes('Passwords are not the same.', 'UTF-8'))
    conn.close()
    exit()
else:
    print('Passwords are the same.')
    conn.sendall(bytes('Passwords are the same.', 'UTF-8'))
filename = conn.recv(1024)
file = ""
while True:
    data = conn.recv(1024)
    if not data: break
    file += data.decode('UTF-8')
    print(data.decode('UTF-8'), end='')
print('Close connection')
conn.close()
print('Creating file...')
try:
    import os
    os.mkdir('recv')
    del os
except:
    pass
f = open('recv/' + filename.decode("UTF-8"), 'w')
f.write(file)
f.close()

fileTransmiter.py (no computador que envia o arquivo):

import socket
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.connect(('xxx.xxx.xxx.xxx', 9999))
sock.sendall(bytes(input('Password: '), 'UTF-8'))
answer = sock.recv(1024)
print(answer)
if answer == bytes("Passwords are not the same.", 'UTF-8'):
    exit()
filename = input('File to send: ')
f = open(filename)
sock.sendall(bytes(filename, 'UTF-8'))
for x in f.readlines():
    print(x)
    sock.sendall(bytes(x, 'UTF-8'))
sock.sendall(bytes('', 'UTF-8'))
sock.close()
print('Connection closed.')
    
por vakus 02.08.2015 / 19:09

2 respostas

1

Se você quiser usar um servidor SSH, tente o seguinte para configurá-lo. Estou assumindo que sua máquina virtual não precisa de muita segurança, pois essas instruções abrirão logins SSH raiz para sua máquina convidada. Você pode reverter essas alterações quando terminar.

Estou assumindo que o openssh server já foi instalado.

  • Abra seu arquivo de configuração openssh com seu editor de texto favorito. Se você estiver usando vim , por exemplo:

    sudo vim /etc/ssh/sshd_config
    
  • Adicione a parte inferior ou verifique se as linhas abaixo não estão comentadas. Se você não usa root , mas outro usuário, ignore as duas primeiras linhas:

    PermitRootLogin without-password
    PermitRootLogin yes
    PasswordAuthentication yes
    
  • Salve o novo arquivo de configuração.

  • Reinicie o servidor SSH:

    sudo restart ssh
    

Em seguida, simplesmente conecte-se à sua máquina convidada usando um cliente SFTP como o FileZilla. Basta digitar o endereço IP, os detalhes do seu usuário raiz (ou outro) na GUI e conectar-se.

    
por 02.08.2015 / 19:55
2

Veja como, desde que você tenha o FileZilla:

  1. na caixa Quickconnect , digite sftp://yourserver , seu nome de usuário e senha.
  2. Hitconnect VocêreceberáumavisoSSHinformandoquevocênãotemessachavedehostarmazenadaemcache.Opcionalmente,cliqueemAlwaystrustthishost,addthiskeytothecache
  3. Façaodownloaddessesarquivos!
por 02.08.2015 / 19:52