scp -r ... pero omite (excluye) un subdirectorio especificado


29

Aquí está la estructura del directorio:

/a/
/a/b/
/a/c/

Quiero copiar todo, EXCEPTO para el subdirectorio / a / c /.

scp -rp myserver:/a .      # this will copy everything

P: ¿Cómo especificaría un directorio para dejar de lado en el comando scp?


3
La motivación original es que el subdirectorio "/ a / c /" es muy grande (gigabytes), por lo que dejarlo fuera reducirá la copia de minutos a segundos.
russian_spy

Respuestas:


28

No creo que puedas, pero ¿podrías usar rsync? Algo como esto:

rsync -a --exclude=a/c myserver:/a .

5

Creo que esta podría ser la forma correcta de hacerlo, por lo que todavía está usando SSH, no he encontrado una manera de hacerlo con scp, pero usar rsync sobre ssh podría resolverlo.

rsync -e 'ssh -ax' -av --exclude /a/c myserver:/a .

Si usa el modificador -n, creará una ejecución en seco del proceso:

 rsync -e 'ssh -ax' -av --exclude /a/c -n myserver:/a .

Proveedores -rz: -e "ssh -i private.pem" -rz 'users@server:/full/path/'.
mbrownnyc

1

Puede usar globbing extendido como en el siguiente ejemplo:

#Enable extglob
shopt -s extglob

cp -rv !(./excludeme/*.jpg) /var/destination

0

No es la forma perfecta de hacerlo, pero configure el subdirectorio que desea excluir como de solo lectura. chmod -R 444 /a/cdebería hacer el truco. Obtendrá un error de "permiso denegado" cuando intente escribir sobre ese directorio.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.