Como copiar arquivos de uma máquina para outra usando ssh

Estou usando máquina Linux (centos), já conectei ao outro sistema usando ssh. Agora minha pergunta é como posso copiar arquivos de um sistema para outro sistema?

Suponha que, em meu ambiente, eu tenha dois sistemas como System A e System B. Estou usando System A máquina e outra usando System B máquina.

Como posso copiar um arquivo de System B para System A? E, copie um arquivo de System A para System B?

Comentários

  • Acho que scp costuma ser uma pedra de pesar. Se puder atender às suas necessidades, experimente linuxjournal.com/article/8904 Ele monta o sistema de arquivos remoto localmente.
  • @Alan Acho que você quer dizer ” pesado “? Cumber Stone é um cartão Magic 😉
  • um tanto relacionado: faça um arquivo criptografado de dir/ local na máquina remota usando ssh : tar -c dir/ | gzip | gpg -c | ssh user@remote 'dd of=dir.tar.gz.gpg'
  • Se você tiver acesso ao ftp do servidor remoto, também podemos usar o wget para fazer download como $wget -r --level=9 --no-parent --reject "index.html*" ftp://<USERID>:<PASSWORD>@<MACHINE-NAME>/path/to Referência1 Referência2
  • Não duplicada, a pergunta vinculada pede especificamente para não usar scp; pois esse scp é a maneira mais fácil e adequada de responder, então mods remova a sinalização duplicada como se alguém fosse para outra, a resposta mais útil será perdida.

Resposta

Sintaxe:

scp <source> <destination> 

Para copie um arquivo de B para A enquanto estiver conectado a B:

scp /path/to/file username@a:/path/to/destination 

Para copiar um arquivo de B para A enquanto estiver conectado a A:

scp username@b:/path/to/file /path/to/destination 

Comentários

  • Para esclarecer, você normalmente não ‘ t use scp para copiar um arquivo de ou para sua máquina local (Sistema A) enquanto estiver conectado a um servidor remoto (Sistema B) com ssh. scp irá conectá-lo ao servidor remoto, copiar o arquivo e, em seguida, desconectar-se novamente em um processo, então apenas execute-o de um shell em sua máquina local. Dito isso, você pode usar scp se ‘ reconectou-se ao Sistema B via SSH e deseja copiar arquivos entre o Sistema B e o Sistema C.
  • @DopeGhoti. Sim, você não pode ‘ mover arquivos entre dois computadores remotos. A origem ou o destino deve ser um arquivo local. No entanto, se você efetuar login em uma máquina remota com ssh, você pode copiar arquivos entre duas máquinas remotas nessa máquina ‘ s linha de comando.
  • Além disso, uma coisa importante a lembrar é que você só pode usar o scp para uma pasta na máquina de destino para a qual tenha permissões. Se você está tentando copiá-lo para um destino para o qual o usuário alvo não tem permissão, primeiro copie o arquivo para o diretório inicial ou subdiretório do usuário ‘ e, em seguida, ssh no máquina de destino e sudo movê-lo para o destino final
  • Lembre-se -r (recursivo) e -p (preservar os metadados do sistema): scp -rp < arquivo1 > < file2 >
  • Sim, use -P para especificar a porta TCP no host remoto. Isso me pega sempre, porque ssh usa -p.

Resposta

Caso precise de uma abordagem alternativa.

Instale o sshfs. se você usa ubuntu / debian:

sudo apt-get install sshfs 

ou, se você usa centos / rhel:

sudo yum install fuse-sshfs 

ou, no macOS

brew install sshfs 

Crie um diretório vazio

mkdir /home/user/testdir 

“vincular” ou “montar” os dois diretórios

sshfs [email protected]:/remote/dir /home/user/testdir 

“desvincular” os diretórios

fusermount -u /home/user/testdir 

No BSD e no macOS, para desmontar o sistema de arquivos:

umount mountpoint 

ou

diskutil unmount mountpoint 

Para mais informações, veja aqui, linuxjournal.com libfuse / sshfs

Comentários

  • A pergunta afirma especificamente que o sistema operacional em questão é CentOS; não derivado do Debian. apt-get é um Debianismo; o gerenciador de pacotes correto seria yum ou, para versões realmente antigas de CentOS, up2date ou rpm.
  • +1 a resposta para esta pergunta pode estar fora do contexto, mas ainda me ajudou, e pelo que posso ver, outras pessoas também.
  • Não relacionado, mas ‘ sa resposta de um milhão de dólares xD
  • Se bem entendi, isso dá ACESSO aos arquivos remotos, mas não os COPIA?
  • @ ToolmakerSteve você ‘ está perfeitamente certo: ele cria um diretório falso (montagem), para que você possa usar todas as suas ferramentas preferidas para copiar ou mover coisas: cp, mv, rm, rsync, unison … O comando scp só poderia copiar arquivos.

