วิธีใช้ rsync เพื่อสำรองข้อมูลไดเรกทอรีที่ไม่มีไดเรกทอรีย่อย git


43

ฉันต้องการคัดลอกcไดเรกทอรีของฉันด้วยไดเรกทอรีย่อยทั้งหมดยกเว้น./gitไดเรกทอรีย่อย ฉันใช้มันrsync:

echo "copy c and sh files "
rsync -a --include='*.c' --include='*.sh' --include='*/' --exclude='*' ~/c/ ~/Dropbox/Public/c
# remove .git directory = do not send it to dropbox. Thx to Tomasz Sowa
rm -rf ~/Dropbox/Public/c/.git

ฉันทำได้ดีกว่าไหม

คำตอบ:


48

เพียงเพิ่มการยกเว้นที่ชัดเจนสำหรับ. git:

rsync -a --exclude='.git/' --include='*.c' --include='*.sh' --include='*/' --exclude='*' ~/c/ ~/Dropbox/Public/c

ตัวเลือกอื่นคือการสร้าง~/.cvsignoreที่มีบรรทัดต่อไปนี้พร้อมกับไดเรกทอรีอื่น ๆ ที่คุณต้องการยกเว้น:

.git/


ใช้งานได้ดี ขอบคุณ. ฉันพยายามตัวเลือกบางอย่างไม่ประสบความสำเร็จ
อดัม

@ Adam: หากคุณพอใจกับคำตอบนี้โปรดทำเครื่องหมายถูกที่ด้านซ้าย
goldilocks

--excludeมันมีการระบุวิธีการที่คุณควรจะให้เส้นทางสำหรับ หากคุณมีปัญหาลองดูคำตอบนี้
totymedli

32

rsync --cvs-excludeคุณก็สามารถใช้ นอกจากนี้ยังละเว้น.gitไดเรกทอรี

แต่ระวังว่าสิ่งนี้จะไม่สนใจไดเรกทอรีที่เรียกว่าcoreเกิดขึ้นในไฟล์ต้นฉบับของ Magento


12
+1 สำหรับ "แต่ระวัง ... "
omikron

10
สิ่งนี้ใช้ได้กับ.gitไดเรกทอรีระดับบนสุดแต่ไม่เหมาะกับ.gitไดเรกทอรีใน submodules นอกจากนี้ยังไม่ละเว้นไฟล์ Git .gitmodulesเช่น
maxschlepzig
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.