Problema nella copia sicura (scp) dei nomi di file con spazi


9

Sto provando a copiare i file usando la copia sicura (scp). Sto cercando di eseguire il seguente comando ma ricevo un errore a causa dello spazio nel percorso assoluto della posizione della directory.

scp -r -P 8484 root@172.31.72.103:/media/New Volume/lj /home/pratheep

Ricevo il seguente errore:

scp: /media/New: No such file or directory  
scp: Volume/lj: No such file or directory

Ho provato a usare lo stesso comando mettendo una barra rovesciata come

scp -r -P 8484 root@172.31.72.103:/media/New\ Volume/lj /home/pratheep

ma sto ancora ricevendo lo stesso errore.

Qualcuno può dirmi come correggerlo?

Risposte:


18

Dovresti citare due volte il nome del tuo file, uno per la shell locale e uno per quello remoto. Nel caso più semplice è possibile effettuare una delle seguenti operazioni

scp -r -P 8484 root@172.31.72.103:"'/media/New Volume/lj'" /home/pratheep
scp -r -P 8484 root@172.31.72.103:'"/media/New Volume/lj"' /home/pratheep

o usando l'aiuto del completamento della scheda

scp -r -P 8484 root@172.31.72.103:/media/New\\\ Volume/lj /home/pratheep

3
È utile notare che scpusa sshcome suo trasporto il che spiega perché ci sono due passaggi di interpretazione della shell.
msw,

1

scpe rsyncpassa i nomi dei file remoti alla shell remota. Ciò consente di passare i motivi, come in

scp remotehost:'*.txt' .

ma ha la brutta conseguenza che è necessario un preventivo aggiuntivo quando si fornisce un nome di file remoto.

È possibile passare l' -sopzione per rsyncproteggere i nomi dei file dall'espansione della shell remota. Ma questo attiva l'espansione jolly integrata di rsync, quindi devi ancora citare \[?*.

Una soluzione alternativa consiste nel trasferire un archivio:

ssh -P 8484 root@172.31.72.103 'cd "/media/New Volume" && tar cf - lj' |
tar xf - -C /home/pratheep

Un altro metodo è montare il filesystem remoto e quindi usare strumenti ordinari per eseguire la copia.

mkdir mnt
sshfs -p 8484 root@172.31.72.103:/ mnt
cp -Rp 'mnt/media/New Volume/lj' /home/pratheep
fusermount -u mnt
rmdir mnt
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.