Pertanyaan Rsync melalui jalur SSH dengan spasi tidak berfungsi dengan tanda kutip


Saya dapat berhasil RSYNC melalui SSH selama jalur tidak memiliki spasi di dalamnya.

Ketika jalan memang memiliki ruang, itu tidak berfungsi. Saya telah mencoba garis miring, tanda kutip, dan tanda kutip ganda.

Ketika saya menggunakan garis miring, hasilnya menyatakan bahwa itu sukses tetapi saya tidak melihat file yang ditransfer.

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

Ketika saya menggunakan tanda kutip tunggal atau ganda, itu memberi tahu saya bahwa izin ditolak setelah memasukkan kata sandi saya

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

Apa yang dapat saya?

Terima kasih.


12
2018-03-16 19:17


asal




Jawaban:


Memperluas jawaban rzr dengan kode contoh dan referensi, tambahkan saja -s Tandai, kutip jalurnya, dan jangan khawatir tentang pelarian spasi di jalur jarak jauh:

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

Untuk referensi, opsi yang ditentukan oleh OP:

  • -a, mode arsip, sama -rlptgoD (no -H, -A, -X)
    • Termasuk:
    • -r, --recursive, recurse ke dalam direktori
    • -l, --link, salin symlink sebagai symlink
    • -p, --perms, pertahankan izin
    • -t, --times, pertahankan waktu modifikasi
    • -g, --group, pertahankan grup
    • -o, --owner, preserve owner (hanya untuk pengguna super)
    • -perangkat, melindungi file perangkat (hanya untuk pengguna super)
    • -specials, pertahankan file khusus
  • -v, --verbose, meningkatkan verbosity
  • -z, --kompresi, kompres data file selama transfer

Parameter tambahan yang dibutuhkan:

  • -s, --protect-args, tidak ada space-splitting, karakter wildcard saja

6
2018-02-01 18:04



Ini harus menjadi jawaban yang diterima. Jauh lebih bersih. - nyuszika7h


Anda perlu menghindari spasi di shell lokal dan shell jarak jauh. Coba ini:

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

Sumber, /path with spaces/ di shell lokal dapat diloloskan hanya dengan menempatkan tanda kutip tunggal di sekitarnya i.e. '/path with spaces/'.

Di sisi lain dalam kasus tujuan, shell lokal diloloskan dengan menempatkan tanda kutip tunggal dan ruang-ruang dilepaskan di shell jarak jauh dengan menggunakan karakter escape (\) di depan ruang.


13
2018-03-16 19:29



Hanya untuk menekankan - Anda perlu KEDUA tanda kutip dan garis miring terbalik. - Sridhar-Sarnobat


lihat opsi rsync –protect-args (-s), tidak ada garis miring tambahan yang diperlukan


1
2018-06-08 00:47



Jawaban Anda akan jauh lebih baik jika Anda memberikan contoh yang bisa diikuti oleh pengguna pemula. Terima kasih! - Elder Geek