คอมเพล็กซ์รวมถึง / ไม่รวมกับ rsync


14

ฉันกำลังพยายามหาไวยากรณ์ตัวกรอง rsync เพื่อทำการรวม / แยกที่ซับซ้อนและพยายามทำสิ่งต่อไปนี้:

Include /
Exclude /home
Include /home/user1/*
Include /home/user2/subdir/*

ฉันได้ลองใช้รูปแบบของตัวกรองหลายรูปแบบและถึงแม้จะอ่านหน้าคนหลายครั้งฉันก็ไม่สามารถรับผลกระทบนี้ได้ ตัวกรอง Rsync ดูเหมือนจะทรงพลังมากและฉันคิดว่ามันยากที่จะเชื่อว่าพวกเขาไม่สามารถจัดการสถานการณ์ทั่วไปเช่นนี้ได้

คำตอบ:


17

คุณต้องรวมไดเรกทอรีหลักทั้งหมดลงในไดเรกทอรีที่ต้องการก่อนใช้กฎการแยก

ตัวอย่างเช่นฉันใช้สิ่งต่อไปนี้ในสคริปต์สำรอง:

rsync -av \ 
--filter='+ /var/' \
--filter='+ /var/backups/' \
--filter='- /var/*' \
/ \
$DEST

ดังนั้นในกรณีของคุณคุณจะต้องมีสิ่งต่อไปนี้:

rsync -av \ 
--filter='+ /home/' \
--filter='+ /home/user1/' \
--filter='+ /home/user2/' \
--filter='+ /home/user2/subdir/' \
--filter='- /home/user2/*' \
--filter='- /home/*' \
/ \
$DEST

ยอดเยี่ยม เอาฉันไปซักพัก
yclian

อย่างใดเมื่อฉันอ่านman rsyncฉันเข้าใจผิดลำดับที่เหมาะสมของการผสมรวมถึงและไม่รวม ฉันใช้เวลาหนึ่งชั่วโมงในการคิดออก ...
อดัม Ryczkowski

6

บนบรรทัดคำสั่ง:

rsync --dry-run --verbose --recursive --include=/home/user1 --exclude=/home/* / DEST

ลบออก--dry-runเพื่อให้ใช้งานได้แทนที่ "DEST" ด้วยปลายทางของคุณและเพิ่มผู้ใช้และโฮสต์ไปยังแหล่งที่มา "/" หากจำเป็น

จากไฟล์กฎ:

rsync --dry-run --verbose --recursive --filter='merge /etc/rsync/somerules.rules' / DEST

เนื้อหาของที่/etc/rsync/somerules.rulesอาจเป็น:

+/ /home/user1
-/ /home/*

คุณควรทดสอบสิ่งเหล่านี้และคุณอาจต้องทำการปรับเปลี่ยนบางอย่าง แต่สิ่งนี้จะช่วยให้คุณเริ่มต้นได้


ตกลงว่าได้ผล ฉันมีกรณีที่ซับซ้อนมากขึ้นซึ่งฉันได้เพิ่มไว้ในคำถาม การรวมเพิ่มเติมไม่ทำงานกับสถานการณ์ย่อย
brianmathis
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.