7zipを使用した増分バックアップ


17

グーグルで検索してみましたが、7zipコマンドラインユーティリティが増分バックアップの作成に使用するコマンドが見つかりません。だから誰かがコマンドを共有できますか?

ありがとう

:ところで私は、このリンク見つけhttp://wmug.co.uk/wmug/b/sean/archive/2009/03/20/powershell-amp-7zip-incremental-backup-solution.aspxを。ただし、増分バックアップとはいえ、差分バックアップ用のようです。

回答:


11

シンプルである必要があります。これを使用して、アーカイブを作成し、増分的に更新します。

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

このページは、更新オプションのリファレンスを提供します。

それらは次のように翻訳されます。

  • p0 -「ファイルはアーカイブに存在するが、ワイルドカードと一致しない」場合、ファイルをアーカイブから削除します。
  • q3-「ファイルはアーカイブ内に存在するがディスク上には存在しない」場合は、アーカイブからファイルを削除し、抽出時にファイルシステムから削除します
  • r2 -「ファイルはアーカイブに存在せず、ディスクに存在する」場合、ファイルをアーカイブにパックします。
  • x2 -「アーカイブ内のファイルがディスク上のファイルよりも新しい」場合、古いファイルをアーカイブにパックします。
  • y2 -「アーカイブ内のファイルがディスク上のファイルよりも古い」場合、新しいファイルをアーカイブにパックします。
  • z1 -「アーカイブ内のファイルがディスク上のファイルと同じ」場合は、ファイルのパックバージョンを再利用します。
  • w2 -ファイルサイズが異なる場合は、変更したファイルをアーカイブにパックします。

こんにちは、これらの多くのオプションはどういう意味ですか?
Zhianc

ファイルの状態からアクションへのマップです。可能な状態は7つあります。
-ArtemGr

3
増分バックアップではありません。このコマンドは、差分バックアップを作成し、最後の完全バックアップ以降の変更を含む新しいアーカイブを作成します。増分バックアップは、前回の増分バックアップ(diffの差分)以降の変更を追跡します。
STIL

これは単純に間違っていると思います。archive.7zを更新するだけで、新しいアーカイブを作成するのとほとんど同じですが、再利用するので少し速くなります。以下のJavierの答えは差があるようです。
調整可能

アーカイブが大きく、増分が小さい場合、「ビットクイック」は非常に重要です。アーカイブ全体を再パックしないことは、増分バックアップのポイントの1つです。また、これは差分バックアップではありません。メインアーカイブを更新し、差分を別のアーカイブに保存しません。あなたが他のソリューションをもっと好きなら、それらを自由に支持してください、猫の皮をむく複数の方法があります。
ArtemGr

8

増分バックアップを行う場合、7-zipに変更されたファイルのリスト(を使用-i@fileList)を提供する必要があり、そのようなリストを何らかの方法で作成する必要があります。削除された質問のarchive.orgミラーで、thumbdriveを使用したオフライン増分バックアップで、md5署名を使用してfileListを作成するUnixコマンドラインを見つけることができます。

7-zip更新操作により、ベース/プライマリアーカイブ以降に発生した違い(削除されたファイルを含む)でセカンダリアーカイブを作成できます。これは、差分バックアップと適切に命名されています(質問自体に記載されているとおり)。

WPCTipsの「7-zipによる差分バックアップ」(アーカイブ)でこのトピックに関する優れた記事を見つけました。GUIプログラム(Toucan)を使用するか、コマンドラインに次のレシピを使用することをお勧めします。

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

これは、7zr u -up0q3r2x2y2z1w2 {archive}.7z {path}ArtemGr が提案したものとは少し異なります。

  • -u- メインアーカイブを変更してはならないことを示します
  • "-up0q3r2x2y2z0w2!{differential.7z}"ターゲット差分アーカイブ、および各条件/状態の各ファイルに対して実行するアクションを指定します:ファイルシステムで新規または変更されたファイルを追加し、7zipアーカイブのみにあるファイルを削除し、残りを無視します。
    「!」bash引用されない限り、文字は傍受されます。

あなたがその不可解なの詳細に興味がある場合に備えて 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. 

2
Javierの回答に感謝し、Super Userへようこそ。リンクが消えた場合にリンクを要約するポリシーがここにあります-コマンドが増分バックアップをどのように達成するか説明できますか?(特にup0q3r2x2y2z0w2一部!)ありがとう:
bertieb

1
@bertiebアドバイスありがとうございます。私はそれが今より明確であることを願っています。
ハビエル

1
@DanielSokolowskiこれがあなたの質問に答えるかどうかわかりません。増分バックアップ(A + b + c + d)を行った場合は、作成した順に各アーカイブから抽出する必要があります。差分バックアップを行った場合(A +(b + c + d))。解凍する必要がある2つのアーカイブです。最後のアーカイブに以前のアーカイブと抽出の順序に関する情報が含まれていれば、1つのコマンドで抽出を行うことができます。しかし、私はそのような機能を認識していません。
ハビエル

1
記事あなたシェアはオープン@Javierない
アルパース

1
ありがとう@alper。Archive.orgには、web.archive.org / web / 20160822111118 / http://www.wpctips.com:80 /…のextint WPC Tips記事のスナップショットがあります。応答を修正する必要があると思います。
ハビエル

4

時間の方向を変更することで、簡単に増分バックアップを実行できます。つまり、常に最新のバックアップを完全なコピーとして保持し、差分ファイルを過去に保持します。

# 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

ベースアーカイブには常に最新バージョンが含まれており、「デクリメント」を段階的に適用することで、古いバージョンを再作成できます。少しスクリプトを使用すると、デクリメンタルファイルに正しい番号を適用できます。


これについて詳しく説明していただけますか?1日前のバックアップ、2日前のバックアップなど、現在のバックアップを作成する例をご覧ください。次に、「2日前」のバックアップを復元する例。
ダニエルソコ

0

enabledelayedexpansionを含むバッチファイルでは、「!」を引用符で囲む必要があります。こんなふうに^^

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

それを見るためにしばらく時間がかかりました。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.