Resposta

Às vezes, você precisa se divertir com o tar:

tar -C / -cf - \ opt/widget etc/widget etc/cron.d/widget etc/init.d/widget \ --exclude=opt/widget/local.conf | ssh otherhost tar -C / -xvf - 

Comentários

  • Criatividade? É assim que costumávamos compartilhar drives de fita. 🙂
  • Você pode nos dizer o que isso faz? Por exemplo, não tenho ideia do que ‘ cron ‘ tem a ver com a cópia de arquivo!
  • @aliqandil opt / widget etc / widget etc / cron.d / widget etc / init.d / widget são arquivos individuais a serem incluídos no arquivo tar. O objetivo era ilustrar por que às vezes você precisa ser extravagante. Esta série de comandos envia o arquivo tar por meio de uma conexão ssh e desarquiva-o do outro lado. Portanto, nenhum arquivo tar é gravado no disco. Eu uso isso às vezes para escolher os arquivos para copiar em um comando.
  • Ow! Eu ensinei que o primeiro ‘ / ‘ era o caminho de origem! (O que é isso?) Então essa foi uma pergunta boba! Obrigado. 🙂
  • Tar irá chdir para ” / “, portanto, todos os seguintes caminhos são relativos a ” / “.

Resposta

Se você deseja manter os arquivos em ambos os sistemas sincronizados, dê uma olhada no programa rsync:

(veja o tutorial aqui)

Comentários

  • Esta é uma ferramenta realmente profissional.

Resposta

Se você tiver um dos sistemas operacionais comuns, pode instalar o pigz que é igual ao gzip, exceto que usará vários núcleos e ser mais rápido em uma rede rápida. Meu comando é um pouco diferente.

tar cf - -C /opt -S <dir> | pigz | ssh <target> "pigz -d | tar xf - -C /opt -S" 

ou a outra maneira de obter arquivos

ssh <target> "tar cf - -C /opt -S <dir> | pigz" | pigz -d | tar xf - -C /opt -S 

ou faça backup do fs raiz com

ssh <target> "tar cf - -C / --one-file-system -S --numeric-owner . | pigz" > root.tgz 

Comentários

Resposta

Um método mais simples que funciona com computadores NVIDIA Jetson controlados por SSH é conectar-se com SFTP (SSH File Transfer Protocol).

Suponha que eu queira mover o documento UFO_blueprint.odt dos servidores remotos da NASA e mova-o para meus documentos.

  1. cd para onde deseja que o arquivo seja salvo
$ cd Documents 
  1. Conectar
$ sftp sammy@your_server_ip_or_remote_hostname 
  1. Vá para o diretório que contém o arquivo a ser transferido.
$ cd NASA/secret_files/ 
  1. Transferir
$ get UFO_blueprint.odt 

Para obter o diretório completo, use

$ get -r secret_files/ 

Comentários

  • use put comando para enviar arquivos

Resposta

Cópia recursiva Unix / Linux de arquivos e pastas sobre um shell seguro usando o seguinte código:

scp -r <host@machine_name:from_remote_directory_path> <to_local_directory_path> 

Um exemplo completo pode ser semelhante a:

scp -r sizwe@hprobook:./home/sizwe/PycharmProjects ./home/immaculate/OtherPycharmProjects 

Observe que se você não tiver um servidor DNS para resolver nomes de host, use seu endereço IP. O exemplo acima pode ser semelhante a este

scp -r 192.168.43.167:./home/sizwe/PycharmProjects ./home/immaculate/OtherPycharmProjects 

Resposta

Se estiverem em execução SCP / SSH em uma porta diferente, certifique-se de especificar a opção de porta -P maiúscula.

Exemplo:

 scp -P 7121 /users/admin/downloads/* [email protected]:/home/  

Comentários

  • Esta pergunta tem sete anos e muitas respostas já. Embora seja verdade que o ssh pode usar portas não padrão e a opção do cliente ssh ‘ s -P é então necessária, você não ‘ realmente ajuda com o problema em questão. Tente se concentrar nas perguntas recentes.

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *