Rsync melalui jalur SSH dengan spasi tidak bekerja dengan tanda kutip


17

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

Ketika path memang memiliki spasi, itu tidak berfungsi. Saya telah mencoba tebasan, kutipan, dan kutipan ganda.

Ketika saya menggunakan garis miring, output 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.

Jawaban:


12

Memperluas jawaban rzr dengan contoh kode dan referensi, cukup tambahkan -sflag, kutip path, dan jangan khawatir tentang keluar spasi di path jauh:

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

Untuk referensi, opsi yang ditentukan oleh OP:

  • -a, mode arsip, sama dengan -rlptgoD (no -H, -A, -X)
    • Termasuk:
    • -r, --recursive, berulang ke direktori
    • -l, --links, salin symlinks sebagai symlinks
    • -p, --perms, pertahankan izin
    • -t, --times, pertahankan waktu modifikasi
    • -g, --group, pertahankan grup
    • -o, --owner, pertahankan pemilik (hanya pengguna super)
    • -devices, menyimpan file perangkat (hanya pengguna super)
    • -specials, menyimpan file khusus
  • -v, --verbose, tingkatkan verbositas
  • -z, --compress, kompres data file selama transfer

Parameter tambahan yang dibutuhkan:

  • -s, --protect-args, tidak ada pemisahan karakter, karakter wildcard saja

13

Anda harus keluar dari ruang di shell lokal dan shell jarak jauh. Coba ini:

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

Sumbernya, /path with spaces/di shell lokal hanya bisa diloloskan dengan meletakkan tanda kutip tunggal di sekitarnya '/path with spaces/'.

Di sisi lain dalam kasus tujuan, shell lokal lolos dengan menempatkan tanda kutip tunggal dan spasi melarikan diri di shell jauh dengan menggunakan karakter escape ( \) di depan spasi.


3
Hanya untuk menekankan - Anda perlu KEDUA kutipan dan garis miring terbalik.
Sridhar Sarnobat

2

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


1
Jawaban Anda akan jauh lebih baik jika Anda memberikan contoh yang bisa diikuti oleh pengguna pemula. Terima kasih!
Penatua Geek
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.