Estoy usando scp para copiar un directorio de un servidor remoto a un nuevo directorio (es decir, solo cambiando el nombre) en otro servidor remoto como:
scp -prq server1:dir1 server2:dir2
Esto funciona bien si dir2 no existe en el servidor2, crea un nuevo directorio llamado dir2 que contiene todo, desde dir1 en el servidor1.
El problema surge cuando ya existe dir2 en el servidor2 (NOTA: no tengo forma de saberlo de antemano o de eliminarlo en dir2 en el servidor2 de antemano). Lo que sucede es que obtengo una copia de dir1, llamada dir1, en dir2.
Estoy seguro de que hay algo básico que me falta, pero parece que no puedo resolverlo.
Cualquier ayuda muy apreciada!
Saludos,
Giles
De acuerdo, tengo menos de 10 repeticiones y no puedo esperar $ 8, así que esto es lo que obtuve:
Aquí hay un script que funciona para mí:
#!/bin/sh
echo "method 1"
scp -prq server1:dir1/* server2:dir2/ >/dev/null 2>&1
if [ "$?" -ne "0" ]; then
echo "failed ... trying method 2"
scp -prq server1:dir1 server2:dir2
fi
exit
Todavía no estoy seguro de cómo hacer esto en un solo comando o incluso si es posible.
Saludos @mindthemonkey, a veces solo obtener un nuevo punto de vista puede ayudar a señalar el camino.
cd dir2
.Respuestas:
Use esta sintaxis de "punto":
Esto copia el contenido de ese directorio, en lugar del directorio en sí. Y creo que es más portátil que
*
globbing.fuente
scp: error: unexpected filename: .
Normalmente, para controlar la creación del directorio, debe usar un seguimiento
/
para implicar una ruta completa, pero creo que esto no podrá crear el directorio si no existe:Esto también podría faltar oculto. archivos debido a la expansión * glob (sin un trabajo complicado de shell específico )
Puede abordarlo de manera diferente con
ssh
ytar
.Pero esto significa que el tráfico pasa por su máquina local.
fuente