Saat menggunakan SSH untuk menghubungkan rsync ke server jauh, bagaimana Anda keluar dari ruang dan semacamnya di jalur jauh? Garis miring terbalik sederhana keluar dari ruang untuk bash prompt lokal, tetapi pada mesin jarak jauh ruang tersebut kemudian dibaca sebagai istirahat di jalan, sehingga menandai ujung jalan itu.
Jadi ketika saya melakukan rsync -avz /path/to/source/some\ dir/ user@host.tld:/path/to/dest/some\ dir/
apa yang terjadi adalah bahwa server jauh membaca itu sebagai adil /path/to/dest/some/
dan karena itu tidak dapat menemukan tujuan itu dari jarak jauh, karena tujuan sebenarnya adalah "beberapa dir" daripada hanya "beberapa".
Jika saya mencoba perintah yang sama dan menghindari backslash dan ruang untuk melewati bash prompt lokal dan mempertahankan backslash untuk server jarak jauh (total tiga backslash:) /path/to/dest/some\\\ dir/
, ia memang mengirim backslash ke server jarak jauh, tetapi server jarak jauh kemudian menginterpretasikan path sebagai /path/to/dest/some\/
daripada /path/to/dest/some\ dir/
masih mengupas ruang dan karakter setelahnya.
Jika saya mencoba untuk membungkus jalan dengan tanda kutip, itu berperilaku cukup banyak dengan cara yang sama, secara efektif memotong jalan di luar angkasa. Jadi itu juga hanya berfungsi untuk melewati bash prompt lokal.
Awalnya saya menggunakan jalur yang memiliki segmen "-" (space-hyphen-space) di dalamnya, dan server jarak jauh mengembalikan kesalahan rsync: on remote machine: -: unknown option
yang merupakan apa yang memulai seluruh upaya pelarian-ruang ini sejak awal.
Jadi apa yang harus saya lakukan untuk mendapatkan ini berfungsi dengan baik dengan server jauh, tanpa harus menghapus spasi atau karakter salah lainnya seperti tanda hubung dari jalur jauh?
-s
alamat masalah tanpa perlu untuk menerapkan double-melarikan diri secara manual.