Cómo transferir documentos y archivos a otro computer

Hay diferentes programas en Linux para transferir documentos, archivos, imágenes y vídeos a otro Computer. Yo aquí hablare de cp, netcat y rsync. La diferencia mas importante de cp y netcat con rsync, es que este últimos utiliza en la transferencia el protocolo SSH.




Aquí hablare cómo utilizar cp, netcat y rsync en Debian y sus derivados como Ubuntu y Linux Mint. En otras Linux distribuciones (Red Hat, Fedora, Mandriva, Suse, Gentoo,.., se usan diferentes comandos para hacer lo mismo.

Sobre la transferencia segura de datos en scp, openssh dice;
El protocolo scp está desactualizado, es inflexible y no se repara fácilmente. Recomendamos el uso de protocolos más modernos como sftp y rsync para la transferencia de archivos.

Por esté motivo, no hablare de él aquí.


Una cosa importante que no se te debes olvidar cuando utilizes uno de estos tres programas, cuando quieras copiar algo, y tenga un nombre con espacios vaciós, por ejemplo, mi documento.txt, tienes que usar un string, dos comillas dobles " ", asi que mi documento.txt, seria "mi documento.txt", si no utilizas el string en estos casos, te dara error.


cp

El programa cp (copia) permite copiar archivos, directorios y fotografias. Es aconsejable por seguridad usar cp solo para copiar archivos y documentos localmente, esto es, dentro de tu sistema. El programa viene instalado por defecto en tu Linux distribución.


Ejemplo:

Queremos copiar el documento mi_documento.txt de A a B, los dos están en el mismo computer.

mi_documento.txt está en el directorio Escritorio

Es el directorio Documentos

La sintaxis:

cp [origen] [destino]

El comando

cp ~/Escritorio/mi_documento.txt ~/Documentos



Ejemplo:

Queremos copiar la carpeta privado que está en el directorio Documentos que está en A y la queremos llevar a B, también queremos que mantenga todos los derechos de archivo, usuarios, grupos,.. , los dos estan en el mismo computer.

La carpeta privado está el directorio Documentos

Es el directorio Fotografías

La sintaxis:

cp [-a] [origen] [destino]

Por defecto, cp crea un nuevo archivo que tiene el mismo contenido que el archivo copiado y los mismos permisos, pero restringido por la umask, la copia está fechada desde el momento que la copia se hizo y pertenece al usuario que hace la copia.

Con -a consegiremos la Recursión de nuestra carpeta privado y el mismo tiempo de modificación, el mismo tiempo de acceso y los mismos permisos que el original.

El comando

cp -a ~/Documentos/privado ~/Fotografias


Si escribes en tu Terminal man cp, recibiras mas opciones con las que podras copiar.



netcat

Netcat es una herramienta de red que tiene muchas utilidades, por eso se le llama «navaja suiza». Se puede utilizar en el terminal o en scripts para la comunicación a través de conexiones de red TCP y UDP ( Protocolo de Internet versión 4 y versión 6), pero también se usa en sockets de dominio Unix locales, por lo tanto, es adecuado para numerosas aplicaciones de conexión de red. El viene instalado en Ubuntu y Linux Mint, pero no en Debian, ahora lo instalamos,

Actualiza tu sistema

sudo apt-get update

Instala netcat

sudo apt-get install netcat-openbsd


Ejemplo:

Queremos usar netcat como Chat, el computer A es nuestro servidor y el computer B es el cliente, usaremos para comunicarnos Dos terminales, uno sera el servidor y el otro el cliente.

La parte del servidor empieza siempre primero..

El comando:

nc -vlp 1234

nc netcat

v Muestra información de la conexión

l Indica que netcat abre el puerto para Escuchar

p Especifica el puerto

1234 Son los puertos que abríremos para probar, para abrir los puertos tienes que saber dos cosas importantes, 1- Los puerto usados por los protocolos TCP y UDP y que tú no puedes usar, porque los usan otros protocolos, una lista de estros protocolos. 2- Los Puertos de nuestro computer, que en las distribuciones basadas en Debian, como Ubuntu y Linux Mint, están por defecto cerradas. Para habrirlos, necesitamos instalar un Cortafuegos que nos dara la oportunidad de abrir los Puertos que queramos, instalaremos ufw que utiliza la línea de comandos y es fácil de utilizar.

Actualiza tu sistema

sudo apt-get update

Instala ufw

sudo apt-get install ufw

Abre los Puertos 1234 en computer A

sudo ufw allow 1234/tcp

Cuando acabemos nuestro Chat, por seguridad, cierra este Puerto

sudo ufw deny 1234/tcp


Abajo describó estos pasos mas detalladamente.


Para que el computer B pueda conectarse conmigo, tiene que saber mi IP, para saberlo escribo en el Terminanal,

ip a

Y nos saldrá una cosa parecida a esta,

password para root

enp0s3 Es el nombre de mi interfaz de red, es la interfaz de red en Ethernet, Por "interfaz", se entiende como algo que se interpone entre la computadora y la red, En Ubuntu y Linux Mint es está el nombre dado por defecto a la interfaz de red, en Debian es enp31s0.

192.168.178.25 Es el IP del computer A


La parte del cliente empieza despues.

El comando:

nc 192.168.178.25 1234

nc netcat

192.168.178.25 Es el ip del computer A

1234 Son los puertos que se abren por defecto para probar.


Empecemos con el Chat

Escribimos en el Terminal del computer A que es nuestro servidor,

nc -vlp 1234

Escribimos lo que queramos, yo escribo Hola como estas? y le damos a la tecla ↵ entrar, que es como mandamos nuestro mensaje.

password para root

Escribimos en el Terminal del computer B que es nuestro cliente,

nc 192.168.178.25 1234

Escribimos lo que queramos, yo respondo Yo bien y tú ? y le damos a la tecla ↵ entrar, que es como mandamos nuestro mensaje.

password para root

Para acabar nuestro Chat, le damos a las teclas Crtl + C


Ejemplo:

Queremos copiar la pelicula Matrix.mp4, que está en el directorio Vídeos del computer B y queremos llevarlo al computer A. Para hacer esto usaremos netcat y el programa tar que nos dara la oportunidad de guardar los derechos de usuario de nuestro documento, archivo,.., en el archivo que creemos y restauran al desempaquetar (pero solo si el origen y el destino son compatibles con los derechos del archivo Unix).

El programa tar viene instalado por defecto en tu Linux distribución, pero si no está, intalalo con este comando,

Actualiza tu sistema

sudo apt-get update

Instala tar

sudo apt-get install tar


Es donde queremos transferir nuestra pelicula. Es la computadora que usamos como servidor y por eso el debe ser la primera en comenzar.

El comando:

nc -l -p 1234 | tar xvfp -

nc El programa netcat

-l Indica que Netcat abre el puerto para Escucha (Listen): Acepta una única conexión de un Cliente y se cierra.

-p 1234 El puerto que usamos para conectarnos con el computer B.

| Es un pipeline o su nombre mas comun, pipe, se usar para separar diferentes procesos que estan en la misma linea de comando.

tar xvfp El programa tar, -xvfp son las opciones para extraer el archivo que hemos creado en computer B.

- Por convención, un guión independiente en lugar de un nombre de archivo significaría stdin o stdout, aquí seria la salida, stdout.


La pelicula Matrix.mp4, que esta en el directorio Vídeos

La sintaxis:

~/Videos$ [tar] [cfp] [-] [|] [nc] [-w 3] [ip] [puerto]

cd Vídeos Con el Comando cd nos movemos al directorio Vídeos, donde esta la pelicula Matrix.mp4

tar El programa tar.

cfp Son las opciones para crear un nuevo archivo.

- Por convención, un guión independiente en lugar de un nombre de archivo significaría stdin o stdout, aqui seria la entrada stdin

| Es un pipeline o su nombre mas comun, pipe, se usar para separar diferentes procesos que estan en la misma linea de comando.

nc El programa netcat

-w 3 timeout Conexiones que no se pueden establecer o que están inactivas después del tiempo de espera, los da en segundos, o cuando el archivo se ha transferido, nc se cerrá automaticamente despues de Tres segundos.

192.168.178.25 Es el IP del computer A, donde quiero tranferir la pelicula, para saber tú el IP donde quieres transferir tu archivo, tienes que escribir en el Terminal del computer donde lo quieres transferirlo. Aqui explico como.

1234 Es el numero del puesto donde transferimos el archivo.

El comando:

tar cfp - Matrix.mp4 | nc -w 3 192.168.178.25 1234


Empezamos con la transferencia

Acuérdate de abrir los puertos en computer A...

sudo ufw allow 1234/tcp

Como el computer A es nuestro servidor, empezamos primero, escribo en el Terminal,

nc -l -p 1234 | tar xvfp - y le damos a la tecla ↵ entrar, que es como abrimos nuestro servidor.

password para root

En el computer B, que es donde esta nuestra pelicula que quiero transferir, escribo en el Terminal,

tar cfp - Matrix.mp4 | nc -w 3 192.168.178.25 1234 y le damos a la tecla ↵ entrar, que es como transferimos nuestra pelicula.

password para root

Con esto habremos transferido la película.

Si escribes en tu Terminal man nc y man tar, recibiras mas opciones con las que podras copiar.

ssh

En Ubuntu y Linux Mint viene openssh-client instalado, pero nó openssh-server, que tendrás que instalarlo en el computer donde quieres llevar la copia, instalaremos ssh con OpenSSH, que viene junto con otras aplicaciones, como por ejemplo sftp. En Debian tienes que instalar los dos.

Instala openssh-server en Ubuntu, Linux Mint y Debian.

Actualiza tu sistema

sudo apt-get update

Instala openssh-server

sudo apt-get install openssh-server

Instala openssh-client en Debian, en Ubuntu y Linux Mint viene instalado por defecto

sudo apt-get install openssh-client


ssh utiliza el Puerto 22 por defecto, para comunicarse fuera de tu computer. Para normales transferencias entre ordenadores, lo puedes dajarlo así o si quieres cambiarlo, solo tienes que cambiar el Puerto, esto lo haces escribiendo una p minúscula -p, por ejemplo, queremos transferir un documento por el Puerto 45, escribimos,

ssh -p 45 [nombre_usuario_destino]@[ip_destino]

Como decia, cambiar el numero de Puerto generalmente es una opción personal, nó obligatoria..., pero hay algunos casos, que sí lo tienes que cambiar, por ejemplo cuando tienes un Servidor web, donde esta tu pagina Web. La empresa donde esta tu Servidor web te dá generalmente la opción de comunicarte con ssh, y por motivos de seguridad te da un numero de Puerto que nó es 22, que es el Puerto predestinado para ssh.

Cuando hayas acabado de transferir lo que quieras, es aconsejable por seguridad, desconectar openssh-server.

Lo desconectamos con este comando

sudo service ssh stop

Con este comando lo paramos en Debian, pero en Linux Mint y Ubuntu, cuando reiniciemos el ordenador, volverá a activarse, asi que tenemos que deshabilitar, lo deshabilitamos con este comando,

sudo systemctl disable sshd.service

Cuando quieras activarlo de nuevo ssh, escribe este comando,

sudo systemctl enable sshd.service

También tenemos que escribir,

sudo service ssh start

Si recibes algún aviso despues de hacer esto, recomienza ssh

sudo systemctl restart ssh


Si queremos recibir documentos, archivos, videos,.. via ssh desde la otra computadora y queremos usar otro Puerto en vez del Puerto que viene por defecto en ssh, el 22, tendremos que abrir los Puertos de este computer, que en las distribuciones basadas en Debian, como Ubuntu y Linux Mint, están por defecto cerradas. Para hacer esto, necesitamos instalar un Cortafuegos que nos dará la oportunidad de abrir los Puertos que queramos, instalaremos ufw que utiliza la línea de comandos y es fácil de utilizar.

Actualiza tu sistema

sudo apt-get update

Instala ufw

sudo apt-get install ufw


Ejemplo:

Queremos transferir la pelicula Matrix del computer A al computer B, usaremos el programa rsync que suele utilizar ssh para transferencias y usaremos el Puerto 45

Tenemos que abrir en los dos ordenadores el Puerto 45, en el computer B lo abrimos de esta manera,

sudo ufw allow 45/tcp

También tenemos que iniciar ssh, para que el computer B, se comunique via ssh

sudo service ssh start

En el computer A, donde esta la pelicula, abrimos este Puerto directamente con rsync

rsync -p 45 -z ~/Matrix.mp4 linux@192.168.178.25:/home/linux

Una cosa importante que te recomiendo por seguridad, cerrar los puertos que hayas abierto, cuando hayas acabado de transferir lo que quieras.

Los puertos los cerramos de esta manera,

sudo ufw deny 45/tcp

Cuando reinicies el computer tendras este Puerto cerrado

Qué no se te olvide deshabilitar tambien ssh, un poco mas arriba explico como hacerlo.

rsync

Rsync y scp hacen cosas parecidas, pero por motivos que comenté más arriba, aquí no hablare de él. Una diferencia muy importante entre rsync y netcat es que rsync usa el protocol ssh en su transferencia por medio de un canal seguro en el que toda la información está cifrada, ademas él te dá muchas mas posiblidades para tranferencias de archivos, documentos,..entre tu computer y un servidor.

No es recomendable usar sudo cuando utilizes rsync, si el archivo o documento que quieras copiar no tiene privilegios o derechos de acceso, porque te puede sobrescribir tu sistema de destino.


Rsync viene instalado en Linux Mint y Ubuntu, pero nó en Debian, lo instalamos con este comando,

sudo apt-get install rsync


Ejemplo:

Queremos copiar la pelicula Matrix.mp4, que está en el directorio Vídeos del computer A y queremos llevar una copia al computer B.

La sintaxis:

rsync [opción] [archivo] [usuario_destino]@[ip_destino]:[/camino_del_directorio_destino]

rsync Es como empieza el comando.

-z Con esta opción, rsync comprime los datos del archivo a medida que se envían a la máquina de destino, lo que reduce la cantidad de datos que se transmiten, algo que es útil en una conexión lenta.

archivo El archivo que queremos mandar, podemos también escribir el camino donde esta nuestro archivo, como por ejemplo -z ~/Vídeos/Matrix.mp4.

usuario_destino Aquí escribimos el nombre de usuario del computer B.

ip_destino Escribimos el IP del computer B, Aqui explico como saber el ip.

: Es el separador entre el IP y la trayectoria de los directorios donde queremos llevar la copia, esto es,

/camino_del_directorio_destino.

El comando:

rsync -z /home/linux/Vídeos/Matrix.mp4 me@192.168.178.40:/home/me


Escribimos en el Terminal antes de transferir nuestra copia desde el computer A

sudo service ssh start


Empezamos con la transferencia

Como el computer B es nuestro servidor, empezamos primero, escribo en el Terminal,

sudo service ssh start y le damos a la tecla ↵ entrar.

password para root

En el computer A, que es donde esta nuestra pelicula, la transferimos escribiendo en el Terminal,

rsync -z /home/linux/Vídeos/Matrix.mp4 me@192.168.178.40:/home/me y le damos a la tecla ↵ entrar, que es como transferimos nuestra película.

password para root

Con esto habremos transferido la película.


Ejemplo:

Queremos transferir la carpeta Privado que esta en el directorio Documentos del computer B al computer A. Dentro de la carpeta Privado tenemos algunos documentos con diferentes permisos, en nuestra transferencia queremos que rsync guarde estos permisos.

La sintaxis:

rsync [--progress] [-avz] [camino_archivo] [usuario_destino]@[destino_ip]:[/camino_del_directorio_destino]

--progress Nos dá la oportunidad de ver el progreso de nuestra transferencia

-avz Esto transferirá recursivamente todos los archivos de la carpeta. Los archivos se transfieren en modo "archivo", lo que garantiza que el símbolo de los enlaces, dispositivos, atributos, permisos, propiedades, etc, se conservan en el traspaso. Además, la compresión se utilizará para reducir el tamaño de las porciones de datos de la transferencia.

El comando;

rsync --progress -avz ~/Documentos/Privado linuxuser@192.168.178.25:/home/linuxuser


Escribimos en el Terminal antes de transferir nuestra copia desde el computer B

sudo service ssh start


Empezamos con la transferencia

Como el computer A es donde transferimos la película, empezamos primero, escribo en el Terminal,

sudo service ssh start y le damos a la tecla ↵ entrar.

password para root

En el computer B, que es donde esta nuestra carpeta Privado, la transferimos, escribo en el Terminal,

rsync --progress -avz ~/Documentos/Privado linuxuser@192.168.178.25:/home/linuxuser y le damos a la tecla ↵ entrar, que es como transferimos nuestra pelicula.

password para root

Con esto habremos transferido la carpeta Privado del computer B al computer A.

Cuando hayas acabado de transferir lo que quieras, es aconsejable por seguridad, desconectar openssh-server, aqui digo como hacerlo.

Sí quieres, puedes usar rsync con una interfaz graficá, la instalas con este comando,

sudo apt-get install grsync

Tienes que reiniciar tú computer, cuando lo hayas hecho, en tu Linux distribución, busca en tú directorio Herramientas del sistema, por Grsync.

Y te saldra una cosa así.

password para root


Si escribes en tu Terminal man rsync, recibiras mas opciones para copiar con rsync.









Escrive tu comentario: