Bagaimana cara menggunakan 7-zip untuk membuat cadangan file, tetapi mengecualikan beberapa direktori

43

Saya ingin menggunakan 7-zip untuk membuat cadangan direktori, tapi saya ingin mengeluarkan semua direktori bernama ".svn" (di mana saja di pohon sumber). Adakah yang tahu kalau ini mungkin dan dalam kasus itu bagaimana?

Mikael Sundberg
sumber

Jawaban:

35

Untuk mengecualikan semua direktori .svn, Anda perlu menambahkan -xr!?svn\*sakelar

Misalnya, yang berikut ini akan membuat cadangan C:\Project\To\Backupdirektori tidak termasuk folder yang memenuhi ?svn:

"C:\Program Files\7-Zip\7z.exe" a -r -tzip -y -xr!?svn\* Project.zip C:\Project\To\Backup\*
ManiacD
sumber
Terima kasih ManiacD, tapi saya tidak bisa menjalankan ini -xr!? Svn * memberi saya kesalahan dan jika saya mencoba -xr! .Svn * itu masih tidak akan mengecualikan .svn
Mikael Sundberg
Anda memerlukan backslash setelah? svn agar dapat berfungsi yang berarti mengecualikan semua yang ada di bawah direktori .svn. -xr!? svn \ *
ManiacD
Jangan khawatir, saya punya banyak masalah pada awalnya membuatnya bekerja juga. 7-zip mengecualikan switch -x (direktori -xr recurse) dengan! mengecualikan nama file berdasarkan pada pencarian wildcard. Tanpa backslash itu mencoba mengecualikan nama file yang cocok? Svn * yaitu. asvn.log dengan \ * di akhir berarti tidak termasuk apa pun di bawah direktori yang cocok? svn
ManiacD
Untuk detail tentang cara menggunakan wildcard, lihat file bantuan yang dikirim dengan 7-Zip. Membantu saya memperbaiki tugas serupa beberapa hari yang lalu. 7-Zip menggunakan wildcard sedikit ... berbeda;)
släcker
3
Dan jika Anda tersandung di sini mencari pengecualian folder umum, perhatikan bahwa ?ini cocok dengan "period-svn" ( .svn), jadi untuk melewati semua yang ada di folder SkipMeyang akan Anda gunakan-xr!SkipMe\*
drzaus
13

Alih-alih menggunakan 7-Zip untuk mengecualikan folder .svn (atau berpotensi _svn), saya akan merekomendasikan menggunakan perintah ekspor svn (gunakan svn.exe dari SlikSVN ) untuk mengekspor copy pekerjaan ke folder sementara:

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

Kemudian gunakan 7-Zip sebagai berikut:

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

Kemudian hapus folder pementasan.

Inilah yang saya lakukan untuk membuat cadangan copy pekerjaan lokal saya.

Richard Slater
sumber
Terima kasih atas tip ekspornya. Tersedia di menu TortoiseSVN juga.
Arnold Spence
12

Anda dapat mengecualikan file dengan 7zip menggunakan daftar file atau direktori:

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

File kecualikan terlihat seperti:

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

Kuncinya adalah -xr dan khususnya "r" yang mengindikasikan menerapkan daftar pengecualian secara rekursif, untuk setiap tingkat direktori. Anda mungkin ingin menggunakan 2 kecualikan daftar file satu untuk absolut dan satu untuk pengecualian rekursif. Di atas adalah dari skrip bash yang berjalan di cygwin.

Tim Desjardins
sumber
4

Ketika saya digunakan

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

akhirnya menambahkan direktori .git yang tidak saya inginkan, mengubahnya menjadi

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

mendapat hasil yang diinginkan.


sumber
3

Ketika saya digunakan

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

direktori WEB-INF tidak dikecualikan. Menambahkan tanda bintang sebelum nama dir

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

Mendapat hasil yang diinginkan.

Ashutosh Jindal
sumber
bagian asterisk adalah yang paling penting. Ini harus mendapatkan lebih banyak upvotes.
Valerio
0

Bagi saya, saya mencoba untuk membuat cadangan banyak direktori kode maven dan ingin mengecualikan direktori apa pun yang bernama "target":

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

Parameter kecualikan yang relevan tadinya -xr!*\target\*.

Kit Menke
sumber