ฉันจะใช้ 7-zip เพื่อสำรองไฟล์ได้อย่างไรยกเว้นบางไดเรกทอรี


43

ฉันต้องการใช้ 7-zip เพื่อสำรองข้อมูลไดเรกทอรี แต่ฉันต้องการให้ยกเว้นไดเรกทอรีทั้งหมดที่ชื่อ ".svn" (ที่ใดก็ได้ในแผนผังต้นไม้ต้นทาง) ไม่มีใครรู้ว่าสิ่งนี้เป็นไปได้และในกรณีนั้นได้อย่างไร

คำตอบ:


35

หากต้องการยกเว้นไดเรกทอรี. svn ทั้งหมดคุณต้องเพิ่ม-xr!?svn\*สวิตช์

ตัวอย่างเช่นต่อไปนี้จะสร้างการสำรองข้อมูลของC:\Project\To\Backupไดเรกทอรีไม่รวมโฟลเดอร์ใด ๆ ที่ตอบสนอง?svn:

"C:\Program Files\7-Zip\7z.exe" a -r -tzip -y -xr!?svn\* Project.zip C:\Project\To\Backup\*

ขอบคุณ ManiacD แต่ฉันไม่สามารถใช้งานได้ -xr!? svn * ให้ข้อผิดพลาดแก่ฉันและถ้าฉันลอง -xr! .svn * มันยังคงไม่รวมอยู่ใน. svn
Mikael Sundberg

คุณต้องการแบ็กสแลชหลัง? svn เพื่อให้มันทำงานซึ่งหมายถึงการยกเว้นทุกอย่างภายใต้ไดเรกทอรี. svn -xr!? svn \ *
ManiacD

ไม่ต้องกังวลฉันมีปัญหามากมายในขั้นต้นเพื่อให้ทำงานได้ดี สวิทช์แยก 7-zip -x (-xr ไดเรกทอรี recurse) ด้วย! ไม่รวมชื่อไฟล์ตามการค้นหาไวด์การ์ด หากไม่มีเครื่องหมายแบ็กสแลชมันพยายามแยกชื่อไฟล์ที่ตรงกับ? svn * เช่น asvn.log ด้วย \ * ท้ายหมายถึงไม่รวมสิ่งใดภายใต้การจับคู่ไดเรกทอรีหรือไม่ svn
ManiacD

สำหรับรายละเอียดเกี่ยวกับวิธีใช้ไวด์การ์ดดูที่ไฟล์ช่วยเหลือที่มาพร้อมกับ 7-Zip ช่วยฉันแก้ไขงานที่คล้ายกันเมื่อสองสามวันก่อน 7-Zip ใช้สัญลักษณ์แทนนิด ... ที่แตกต่างกัน;)
คนขี้เกียจ

3
และถ้าคุณสะดุดนี่มองหาการยกเว้นโฟลเดอร์ทั่วไปทราบว่า?จะตรงกับ "งวด SVN" ( .svn) ดังนั้นเพื่อที่จะข้ามทุกอย่างในโฟลเดอร์SkipMeที่คุณจะใช้-xr!SkipMe\*
drzaus

13

แทนที่จะใช้ 7-Zip เพื่อแยกโฟลเดอร์. svn (หรืออาจ _svn) ฉันแนะนำให้ใช้คำสั่งส่งออก svn (ใช้ svn.exe จากSlikSVN ) เพื่อส่งออกสำเนาการทำงานไปยังโฟลเดอร์ชั่วคราว:

svn export C:\Path\To\WC C:\Backup\Staging

จากนั้นใช้ 7-Zip ดังนี้:

7z.exe a "C:\Parth\To\Archive" "C:\Backup\Staging\*" -bd t7z -v2g -r

จากนั้นลบโฟลเดอร์การจัดเตรียม

นี่คือสิ่งที่ฉันทำเพื่อสำรองข้อมูลสำเนาการทำงานในท้องถิ่นของฉัน


ขอบคุณสำหรับเคล็ดลับการส่งออก มีให้ในเมนู TortoiseSVN ด้วย
Arnold Spence

12

คุณสามารถยกเว้นไฟล์ด้วย 7zip โดยใช้รายการไฟล์หรือไดเรกทอรี:

/path/to7Zip/7z a -bd f:/backup/backup_2009-08-23_daily.zip home \
          '-xr@\path\to\backup_daily_exclude.lst'

ไฟล์ที่แยกออกดูเหมือนว่า:

home\Photos\iPod*
home\dhltd\*
BlogMatrix\Sparks\db\*.archive
home\eclipse\*
.svn

กุญแจคือ -xr และโดยเฉพาะอย่างยิ่ง "r" ซึ่งระบุว่าใช้รายการที่แยกซ้ำในแต่ละระดับของไดเรกทอรี คุณอาจต้องการใช้ไฟล์ที่แยก 2 รายการหนึ่งรายการสำหรับรายการที่แน่นอนและอีกไฟล์หนึ่งสำหรับการยกเว้นซ้ำ ด้านบนมาจากสคริปต์ทุบตีที่ทำงานใน cygwin


4

เมื่อฉันใช้

"C:\Program Files\7-Zip\7z.exe" a -r -ttar -xr!?git\* aufs2-util.tar aufs2-util\*

มันจบลงด้วยการเพิ่มไดเรกทอรี. git ที่ฉันไม่ต้องการเปลี่ยนไปเป็น

"C:\Program Files\7-Zip\7z.exe" a -r -ttar -xr!?git\ aufs2-util.tar aufs2-util\*

ได้ผลลัพธ์ที่ต้องการ


3

เมื่อฉันใช้

7z a "D:\codebase\w.7z" "D:\codebase\Edison\otm\Webapp" -t7z -mx0 -xr!WEB-INF\*

ไดเร็กทอรี WEB-INF ไม่ถูกแยกออก การเพิ่มเครื่องหมายดอกจันก่อนชื่อ dir

7z a "D:\codebase\w.7z" "D:\codebase\Edison\otm\Webapp" -t7z -mx0 -xr!*WEB-INF\*

ได้ผลลัพธ์ที่ต้องการ


ส่วนเครื่องหมายดอกจันเป็นสิ่งสำคัญที่สุด สิ่งนี้ควรจะได้รับการโหวตมากขึ้น
Valerio

0

สำหรับฉันฉันพยายามสำรองไดเรกทอรีรหัส maven จำนวนมากและต้องการแยกไดเรกทอรีใด ๆ ที่ชื่อ "target":

"C:\Program Files\7-Zip\7z.exe" a -r -tzip -y -xr!*\target\* site.zip C:\code\site\

-xr!*\target\*ที่เกี่ยวข้องยกเว้นพารามิเตอร์เป็น

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