5 Formas de transferência de ficheiros a partir de um sistema em rede

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”.

progreso-pv

E isto é o que parece com “status=progresso”.

dd status=progress

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.

uso de sshfs
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:

fstab

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:

simplehttpserver

Posteriormente, o endereço IP poderia ser acedido com um browser:

simplehttpserver visto con chrome

Como pode ver, o navegador mostra o mesmo que com “ls -al”:

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:

   

Deixe uma resposta