transferir servidores por entre copiar consola archivos linux data-transfer

servidores - Servidor Linux remoto para copia remota del directorio del servidor Linux. ¿Cómo?



transferir archivos por ssh putty (16)

¿Cuál es la mejor manera de copiar un directorio (con subdirectorios y archivos) de un servidor Linux remoto a otro servidor Linux remoto? Me he conectado a ambos usando un cliente SSH (como Putty). Tengo acceso de root a ambos.


Creo que puedes probar con:

rsync -azvu -e ssh user@host1:/directory/ user@host2:/directory2/

(y supongo que estás en host0 y quieres copiar desde host1 a host2 directamente)

Si lo anterior no funciona, puedes intentar:

ssh user@host1 "/usr/bin/rsync -azvu -e ssh /directory/ user@host2:/directory2/"

en este caso, funcionaría, si ya tiene configurado el inicio de sesión SSH sin contraseña desde host1 a host2


Bueno, una respuesta rápida sería echar un vistazo a la página de ''scp'', o quizás rsync, dependiendo exactamente de lo que necesite copiar. Si tuviera que hacerlo, incluso podría hacer tar-over-ssh:

tar cvf - | ssh server tar xf -


Como usuario no root idealmente:

scp -r src $ host: $ path

Si ya tiene algo del contenido en $ host considere usar rsync con ssh como un túnel.

/Alano


Hay dos formas en que generalmente hago esto, ambas usan ssh:

scp -r sourcedir/ [email protected]:/dest/dir/

o, el método más robusto y más rápido (en términos de velocidad de transferencia):

rsync -auv -e ssh --progress sourcedir/ [email protected]:/dest/dir/

Lea las páginas man para cada comando si desea más detalles sobre cómo funcionan.


Inicie sesión en una sola máquina

$ scp -r / ruta / a / arriba / directorio usuario @ servidor: / ruta / a / copia



Use rsync para que pueda continuar si la conexión se rompe. Y si algo cambia, ¡también puedes copiarlos mucho más rápido!

Rsync funciona con SSH por lo que su operación de copia es segura.



scp -r <directory> <username>@<targethost>:<targetdir>


Si realmente quiere una copia exacta, probablemente también quiera usar el modificador -p en scp, si lo está usando. Descubrí que scp lee de dispositivos y he tenido problemas con cpio, por lo que siempre uso tar , como este:

cd /origin; find . -xdev -depth -not -path ./lost+found -print0 / | tar --create --atime-preserve=system --null --files-from=- --format=posix / --no-recursion --sparse | ssh targethost ''cd /target; tar --extract / --overwrite --preserve-permissions --sparse''

Guardo este hechizo en un archivo con varios otros medios de copiar archivos. Este es para copiar sobre SSH; los otros son para copiar en un archivo comprimido, para copiar dentro de la misma computadora y para copiar sobre un socket TCP no cifrado cuando SSH es demasiado lento.


Utilicé rdiffbackup http://www.nongnu.org/rdiff-backup/index.html porque hace todo lo que necesita sin opciones sofisticadas. Está basado en el algoritmo rsync. Si solo necesita copiar una vez, puede luego eliminar el directorio rdiff-backup-data en el host de destino.

rdiff-backup user1@host1::/source-dir user2@host2::/dest-dir

del doc:

rdiff-backup también conserva subdirectorios, enlaces duros, archivos dev, permisos, propiedad de uid / gid, tiempos de modificación, atributos extendidos, acls y bifurcaciones de recursos.

que es una bonificación a las propuestas scp -p ya que la opción -p no conserva todo (por ejemplo, los derechos en los directorios están mal configurados)

instalar en ubuntu:

sudo apt-get install rdiff-backup


scp como se mencionó anteriormente es generalmente la mejor manera, pero no se olvide de los dos puntos en el directorio remoto; de lo contrario, obtendrá una copia del directorio de origen en la máquina local.


Me gusta canalizar alquitrán a través de ssh.

tar cf - [directorio] | ssh [nombre de usuario] @ [nombre de host] tar xf - -C [destino en el cuadro remoto]

Este método te brinda muchas opciones. Como debe tener root ssh deshabilitado, copiar archivos para varias cuentas de usuario es difícil ya que está iniciando sesión en el servidor remoto como un usuario normal. Para evitar esto, puede crear un archivo tar en el cuadro remoto que aún se mantenga y que preserve la propiedad.

tar cf - [directorio] | ssh [nombre de usuario] @ [nombre de host] "cat> output.tar"

Para conexiones lentas puede agregar compresión, z para gzip o j para bzip2.

tar cjf - [directorio] | ssh [nombre de usuario] @ [nombre de host] "cat> output.tar.bz2"

tar czf - [directorio] | ssh [nombre de usuario] @ [nombre de host] "cat> output.tar.gz"

tar czf - [directorio] | ssh [nombre de usuario] @ [nombre de host] tar xzf - -C [destino en el cuadro remoto]


scp hará el trabajo, pero hay un inconveniente: la conexión al segundo destino remoto utilizará la configuración en el primer destino remoto, por lo que si usa .ssh / config en el entorno local, y espera claves rsa y dsa para trabajo, debe reenviar su agente al primer host remoto.


Yo modificaría una respuesta sugerida anteriormente:

rsync -avlzp /path/to/sfolder [email protected]:/path/to/remote/dfolder

como sigue:

-a (para el archivo) implica -rlptgoD, por lo que l y p de arriba son superfluos. También me gusta incluir -H, que copia enlaces duros. No es parte de -a por defecto porque es caro. Entonces ahora tenemos esto:

rsync -aHvz /path/to/sfolder [email protected]:/path/to/remote/dfolder

También debe tener cuidado con las barras inclinadas posteriores. Probablemente quieras

rsync -aHvz /path/to/sfolder/ [email protected]:/path/to/remote/dfolder

si el deseo es que el contenido de la "carpeta" de origen aparezca en el destino "dfolder". Sin la barra al final, se crearía un subdirectorio "sfolder" en el destino "dfolder".


Echa un vistazo a scp o rsync , man scp man rsync

scp file1 file2 dir3 user@remotehost:path