Sto eseguendo scp e copiando una cartella dal server remoto, sto eseguendo con -rl, quindi vedo i file in fase di copia, è possibile saltare il file corrente in qualche modo?
Sto eseguendo scp e copiando una cartella dal server remoto, sto eseguendo con -rl, quindi vedo i file in fase di copia, è possibile saltare il file corrente in qualche modo?
Risposte:
No non puoi. Ma puoi fermarti scp
e usare rsync
invece. Copia solo le differenze rimaste dalla copia parziale e puoi escludere qualsiasi file o cartella che non desideri trasferire.
rsync -avP -e ssh --exclude=somefile --exclude=somedir ./localdir/ user@server:remotedir/
No, non con -r
o qualsiasi altra sintassi che esegue più trasferimenti di file all'interno di un scp
comando.
Ciò detto, scp
segue anche il paradigma UNIX: scrivere programmi che forniscono funzionalità semplici e precise che possono essere concatenate in modi interessanti. Ciò significa che sarebbe possibile scrivere un ciclo che esegua in modo interattivo singole invocazioni del comando, una per file. Saresti quindi in grado di uscire dai singoli comandi mentre vengono eseguiti. (Ctrl-C)
Il codice per questo viene lasciato come un esercizio al lettore, ma la necessità di eseguire questo ciclo all'interno di una shell interattiva deve essere enfatizzata. Uscire da una shell non interattiva terminerebbe l'intero lavoro.
Si, puoi!
Elenchiamo la directory remota e copiamo ogni file separatamente. Quindi premi ctrl-c per ogni file che non vuoi copiare:
OLD_IFS="$IFS"
IFS=$'\n'
for file in `ssh user@host ls /remote/directory/`
do echo user@host:/remote/directory/$file /local/directory/
done;
IFS="$OLD_IFS"
OLD_IFS è qui per gestire i file con spazi al loro interno.