Masalah dalam menyalin nama file (scp) aman dengan spasi

9

Saya mencoba menyalin file menggunakan salinan aman (scp). Saya mencoba menjalankan perintah berikut tetapi saya mendapatkan kesalahan karena ruang di jalur absolut dari lokasi direktori.

scp -r -P 8484 [email protected]:/media/New Volume/lj /home/pratheep

Saya mendapatkan kesalahan berikut:

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

Saya mencoba menggunakan perintah yang sama dengan menempatkan back back slash like

scp -r -P 8484 [email protected]:/media/New\ Volume/lj /home/pratheep

tapi saya masih mendapatkan kesalahan yang sama.

Adakah yang bisa memberi tahu saya cara memperbaikinya?

pradeepchhetri
sumber

Jawaban:

18

Anda harus mengutip nama file Anda dua kali, satu untuk shell lokal dan satu untuk remote. Dalam kasus paling sederhana, Anda dapat melakukan salah satu dari yang berikut ini

scp -r -P 8484 [email protected]:"'/media/New Volume/lj'" /home/pratheep
scp -r -P 8484 [email protected]:'"/media/New Volume/lj"' /home/pratheep

atau menggunakan bantuan penyelesaian tab

scp -r -P 8484 [email protected]:/media/New\\\ Volume/lj /home/pratheep
enzotib
sumber
3
Penting untuk dicatat bahwa scppenggunaan sshsebagai transportasi yang menjelaskan mengapa ada dua lintasan interpretasi shell terjadi.
msw
1

scpdan rsyncmeneruskan nama file jarak jauh ke shell jauh. Ini memungkinkan Anda untuk melewati pola, seperti pada

scp remotehost:'*.txt' .

tetapi memiliki konsekuensi buruk bahwa Anda perlu mengutip tambahan saat memberikan nama file jarak jauh.

Anda dapat memberikan -sopsi untuk rsyncmembuatnya melindungi nama file dari ekspansi oleh shell jarak jauh. Tapi itu menyalakan ekspansi wildcard rsync, jadi Anda masih perlu mengutip \[?*.

Solusinya adalah mentransfer arsip:

ssh -P 8484 [email protected] 'cd "/media/New Volume" && tar cf - lj' |
tar xf - -C /home/pratheep

Metode lain adalah me-mount sistem file jarak jauh, dan kemudian menggunakan alat biasa untuk melakukan salinan.

mkdir mnt
sshfs -p 8484 [email protected]:/ mnt
cp -Rp 'mnt/media/New Volume/lj' /home/pratheep
fusermount -u mnt
rmdir mnt
Gilles 'SANGAT berhenti menjadi jahat'
sumber