Rsync trên đường dẫn SSH có dấu cách không hoạt động với dấu ngoặc kép


17

Tôi có thể thành công RSYNC qua SSH miễn là các đường dẫn không có khoảng trắng trong đó.

Khi đường dẫn không có khoảng trắng, nó không hoạt động. Tôi đã thử dấu gạch chéo, dấu ngoặc kép và dấu ngoặc kép.

Khi tôi sử dụng dấu gạch chéo, đầu ra nói rằng đó là một thành công nhưng tôi không thấy bất kỳ tệp nào được chuyển.

rsync -avz /path\ with\ spaces/ user@remotelocation:/media/another\ path\ with/spaces/

Khi tôi sử dụng dấu ngoặc đơn hoặc dấu ngoặc kép, nó cho tôi biết rằng quyền đó bị từ chối sau khi nhập mật khẩu của tôi

rsync -avz '/path with spaces/' 'user@remotelocation:/media/another path with/spaces/'

Tôi có thể làm gì?

Cảm ơn bạn.

Câu trả lời:


12

Mở rộng câu trả lời của rzr với mã ví dụ và tham chiếu, chỉ cần thêm -scờ, trích dẫn đường dẫn và đừng lo lắng về việc thoát khỏi khoảng trắng trong đường dẫn từ xa:

rsync -avzs '/path with spaces/' 'user@remotelocation:/media/another path with/spaces/'

Để tham khảo, các tùy chọn được chỉ định bởi OP:

  • -a, chế độ lưu trữ, bằng -rlptgoD (không -H, -A, -X)
    • Bao gồm:
    • -r, --recursive, recurse vào thư mục
    • -l, --links, sao chép liên kết tượng trưng dưới dạng liên kết tượng trưng
    • -p, --perms, giữ quyền
    • -t, --times, bảo toàn thời gian sửa đổi
    • -g, - nhóm, bảo tồn nhóm
    • -o, - chủ sở hữu, giữ gìn chủ sở hữu (chỉ siêu người dùng)
    • -devices, bảo quản tập tin thiết bị (chỉ siêu người dùng)
    • -specials, bảo quản các tập tin đặc biệt
  • -v, --verbose, tăng tính dài dòng
  • -z, - nén, nén dữ liệu tệp trong khi chuyển

Tham số bổ sung cần thiết:

  • -s, --protect-args, không chia tách không gian, ký tự đại diện

13

Bạn cần phải thoát khỏi không gian trong cả vỏ cục bộ và vỏ từ xa. Thử đi:

rsync -avz '/path with spaces/' 'user@remotelocation:/media/another\ path\ with/spaces/'

Nguồn, /path with spaces/trong shell cục bộ chỉ có thể được thoát bằng cách đặt dấu ngoặc đơn xung quanh nó '/path with spaces/'.

Mặt khác, trong trường hợp đích đến, shell cục bộ được thoát bằng cách đặt dấu ngoặc đơn và khoảng trắng được thoát trong shell từ xa bằng cách sử dụng ký tự thoát ( \) trước dấu cách.


3
Chỉ cần nhấn mạnh - bạn cần BÓNG trích dẫn và dấu gạch chéo ngược.
Sridhar Sarnobat

1

nhìn vào tùy chọn rsync mật mãprotect-args (-s), không cần thêm dấu gạch chéo


1
Câu trả lời của bạn sẽ được cải thiện hơn nhiều nếu bạn cung cấp một ví dụ mà người dùng mới có thể làm theo. Cảm ơn bạn!
Anh Cả Geek
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.