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 root@172.31.72.103:/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 root@172.31.72.103:/media/New\ Volume/lj /home/pratheep

tapi saya masih mendapatkan kesalahan yang sama.

Adakah yang bisa memberi tahu saya cara memperbaikinya?

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 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

atau menggunakan bantuan penyelesaian tab

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

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 root@172.31.72.103 '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 root@172.31.72.103:/ mnt
cp -Rp 'mnt/media/New Volume/lj' /home/pratheep
fusermount -u mnt
rmdir mnt
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.