rsync tidak menggunakan opsi --files-from?


13

Saya mencoba untuk menjalankan rsync -a --files-from=~/.rsync_file_list ~/destinationdan 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_listhanya 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 ~/destinationberfungsi dengan baik. Jadi apa yang saya lewatkan tentang --files-fromopsi ini?


cobased "s#~/#/home/wolf/#g" -ie ~/.rsync_file_list
— Andy

@Andy: Aduh, hasil yang sama.
— Wolf

Jawaban:


20

Oke, saya menemukan masalahnya.

  1. File yang berisi nama file harus hanya berisi nama file; tidak ada jalur, relatif atau sebaliknya;
  2. Setelah menentukan --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:

file 1
file 2
file 3

3
Koreksi: Nama file dalam file yang diberikan ADALAH relatif terhadap direktori sumber, tetapi tidak bisa di atasnya (tidak ../). Garis miring terkemuka akan diabaikan, jadi jalur absolut tidak berfungsi.
— Wolf

Saya yakin Anda dapat mengedit jawaban Anda sendiri dan menambahkan tambahan yang sangat bagus dan info yang relevan yang Anda temukan kemudian dalam jawaban itu sendiri.
— Vinícius M

0

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 yang rsync"dilihat" sebenarnya adalah jalur yang diselesaikan, atau rsync -a /home/foo/file.

Lihat Bash Tilde Expansion untuk informasi lebih lanjut.

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.