Зростання резервного копіювання з 7zip


17

Я переглянув Google і шукав, але не можу знайти команду, яку утиліта командного рядка 7zip використовує для створення покрокових резервних копій. Так може хтось, будь ласка, поділити команду?

Спасибі

btw Я знайшов це посилання: 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

Це карта від стану файлу до дії. Існує сім можливих станів.
АртемГр

3
Це не додаткове резервне копіювання. Ця команда робить диференційовану резервну копію та створює новий архів із змінами після останньої повної резервної копії. Інкрементальне резервне копіювання відстежує зміни від попереднього додаткового резервного копіювання (розл. Розл.).
стиль

Я думаю, що це явно неправильно, оскільки він просто оновлює archive.7z, що є майже таким же, як просто створення нового архіву, але трохи швидше, оскільки він буде повторно використаний. Відповідь Хав'є нижче, здається, є різною.
Tuntable

Коли архів великий і приріст невеликий, " трохи швидше " є досить значним. Не перепакування всього архіву є одним із пунктів покрокових резервних копій. Крім того, це не диференційоване резервне копіювання: ми оновлюємо основний архів і не зберігаємо різницю в окремому архіві. Якщо вам більше подобаються інші рішення, не соромтеся їх оскаржувати, існує кілька способів зібрати кота.
АртемГр

8

Якщо ви робили резервну резервну копію , вам потрібно було б надати 7-zip зі списком модифікованих (з -i@fileList) файлів , і вам доведеться якось опрацювати такий список. У дзеркалі archive.org видаленого питання " Офлайн-інкремантальне резервне копіювання" через thumbdrive ви можете знайти командний рядок Unix, використовуючи підписи md5 для створення fileList.

Операція оновлення 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
Дякую за відповідь Хав'єр і ласкаво просимо до Супер Користувача. Тут існує політика узагальнення посилань на випадок, якщо вони зникають - чи можете ви пояснити, як команда досягає додаткового резервного копіювання? (особливо up0q3r2x2y2z0w2частина!) Спасибі :-)
bertieb

1
@bertieb дякую за пораду. Я сподіваюся, що це зараз зрозуміліше.
Хав'єр

1
@DanielSokolowski Не впевнений, чи відповідає це на ваше запитання. Якщо ви зробили додаткове резервне копіювання (A + b + c + d), вам доведеться витягнути з кожного архіву в порядку, який ви створили. Якщо ви зробили диференціальне резервне копіювання (A + (b + c + d)). Це 2 архіви, які ви повинні витягти. Було б непогано, щоб останній архів містив інформацію про попередні архіви та порядок вилучення, тому видобуток можна проводити за допомогою однієї команди. Але я не знаю такої особливості.
Хав'єр

1
стаття, якою ви поділитесь, не відкривається @Javier
alper

1
Дякую @alper. На Archive.org є деякий знімок статті, що витікає з WPC Tips, на веб- сайті web.archive.org/web/20160822111118/http://www.wpctips.com:80/… . Я думаю, мені доведеться внести зміни до відповіді.
Хав'єр

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

У пакетному файлі, з увімкненням розширення, потрібно навести "!" з двома ^^ так

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

Зайняв мене час, щоб побачити це.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.