Cara memasukkan file yang dikecualikan dalam rsync

16

Saya mencoba menyiapkan rsync yang mengecualikan semua .*file kecuali untuk .htaccesstetapi sayangnya, ini tidak berfungsi:

rsync -avP --exclude=".*" --include="./.htaccess" ./. user@server:/dir

Apakah mungkin untuk mengecualikan aturan pengecualian umum?

Kaya
sumber

Jawaban:

24

Aturan pencocokan pertama berlaku, jadi sertakan .htaccesssebelum mengecualikan .*.

rsync -avP --include=".htaccess" --exclude=".*" . user@server:/dir

Ini salinan .htaccessdi setiap level. Saya tidak tahu apa yang Anda maksudkan ./.htaccess; jika Anda ingin mencocokkan file hanya dengan menyalin, mulailah pola dengan a /. Jika Anda hanya ingin root .htaccess, Anda tidak bisa hanya menggunakan --include='/.htaccess' --exclude='.*', karena aturan non-root sebenarnya diutamakan di sini, Anda perlu melakukan sesuatu yang lebih rumit:

rsync -avP --exclude='/*/**/.htaccess' --include='.htaccess' --exclude=".*" . user@server:/dir

Bacaan lebih lanjut: prinsip dasar untuk filter rsync .

Gilles 'SO- berhenti menjadi jahat'
sumber
@ fred.bear: Yang itu adalah kesalahan ketik yang asli, dan yang buruk. Terima kasih telah melihatnya!
Gilles 'SO- stop being evil'
Terima kasih, saya telah mencoba menempatkan yang --includepertama, tetapi "./" di depan "./.htaccess" adalah apa yang membunuhnya.
Kaya
1
@Kaya perhatikan bahwa jika ada direktori tersembunyi yang berisi .htaccessfile, Anda harus --include='.*/'(saya pikir) sebelum final --exclude, lihat juga di sini
Tobias Kienzler