Copiar varios archivos en Linux

Copiar varios archivos en Linux

Tengo una máquina Linux con carpetas nombradas numéricamente. ¿Cómo puedo copiar de forma segura rangos de estas carpetas a otro servidor? La máquina de origen ejecuta tcsh, el bash de destino. Por el momento, desde el directorio que contiene los datos que quiero copiar, estoy usando el siguiente comando:

scp -r [2042-2046] user@target:home/user/destination_folder

La máquina de origen solicita mi contraseña para el destino y parece copiar archivos, pero no llega nada a la máquina de destino. No hay errores. Sin embargo, si reemplazo el rango de carpetas con un solo nombre de carpeta, entonces la copia funciona bien:

scp -r 2042 user@target:home/user/destination_folder

sin embargo, esto significaría repetir el comando scp 5 veces e ingresar mi contraseña cada vez, lo que parece muy ineficiente, especialmente para rangos más grandes.

Respuesta1

El rango

[2042-2046]

parece interpretarse como el archivo 2 y el archivo 6.

A continuación se proporciona el rango requerido:

204[2-6]

Respuesta2

Podrías usar una secuencia tar a través de SSH:

tar cvf --include='204[2-6]' - . | ssh user@target "cd /home/destination/folder; tar xvf -"

Respuesta3

Usa un golpeexpansión de corséexpresión:

scp -r {2042..2046} user@target:home/user/destination_folder

Tenga en cuenta que la expansión de la llave ocurreantesexpansión de parámetros, por lo que no puedes escribir esto:

start=2042
end=2046
scp -r {$start..$end} user@target:home/user/destination_folder

sin uneval

información relacionada