Làm cách nào để sử dụng 7-zip để sao lưu tệp, nhưng loại trừ một số thư mục


43

Tôi muốn sử dụng 7-zip để sao lưu một thư mục, nhưng tôi muốn loại trừ tất cả các thư mục có tên ".svn" (bất cứ nơi nào trong cây nguồn). Có ai biết nếu điều này là có thể và trong trường hợp đó như thế nào?

Câu trả lời:


35

Để loại trừ tất cả các thư mục .svn, bạn cần thêm -xr!?svn\*khóa

Ví dụ: phần sau đây sẽ tạo bản sao lưu của C:\Project\To\Backupthư mục không bao gồm bất kỳ thư mục nào thỏa mãn ?svn:

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

Cảm ơn ManiacD, nhưng tôi không thể có được điều này để làm việc -xr svn * mang lại cho tôi một lỗi và nếu tôi cố gắng -xr svn * nó vẫn sẽ không loại trừ svn!?!
Mikael Sundberg

bạn cần một dấu gạch chéo ngược sau? svn để nó hoạt động có nghĩa là loại trừ mọi thứ bên dưới thư mục .svn. -xr !? svn \ *
ManiacD

Đừng lo lắng tôi đã có hàng đống vấn đề ban đầu khiến nó hoạt động tốt. 7-zip loại trừ switch -x (thư mục recurse -xr) với! không bao gồm tên tệp dựa trên tìm kiếm ký tự đại diện. Nếu không có dấu gạch chéo ngược, nó đang cố gắng loại trừ tên tệp khớp với? Svn * tức là. asvn.log với \ * ở cuối có nghĩa là không bao gồm bất cứ thứ gì bên dưới thư mục khớp? svn
ManiacD

Để biết chi tiết về cách sử dụng ký tự đại diện, hãy xem tệp trợ giúp được gửi cùng với 7-Zip. Đã giúp tôi sửa một nhiệm vụ tương tự vài ngày trước. 7-Zip sử dụng ký tự đại diện một chút ... khác nhau;)
släcker

3
Và nếu bạn tình cờ tìm thấy loại trừ thư mục chung, hãy lưu ý rằng đó ?là để khớp với "period-svn" ( .svn), vì vậy để bỏ qua mọi thứ trong thư mục SkipMebạn sẽ sử dụng-xr!SkipMe\*
drzaus

13

Thay vì sử dụng 7-Zip để loại trừ các thư mục .svn (hoặc có khả năng là _svn), tôi khuyên bạn nên sử dụng lệnh xuất svn (sử dụng svn.exe từ SlikSVN ) để xuất bản sao làm việc sang thư mục tạm thời:

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

Sau đó sử dụng 7-Zip như sau:

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

Sau đó xóa thư mục dàn.

Đây là những gì tôi làm để sao lưu các bản sao làm việc tại địa phương của tôi.


Cảm ơn các mẹo xuất khẩu. Có sẵn trên menu TortoiseSVN.
Arnold Spence

12

Bạn có thể loại trừ các tệp với 7zip bằng danh sách các tệp hoặc thư mục:

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

Tệp loại trừ trông như:

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

Khóa là -xr và đặc biệt là "r" cho biết áp dụng danh sách loại trừ theo cách đệ quy cho từng cấp của thư mục. Bạn có thể muốn sử dụng 2 loại trừ danh sách tệp một cho tuyệt đối và một cho loại trừ đệ quy. Trên đây là từ một tập lệnh bash chạy trong cygwin.


4

Khi tôi sử dụng

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

cuối cùng tôi đã thêm thư mục .git mà tôi không muốn, đổi nó thành

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

có kết quả mong muốn.


3

Khi tôi sử dụng

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

thư mục WEB-INF không được loại trừ. Thêm dấu hoa thị trước tên thư mục

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

Có kết quả mong muốn.


phần hoa thị là quan trọng nhất. Điều này sẽ nhận được nhiều upvote.
Valerio

0

Đối với tôi, tôi đã cố gắng sao lưu một loạt các thư mục mã maven và muốn loại trừ bất kỳ thư mục nào có tên "target":

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

Tham số loại trừ có liên quan là -xr!*\target\*.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.