Tabla de contenido
Olá! Hoje trago-vos várias formas de transferir ficheiros de um sistema em rede para outro sistema. Ou seja, como obter ficheiros de um sistema.
Há muitas maneiras de o fazer. Algumas delas são encriptadas e outras são simples. Logicamente os sem encriptação são mais rápidos, mas só devem ser utilizados em redes privadas e com dados não críticos (para evitar o roubo de dados).
1. Rsync de um sistema completo
O Rsync é um software que utiliza SSH para transferir ficheiros. Como funciona sobre o SSH, o SSH fornece a camada de encriptação.
Este utilitário tem a capacidade de (como o nome sugere), sincronizar ficheiros. Detecta alterações em ficheiros e copia ficheiros que tenham sido modificados para o destino.
Várias opções podem ser incluídas: Respeitar permissões (-p), respeitar proprietário (-o), respeitar grupo (-g), respeitar recorrência (-r), mostrar progresso (–progresso).
A forma de replicar um sistema completo para outro sistema é correr:
# rsync -avr --exclude={"/dev/*", "/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found","/boot/grub"} /* root@DESTINO:/ --progress
Esta linha exclui todos os directórios temporários que irão dar problemas, se quiser duplicar a máquina para a deixar operacional noutro local, é necessário excluir os ficheiros de configuração da rede.
Também pode executar a linha anterior para criar um recipiente ou uma cópia de segurança se em vez de o copiar para “root@DESTINATION:/” o copiar para “root@DESTINATION:/DIRECTORY”.
Se precisar de transferir ficheiros apenas uma vez e não tiver rsync na origem e destino, pode utilizar SFT que funciona de forma semelhante, excepto que não sincroniza as alterações, transfere todos os ficheiros.
2. DD + SSH
Como mencionado anteriormente, a forma mais versátil de encriptar transferências é com a camada SSH.
Com o seguinte método de transferência, fazemos uma cópia bit a bit de um ficheiro e enviamo-lo através do SSH. Esta opção é muito boa para enviar ficheiros para outro anfitrião, por exemplo, ao migrar um disco rígido de uma máquina virtual.
A forma de o utilizar é:
dd if=ORIGEN bs=128k |pv |ssh root@DESTINO "dd of=DESTINO_PATH bs=16k"
Também pode adicionar gzip à transferência para reduzir o tempo de transferência:
dd if=ORIGEN bs=128k |pv|gzip |ssh root@DESTINO "gunzip|dd of=DESTINO_PATH bs=16k"
O comando “pv” relata o fluxo de dados a ser transferido entre tubos, para que possamos conhecer o processo. As novas versões do “dd” já incluem uma opção para mostrar o processo: “status=progresso”.
Isto é o que pareceria com “pv”.
E isto é o que parece com “status=progresso”.
3. SSHFS
Este software é capaz de montar em rede uma rota remota através do SSH, como nos anteriores, o SSH fornece a camada de encriptação. Fá-lo de uma forma semelhante ao NFS.
A forma de o fazer é a seguinte:
sshfs root@HOST:/RUTA_REMOTA /PUNTO_DE_MONTAJE
Uma vez montados, os ficheiros e directórios podem ser copiados de/para o ponto de montagem.
Se quiser fazer uma montagem permanente desse ponto de montagem, uma das opções (e a melhor) é incluí-lo no fstab. Para o fazer, basta acrescentar uma linha:
root@HOST:/PATH_DESTINO PUNTO-DE-MONTAJE fuse.sshfs rw,nonempty
Ficaria assim:
4. SimpleHTTPServer
Quando precisamos de velocidade, e estamos na mesma rede ou a máquina de onde queremos obter os ficheiros tem um IP público, a opção mais rápida é esta. O que ele faz é montar um servidor http básico na porta que especificamos, no caminho actual (correr “pwd” para ver se estamos no directório necessário).
A forma de o gerir seria:
cd DIRECTORIO-DONDE-ESTÁN-LOS-FICHEROS && python -m SimpleHTTPServer PUERTO
Por exemplo:
Posteriormente, o endereço IP poderia ser acedido com um browser:
Como pode ver, o navegador mostra o mesmo que com “ls -al”:
5. Netcat
A forma mais tradicional de transferir ficheiros em texto simples é o netcat:
Por um lado, tem de o executar na máquina onde pretende largar o ficheiro:
nc -l -p PUERTO > FICHERO
E na máquina original
nc -w 3 HOST_DESTINO PUERTO < FICHERO_A_COPIAR
Neste caso, não vemos que não haja relatório de transferência, isto pode ser resolvido com PV:
Na máquina-alvo que operamos:
nc -w 3 HOST_DESTINO PUERTO |pv -b < FICHERO_A_COPIAR
Como pode ver, desta forma apenas um ficheiro é transferido, portanto se quiser transferir um directório, é melhor criar um ficheiro de alcatrão e transferi-lo.
É tudo por agora. Espero que tenha gostado, se gostou, por favor partilhe o artigo nas suas redes sociais.
Até breve!
Recomendamos os seguintes livros: