scp -r… ma esclude (esclude) una sottodirectory specificata


29

Ecco la struttura delle directory:

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

Voglio copiare tutto, TRANNE per la sottodirectory / a / c /.

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

D: Come specificare una directory da escludere nel comando scp?


3
La motivazione originale è che la sottodirectory "/ a / c /" è molto grande (gigabyte), quindi lasciarla fuori ridurrà la copia da minuti a secondi.
russian_spy,

Risposte:


28

Non penso che tu possa, ma potresti usare rsync? Qualcosa come questo:

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

5

Penso che questo potrebbe essere il modo corretto di farlo, quindi stai ancora usando SSH, non ho trovato il modo di farlo con scp - ma usare rsync su ssh potrebbe risolverlo.

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

Se si utilizza l'opzione -n, verrà creato un ciclo secco del processo:

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

Prova anche -rz: -e "ssh -i private.pem" -rz 'users@server:/full/path/'.
Mbrownnyc,

1

Puoi usare il globbing esteso come nell'esempio seguente:

#Enable extglob
shopt -s extglob

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

0

Non è il modo perfetto per farlo, ma imposta la sottodirectory che desideri escludere in sola lettura. chmod -R 444 /a/cdovrebbe fare il trucco. Si verificherà un errore "permesso negato" quando si tenta di scrivere su quella directory.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.