Saya mencoba untuk menjalankan rsync -a --files-from=~/.rsync_file_list ~/destination
dan memberitahu saya: rsync error: syntax or usage error (code 1) at options.c(1652) [client=3.0.7]
. Adakah yang bisa memberi tahu saya apa yang saya lakukan salah?
File tersebut ~/.rsync_file_list
hanya berisi daftar nama file yang diawali dengan ~/
, dipisahkan oleh baris baru (meskipun saya juga sudah mencoba mendaftarkan semuanya pada baris yang sama, dengan hasil yang sama).
Jika saya menjalankannya rsync -a ~/file ~/file2 ~/file3 ~/destination
berfungsi dengan baik. Jadi apa yang saya lewatkan tentang --files-from
opsi ini?
sed "s#~/#/home/wolf/#g" -ie ~/.rsync_file_list
Jawaban:
Oke, saya menemukan masalahnya.
--files-from=FILE
, rsync memerlukan direktori sumber untuk menemukan file yang terdaftar.Jadi perintahnya seharusnya
rsync -a --files-from=~/.rsync_file_list $HOME/ /destination
..rsync_file_list
harus dibaca:sumber
../
). Garis miring terkemuka akan diabaikan, jadi jalur absolut tidak berfungsi.Menggunakan "~" mungkin tidak berfungsi di dalam file "files-from" kecuali rsync cukup pintar untuk mengenali dan menerjemahkan simbol "~".
Ketika Anda menentukan "~" sebagai bagian dari perintah di baris perintah shell Anda, itu adalah shell itu sendiri yang mengubah "~" ke direktori home Anda sebelum meneruskan argumen ke program. Jadi meskipun Anda mengetik
rsync -a ~/file
, apa yangrsync
"dilihat" sebenarnya adalah jalur yang diselesaikan, ataursync -a /home/foo/file
.Lihat Bash Tilde Expansion untuk informasi lebih lanjut.
sumber