Cadangan tambahan dengan 7zip

17

Saya telah mencari dan mencari di Google, tetapi tidak dapat menemukan perintah yang digunakan utilitas baris perintah 7zip untuk membuat cadangan tambahan. Jadi bisakah seseorang berbagi perintah?

Terima kasih

btw saya menemukan tautan ini: http://wmug.co.uk/wmug/b/sean/archive/2009/03/20/powershell-amp-7zip-incremental-backup-solution.aspx . Tapi sepertinya itu untuk cadangan diferensial, meskipun dikatakan tambahan.

gyaani_guy
sumber

Jawaban:

11

Seharusnya sederhana, gunakan ini untuk membuat dan memperbarui arsip secara bertahap:

7zr u -up0q3r2x2y2z1w2 {archive}.7z {path}

Halaman ini menawarkan referensi untuk opsi pembaruan.

Mereka diterjemahkan sebagai berikut:

  • p0 - Jika "File ada dalam arsip, tetapi tidak cocok dengan wildcard" maka hapus file dari arsip.
  • q3- Jika "File ada dalam arsip, tetapi tidak ada pada disk" maka hapus file dari arsip dan hapus dari sistem file setelah ekstraksi .
  • r2 - Jika "File tidak ada dalam arsip, tetapi ada pada disk" kemudian masukkan file ke dalam arsip.
  • x2 - Jika "File dalam arsip lebih baru daripada file pada disk" maka kemas file yang lebih lama ke dalam arsip.
  • y2 - Jika "File dalam arsip lebih lama dari file pada disk" maka kemas file yang lebih baru ke dalam arsip.
  • z1 - Jika "File dalam arsip sama dengan file pada disk" maka gunakan kembali versi file yang dikemas.
  • w2 - Jika ukuran file berbeda maka kemas file yang diubah ke dalam arsip.
ArtemGr
sumber
Halo, apa arti banyak opsi itu?
Zhianc
Ini adalah peta dari status file ke tindakan. Ada tujuh kemungkinan keadaan.
ArtemGr
3
Ini bukan cadangan tambahan. Perintah ini membuat cadangan diferensial dan membuat arsip baru dengan perubahan sejak cadangan penuh terakhir. Trek cadangan tambahan berubah sejak cadangan tambahan sebelumnya (berbeda-beda).
stil
Saya pikir ini benar-benar salah, karena hanya memperbarui archive.7z menjadi hampir sama dengan hanya membuat arsip baru, tetapi sedikit lebih cepat karena akan digunakan kembali. Jawaban Javier di bawah ini tampaknya berbeda.
Tuntable
Ketika arsip besar dan peningkatannya kecil, " sedikit lebih cepat " cukup besar. Tidak mengemas ulang seluruh arsip adalah salah satu poin dari cadangan tambahan. Juga, ini bukan cadangan diferensial: kami memperbarui arsip utama dan tidak menyimpan perbedaan dalam arsip terpisah. Jika Anda lebih menyukai solusi lain, jangan ragu untuk memperbaikinya, ada lebih dari satu cara untuk menguliti kucing.
ArtemGr
8

Jika Anda ingin membuat cadangan tambahan , Anda perlu menyediakan 7-zip dengan daftar file yang dimodifikasi (dengan -i@fileList), dan Anda perlu menguraikan daftar tersebut entah bagaimana. Di mirror.org arsip pertanyaan yang dihapus Pencadangan incremantal offline melalui thumbdrive Anda dapat menemukan baris perintah Unix menggunakan tanda tangan MD5 untuk membuat fileList.

Operasi pembaruan 7-zip memungkinkan untuk membuat arsip sekunder dengan perbedaan (termasuk file yang dihapus) yang terjadi sejak arsip dasar / arsip utama. Itu benar bernama cadangan diferensial (seperti yang dinyatakan dalam pertanyaan itu sendiri).

Saya telah menemukan artikel yang bagus tentang topik ini di WPCTips "Cadangan Diferensial dengan 7-zip" (diarsipkan) . Mereka merekomendasikan untuk menggunakan program GUI (Toucan), atau menggunakan resep ini untuk baris perintah:

7z u {base archive.7z} -u- -"up0q3r2x2y2z0w2!{differential.7z}" {folder to archive}

