it-swarm-es.tech

Servidor remoto de Linux a la copia del directorio del servidor Linux remoto ¿Cómo?

¿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 el cliente SSH (como PuTTY). Tengo acceso de root a ambos.

43
Arun Agrawal

Por lo general, hay dos formas en que hago esto, ambas usan ssh:

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

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

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

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

62
Ycros

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 la l y p anteriores son superfluas. También me gusta incluir -H, que copia enlaces duros. No forma parte de -a por defecto porque es costoso. Entonces ahora tenemos esto:

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

También debe tener cuidado con las barras inclinadas. 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 la "carpeta" de destino. Sin la barra inclinada final, se crearía un subdirectorio "carpeta" en la "carpeta" de destino.

32
user19218

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

9
Ana Betts
scp -r <directory> <username>@<targethost>:<targetdir>
6
Cody Brocious

Inicie sesión en una máquina

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

5
Flame

Intente unísono si la tarea es recurrente. http://www.cis.upenn.edu/~bcpierce/unison/

3
user11104

Echa un vistazo a scp o rsync , man scpman rsync

scp file1 file2 dir3 [email protected]:path
2
John Douthat

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

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

2
Ady Romantika

Usé rdiffbackup http://www.nongnu.org/rdiff-backup/index.html porque hace todo lo que necesitas sin ninguna opción sofisticada. Se basa en el algoritmo rsync. Si solo necesita copiar una vez, más tarde puede eliminar el directorio rdiff-backup-data en el Host de destino.

rdiff-backup [email protected]::/source-dir [email protected]::/dest-dir

del documento:

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

lo cual es una ventaja para 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
2
Gunstick

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

1
Justin Dossey

Bueno, una respuesta rápida sería echar un vistazo a la página de manual 'scp', o tal vez 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 -
1
zigdon

Creo que puedes probar con:

rsync -azvu -e ssh [email protected]:/directory/ [email protected]:/directory2/

(y supongo que está en Host0 y desea copiar directamente desde Host1 a Host2)

Si lo anterior no funciona, puede intentar:

ssh [email protected] "/usr/bin/rsync -azvu -e ssh /directory/ [email protected]:/directory2/"

en esto, funcionaría si ya ha configurado el inicio de sesión SSH sin contraseña de Host1 a Host2

1
Ram Prasad

Como usuario no root, idealmente:

scp -r src $ Host: $ ruta

Si ya tiene parte del contenido en $ Host, considere usar rsync con ssh como túnel.

/Alano

0
Allan Wind

Si usted es serio acerca de querer una copia exacta, probablemente también quiera usar el modificador -p para scp, si lo está usando. He encontrado que scp lee desde dispositivos, y he tenido problemas con cpio, así que personalmente siempre uso tar , Me gusta esto:

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'

Mantengo este encantamiento en un archivo con varios otros medios para copiar archivos. Este es para copiar sobre SSH; los otros son para copiar a un archivo comprimido, para copiar dentro de la misma computadora y para copiar sobre un socket TCP sin cifrar cuando SSH es demasiado lento.

0
Teddy

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

0
Sergey Stolyarov

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 caja remota]

Este método te ofrece muchas opciones. Dado que debe deshabilitar la raíz ssh, 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 la caja remota que aún contenga y que conserva 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 caja remota]

0
Chuck