scp: salta un file durante l'esecuzione


8

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:


11

No non puoi. Ma puoi fermarti scpe usare rsyncinvece. 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/

2
Questo è utile, sì, ma sfortunatamente non risponde alla domanda che è stata posta.
Emmaly Wilson,

8
Risponde perfettamente alla domanda; la domanda chiede se è possibile fare qualcosa e questa risposta risponde "no". Fornisce quindi un'alternativa utile e sull'argomento.
Christopher Shroba,

1

No, non con -ro qualsiasi altra sintassi che esegue più trasferimenti di file all'interno di un scpcomando.

Ciò detto, scpsegue 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.


0

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.


Dove lo metti? Come lo chiami?
StatsSorceress
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.