Como copiar um arquivo de um servidor remoto para uma máquina local?

171

No meu terminal shell, eu ssh'ed em um servidor remoto, e eu cd para o diretório que eu quero.

Agora, neste diretório, existe um arquivo chamado table que desejo copiar para minha máquina local /home/me/Desktop .

Como posso fazer isso?

Eu tentei scp table /home/me/Desktop , mas deu um erro sobre nenhum arquivo ou diretório.

Alguém sabe como fazer isso?

    
por omega 05.03.2015 / 03:30

5 respostas

287

A sintaxe para scp é:

Se você estiver no computador a partir do qual deseja enviar o arquivo para um computador remoto:

scp /file/to/send username@remote:/where/to/put

Aqui, o remote pode ser um FQDN ou um endereço IP.

Por outro lado, se você estiver no computador que deseja receber o arquivo de um computador remoto:

scp username@remote:/file/to/send /where/to/put

scp também pode enviar arquivos entre dois hosts remotos:

scp username@remote_1:/file/to/send username@remote_2:/where/to/put

Portanto, a sintaxe básica é:

scp username@source:/location/to/file username@destination:/where/to/put

Você pode ler man scp para ter mais ideias sobre isso.

    
por 05.03.2015 / 03:45
13

Você pode usar rsync como alternativa. É principalmente para sincronizar arquivos .. mas você pode usá-lo para este fim também.

rsync -avzh --stats --progress remoteuser@remoteip  localpath 

para adicionar opções ssh:

rsync -e "ssh -P $port_value" remoteuser@remoteip  localpath

--progress e --stats são úteis para exibição em tempo real da transferência.

    
por 13.01.2017 / 23:29
7
scp [email protected]:/root/Jmeter/reports.jtl Downloads/
    
por 24.09.2015 / 07:52
5
scp username@ipaddress:pathtofile localsystempath

scp sadananad@ipaddress:/home/demo/public_html/myproject.tar.gz .

Se você estiver usando a porta:

scp -Pportnumber username@ipaddress:pathtofile localsystempath 

scp -P2233 sadananad@ipaddress:/home/demo/public_html/myproject.tar.gz .
    
por 26.05.2016 / 20:13
2

Se você confiar totalmente em todos na rede e puder conectar uma porta da máquina de destino diretamente, poderá usar o netcat: nc .

Digamos que o endereço IP da máquina de destino seja 192.168.1.123

Na corrida de destino:

nc -l -p 7777 0.0.0.0 | tar zxvf - -C dest_dir

Você pode escolher uma porta diferente e também vincular a outro IP de suas interfaces, o 0.0.0.0 apenas captura todas as interfaces.

Na execução da fonte:

tar zxcf - filename | nc 192.168.1.123 7777

IMHO, esta é a maneira mais rápida possível de enviar um arquivo de um computador para outro usando redes digitais.

Os argumentos e opções de linha de comando podem mudar levemente entre as diferentes versões de nc e tar , mas definitivamente funcionarão com as distribuições recentes do Linux.

    
por 21.05.2017 / 18:44

Tags