Vấn đề trong tên tệp sao chép an toàn (scp) với khoảng trắng


9

Tôi đang cố gắng sao chép các tập tin bằng cách sử dụng bản sao an toàn (scp). Tôi đang cố gắng thực hiện lệnh sau nhưng tôi gặp lỗi do khoảng trống trong đường dẫn tuyệt đối của vị trí của thư mục.

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

Tôi nhận được lỗi sau:

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

Tôi đã thử sử dụng cùng một lệnh đặt thêm dấu gạch chéo lại như

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

nhưng tôi vẫn nhận được cùng một lỗi.

Ai đó có thể cho tôi biết làm thế nào để sửa nó?

Câu trả lời:


18

Bạn nên trích dẫn tên tệp của mình hai lần, một cho vỏ cục bộ và một cho vỏ từ xa. Trong trường hợp đơn giản nhất, bạn có thể thực hiện một trong những điều sau đây

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

hoặc sử dụng trợ giúp hoàn thành tab

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

3
Nó rất hữu ích để lưu ý rằng scpsử dụng sshnhư vận chuyển của nó giải thích tại sao có hai lần giải thích vỏ xảy ra.
msw

1

scprsynctruyền tên tập tin từ xa vào shell từ xa. Điều này cho phép bạn vượt qua các mẫu, như trong

scp remotehost:'*.txt' .

nhưng nó có một hậu quả khó chịu là bạn cần trích dẫn thêm khi cung cấp tên tệp từ xa.

Bạn có thể chuyển -stùy chọn để rsynclàm cho nó bảo vệ tên tệp khỏi bị mở rộng bởi trình vỏ từ xa. Nhưng điều đó bật mở rộng ký tự đại diện tích hợp của rsync, vì vậy bạn vẫn cần trích dẫn \[?*.

Một cách giải quyết là chuyển một kho lưu trữ:

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

Một phương pháp khác là gắn kết hệ thống tập tin từ xa, sau đó sử dụng các công cụ thông thường để thực hiện sao chép.

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
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.