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

238

No shell do meu terminal, transferi-me para um servidor remoto e cdno diretório que desejo.

Agora, neste diretório, existe um arquivo chamado tableque eu quero copiar para a minha máquina local /home/me/Desktop.

Como posso fazer isso?

Eu tentei, scp table /home/me/Desktopmas deu um erro sobre esse arquivo ou diretório.

Alguém sabe como fazer isso?

ómega
fonte
Se você se copia frequentemente com o scp, pode montar o diretório remoto no navegador de arquivos e arrastar e soltar. No meu host Ubuntu 15, está sob a barra de menus "Ir"> "Inserir local"> [email protected]:/home/debian. Como alternativa, pode-se usar sshfspara montar o sistema de arquivos da máquina remota no host. Mas essa configuração está um pouco mais envolvida.
ConvexMartian #
rsyncuma chance. É ótimo tanto para cópias locais e remotas, dá-lhe copiar o progresso, etc. Um exemplo
sakisk

Respostas:

381

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, remotepode ser um FQDN ou um endereço IP.

Por outro lado, se você estiver no computador que deseja receber arquivos 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 scppara obter mais idéias sobre isso.

heemail
fonte
4
E se eu quiser copiar vários arquivos? Adicionei um espaço e apenas usei outro /file/to/sendObrigado pela sua resposta incrível!
Camdixon
6
scp -rirá copiar recursivamente.
Henry
O que eu quero copiar os arquivos de rede para minha VM ... como conseguir o mesmo usando scp
Sushivam
2
@heemayl +1 pela boa resposta. Pensou em acrescentar que, no caso de ser uma conexão segura (que requer autenticação), você pode usar o seguinte (para copiar arquivo do local para o remoto): scp -i mykey.pem somefile.txt [email protected] : / some / folder / in / remote
Guy Avraham
1
Use scp -P 123para especificar porta personalizada
aexl
14

Você pode usar rsynccomo uma alternativa. É principalmente para sincronizar arquivos .. mas você pode usá-lo para esse fim também.

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

para adicionar opções ssh:

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

--progresse --statssão úteis para exibição em tempo real da transferência.

fugitivo
fonte
12
scp [email protected]:/root/Jmeter/reports.jtl Downloads/
user135545
fonte
4
Eu gosto desse tipo de resposta.
xtluo
8
scp username@ipaddress:pathtofile localsystempath

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

Se você estiver usando com porta:

scp -Pportnumber username@ipaddress:pathtofile localsystempath 

scp -P2233 sadananad@ipaddress:/home/demo/public_html/myproject.tar.gz .
Sadanand Kenganal
fonte
Isso copiará o arquivo para o mesmo diretório remoto.
precisa
3

Se você confia completamente todos na rede e você pode conectar uma porta da máquina de destino diretamente, você pode usar netcat: nc.

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

Na execução 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, 0.0.0.0 apenas captura todas as interfaces.

Na execução de origem:

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 as opções da linha de comando podem mudar um pouco entre as diferentes versões do nce tar, mas definitivamente funcionarão com distribuições recentes do Linux.

onur güngör
fonte
2

No Linux, para copiar uma pasta e seu conteúdo do diretório user (root neste exemplo) para uma pasta no diretório local do usuário, eu executo este comando na máquina local:

scp -r [email protected]: ~ / folderinremoteuserdir ~ / folderinlocaluserdir

Observe o ~ / que muitas vezes pareço esquecer ...

Little Brain
fonte