Ini sedikit berbeda dari yang 7zr u -up0q3r2x2y2z1w2 {archive}.7z {path}diusulkan oleh ArtemGr:

  • -u- memberitahu arsip utama tidak boleh dimodifikasi
  • "-up0q3r2x2y2z0w2!{differential.7z}"menentukan arsip diferensial target, dan tindakan apa yang harus dilakukan untuk setiap file untuk setiap kondisi / keadaan: tambahkan file yang baru atau dimodifikasi dalam sistem file, hapus file yang hanya di arsip 7zip, abaikan sisanya.
    Perhatikan bahwa "!" karakter akan dicegat oleh bashkecuali dikutip.

Kalau-kalau Anda ingin tahu tentang spesifik dari samar itu p0q3r2x2y2z0w2

<state> | State condition
p | File exists in archive, but is not matched with wildcard.   Exists, but is   not matched 
q | File exists in archive, but doesn't exist on disk.
r | File doesn't exist in archive, but exists on disk.
x | File in archive is newer than the file on disk.
y | File in archive is older than the file on disk.
z | File in archive is same as the file on disk
w | Can not be detected what file is newer (times are the same, sizes are different)

<action> | Description 
0 | Ignore file (don't create item in new archive for this file) 
1 | Copy file (copy from old archive to new) 
2 | Compress (compress file from disk to new archive) 
3 | Create Anti-item (item that will delete file or directory during extracting). This feature is supported only in 7z format. 
Javier
sumber
2
Terima kasih atas jawabannya Javier, dan selamat datang di Pengguna Super. Ada kebijakan di sini untuk meringkas tautan jika hilang - dapatkah Anda menjelaskan bagaimana perintah mencapai cadangan tambahan? (terutama up0q3r2x2y2z0w2bagian!) Terima kasih :-)
bertieb
1
@bertieb terima kasih atas sarannya. Saya harap ini lebih jelas sekarang.
Javier
1
@DanielSokolowski Tidak yakin apakah ini menjawab pertanyaan Anda. Jika Anda melakukan cadangan tambahan (A + b + c + d), Anda harus mengekstrak dari setiap arsip sesuai urutan pembuatannya. Jika Anda melakukan cadangan diferensial (A + (b + c + d)). Ini adalah 2 arsip yang harus Anda ekstrak. Akan menyenangkan bahwa arsip terakhir berisi informasi tentang arsip sebelumnya dan urutan ekstraksi, sehingga ekstraksi dapat dilakukan dengan satu perintah. Tetapi saya tidak mengetahui fitur tersebut.
Javier
1
artikel yang Anda bagikan tidak membuka @Javier
alper
1
Terima kasih @alper. Archive.org memiliki beberapa cuplikan artikel Tips WPC extint di web.archive.org/web/20160822111118/http://www.wpctips.com:80/… . Saya kira saya harus mengubah jawabannya.
Javier
4

Anda dapat dengan mudah melakukan cadangan tambahan dengan mengubah arah waktu. yaitu Anda selalu menyimpan cadangan terbaru sebagai salinan lengkap dan menyimpan file diferensial di masa lalu.

# create the difference step into the past
7z u {base archive.7z} {folder to archive} -mx=9 -u- -up1q1r3x1y1z0w1!{decrement.7z}

# update the Archive to the latest files
7z u {base archive.7z} {folder to archive} -mx=9 -up0q0x2

Arsip dasar selalu berisi versi terbaru dan melalui penerapan "pengurangan" langkah demi langkah Anda dapat membuat ulang Versi yang lebih lama. Dengan sedikit skrip, Anda dapat menerapkan penomoran yang tepat ke file dekremental.

iligid
sumber
Bisakah Anda menjelaskan hal ini? Saya ingin melihat contoh membuat katakan cadangan saat ini, cadangan 1 hari yang lalu, cadangan 2 hari yang lalu. Dan kemudian contoh memulihkan cadangan '2 hari yang lalu'.
Daniel Sokolowski
0

Dalam file batch, dengan perluasan yang diaktifkan yang diperpanjang, Anda perlu mengutip "!" dengan dua ^^ seperti ini

7z u {existing archive.7z} -u- -up0q3r2x2y2z0w2^^!{new differential.7z} {folder or files to archive}

Butuh waktu beberapa saat untuk melihatnya.

Tuntable
sumber