วิธีรวมไฟล์ที่ไม่รวมใน rsync


16

ฉันกำลังพยายามตั้งค่า rsync ที่แยก.*ไฟล์ทั้งหมดยกเว้น.htaccessแต่น่าเสียดายที่มันไม่ทำงาน:

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

เป็นไปได้ไหมที่จะยกเว้นกฎการยกเว้นทั่วไป?

คำตอบ:


24

กฎการจับคู่ครั้งแรกที่จะนำไปใช้เพื่อรวมก่อนที่จะไม่รวม.htaccess.*

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

สำเนานี้.htaccessในทุกระดับ ผมไม่ทราบว่าสิ่งที่คุณตั้งใจกับ./.htaccess; /ถ้าคุณต้องการเพื่อให้ตรงกับไฟล์ที่รากของการคัดลอกเพียงเริ่มต้นรูปแบบที่มี หากคุณต้องการรูท.htaccessเท่านั้นคุณไม่สามารถใช้งาน--include='/.htaccess' --exclude='.*'ได้เพราะกฎที่ไม่ได้รูทนั้นมีความสำคัญกว่าคุณจะต้องทำอะไรที่ซับซ้อนกว่านี้:

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

อ่านเพิ่มเติม: หลักการพื้นฐานสำหรับตัวกรอง rsync


@ fred.bear: อันนั้นเป็นตัวพิมพ์ที่แท้จริงและเป็นสิ่งที่น่ารังเกียจ ขอบคุณที่จำได้!
Gilles 'หยุดความชั่วร้าย'

ขอบคุณฉันได้ลองใส่--includeครั้งแรก แต่ "./" ต่อหน้า "./.htaccess" คือสิ่งที่ฆ่ามัน
รวย

1
@Rich โปรดทราบว่าหากมีไดเรกทอรีที่ซ่อนอยู่ซึ่งมี.htaccessไฟล์อยู่คุณจะต้อง--include='.*/'(ฉันคิดว่า) ก่อนถึงขั้นสุดท้าย--excludeดูได้ที่นี่ด้วย
Tobias Kienzler
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.