มีคำสั่งเชลล์ / สคริปต์แบบธรรมดาที่สนับสนุนการแยกไฟล์ / โฟลเดอร์บางไฟล์ออกจากการเก็บถาวรหรือไม่?
ฉันมีไดเรกทอรีที่ต้องเก็บถาวรด้วยไดเรกทอรีย่อยที่มีจำนวนไฟล์ที่มีขนาดใหญ่มากฉันไม่จำเป็นต้องสำรองข้อมูล
ไม่ใช่วิธีแก้ปัญหา:
tar --exclude=PATTERN
คำสั่งตรงกับรูปแบบที่กำหนดและไม่รวมไฟล์เหล่านั้น แต่ฉันต้องการเฉพาะไฟล์และโฟลเดอร์ที่จะละเลย (เส้นทางของไฟล์เต็ม) มิฉะนั้นไฟล์ที่ถูกต้องอาจจะได้รับการยกเว้น
ฉันยังสามารถใช้คำสั่ง find เพื่อสร้างรายการไฟล์และแยกไฟล์ที่ฉันไม่ต้องการเก็บถาวรและส่งต่อรายการให้ tar แต่ก็ใช้ได้กับไฟล์จำนวนเล็กน้อยเท่านั้น ฉันมีหมื่น
ฉันเริ่มคิดว่าทางออกเดียวคือการสร้างไฟล์ที่มีรายการไฟล์ / โฟลเดอร์ที่จะแยกออกจากนั้นใช้ rsync ด้วย--exclude-from=file
เพื่อคัดลอกไฟล์ทั้งหมดไปยังไดเรกทอรี tmp แล้วใช้ tar เพื่อเก็บถาวรไดเรกทอรีนั้น
ใครสามารถคิดวิธีที่ดีกว่า / มีประสิทธิภาพมากกว่านี้ได้ไหม
แก้ไข: ทางออกของCharles Maทำงานได้ดี gotcha ขนาดใหญ่คือ--exclude='./folder'
ต้องอยู่ที่จุดเริ่มต้นของคำสั่ง tar คำสั่งแบบเต็ม (cd ก่อนดังนั้นการสำรองข้อมูลจึงสัมพันธ์กับไดเรกทอรีนั้น):
cd /folder_to_backup
tar --exclude='./folder' --exclude='./upload/folder2' -zcvf /backup/filename.tgz .
--exclude
ไม่จำเป็นต้องมาก่อน แต่ต้องมาก่อนที่ไดเรกทอรีต้นทาง (ทดสอบกับ tar 1.29 บน Cygwin)