Saya menggunakan rsync -rlptD
untuk menyalin direktori dari pengguna lain. Ada beberapa file (saya tidak punya cara untuk mengetahui ini di muka) yang saya tidak punya izin untuk menyalin. Apakah ada cara agar rsync mengabaikan ini. Masalahnya adalah jika rsync mengembalikan non-nol, skrip bash -x saya akan keluar.
permissions
rsync
error-handling
JeffCharter
sumber
sumber
Jawaban:
Rsync tidak memiliki opsi untuk ini. Saya melihat dua solusi. Salah satunya adalah untuk mem-parsing pesan kesalahan rsync; ini tidak terlalu kuat. Yang lainnya adalah membuat daftar file yang tidak dapat dibaca untuk difilter.
Jika Anda
find
tidak memiliki-readable
dan-executable
, ganti dengan-perm
arahan yang sesuai .Ini mengasumsikan bahwa tidak ada file yang tidak dapat dibaca yang namanya berisi baris baru. Jika Anda perlu mengatasinya, Anda harus membuat daftar file yang dibatasi nol seperti ini, dan meneruskan
-0
opsi kersync
:sumber
stat()
setiap file dua kali (sekali via rsync dan sekali via find) akan sangat buruk.\!
mengutip!
operator untuk melindunginya dari ekspansi shell. Backslash sebenarnya tidak diperlukan di sini karena tidak ada shell yang mengembang!
ketika diikuti oleh spasi, tetapi tidak sakit. Apa yang salah dengan file tersembunyi?Saya membuat solusi sederhana untuk situasi khusus ini:
Ini kembali
0
jika kode yang dikembalikan adalah 0 atau 23, dan mengembalikan kode keluar dalam semua kasus lainnya.Penting untuk dicatat, bahwa ini akan mengabaikan semua
Partial transfer due to error
kesalahan, bukan hanya izin , karena akan menangkap semua yang keluar dari kode23
. Untuk informasi lebih lanjut tentang kode status rsync silakan lihat tautan ini .sumber