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 usandossh
: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 essescp
é 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
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 seriayum
ou, para versões realmente antigas de CentOS,up2date
ourpm
. - +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 comandoscp
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
:
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.
-
cd
para onde deseja que o arquivo seja salvo
$ cd Documents
- Conectar
$ sftp sammy@your_server_ip_or_remote_hostname
- Vá para o diretório que contém o arquivo a ser transferido.
$ cd NASA/secret_files/
- 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.
scp
para copiar um arquivo de ou para sua máquina local (Sistema A) enquanto estiver conectado a um servidor remoto (Sistema B) comssh
.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 usarscp
se ‘ reconectou-se ao Sistema B via SSH e deseja copiar arquivos entre o Sistema B e o Sistema C.-P
para especificar a porta TCP no host remoto. Isso me pega sempre, porquessh
usa-p
.