Deve ser algo como:
scp -P <port> user@comp1:Desktop/test1.txt ~/Downloads/
Execute isso no seu computador pessoal.
Espero que isso ajude você.
Eu quero copiar um arquivo ( home/remote_computer_user/Desktop/test1.txt
) do meu computador do escritório remoto (uma URL permanente + porta aberta) para o meu computador de casa ( home/home_computer_user/Downloads/
).
Como posso fazer isso com comandos shell no Linux?
Minhas ideias atuais:
ssh <user>@<computer1address> -p <port>
- me dá um shell no computador remoto scp
, mas não sei como exatamente no meu caso) Quais são os comandos exatos que devo usar?
Deve ser algo como:
scp -P <port> user@comp1:Desktop/test1.txt ~/Downloads/
Execute isso no seu computador pessoal.
Espero que isso ajude você.
scp
funciona, mas você também pode usar rsync
:
rsync -e 'ssh -p <port>' <user>@<computer1address>:Desktop/test1.txt ~/Downloads/
Na maioria das vezes, rsync
é um substituto substituto de scp
, ou seja, com a maioria dos comandos scp
, basta substituir scp
por rsync
e ele funcionará da mesma maneira. A única razão que não é verdadeira para o seu caso é que rsync
não tem a opção -p
para especificar a porta (bem, isso acontece, mas só se aplica quando o rsync se conecta através de seu próprio protocolo nativo, não ssh). Então você precisa dizer para usar um comando ssh alternativo que inclua a porta.
Se o seu servidor ssh usa a porta padrão, ou se você tem a porta configurada em ~/.ssh/config
(em ambos os casos, isso significa que você não precisa usar a opção -p
ao conectar com o ssh), então você pode apenas correr
rsync <user>@<computer1address>:Desktop/test1.txt ~/Downloads/
Em geral, eu prefiro rsync
to scp
porque ele tem muito mais opções, e porque se você está transferindo um grande número de arquivos, o rsync tem o bom senso de pular aqueles que já existem no sistema de destino, reduzindo a quantidade de dados que devem ser transferidos.
Se você tiver FTP ou SCP, use-o. É mais confortável. Se você está limitado a ssh (como eu estou em muitos sistemas embarcados)
Carregar arquivo único:
ssh login@remotehost -p remoteport "cat >filename" <filename
Faça o download do arquivo único:
ssh login@remotehost -p remoteport "cat filename" >filename
Carregar um diretório
tar -cf - dirname | ssh login@remotehost -p remoteport "tar -xf -"
Faça o download de um diretório
ssh login@remotehost -p remoteport "tar -cf - dirname" | tar -xf -
Em vez de dirname
, você pode especificar vários arquivos, diretórios ou um padrão para correspondência. Cuidado com os caminhos absolutos.
Uma alternativa ao scp que pode ser mais familiar e mais adequada para transferências de arquivos múltiplos é o sftp. Ele vem com todas as principais versões do ssh que eu encontrei.