Использование 7zip для бэкапа данных

    Для наступления полного и тотального счастья в плане бэкапов информации на рабочем сервере решил отказаться от Acronis True Image в пользу обычной архивации данных с помощью 7-Zip.

    Для выполнения поставленной задачи естественно использовал консольную версию архиватора.


    После непродолжительного курения манов комманда приняла следующий вид:

    7za.exe a -tzip -ssw -mx7 -r0 -x@exclusions.txt full_path_for_the_archive working_dir

    Поподробней об использованных ключах:

    -tzip формат архива установлен в zip, без этого ключа умолчальный формат 7z;

    -ssw принудительная упаковка файлов, которые в данный момент открыты для записи (мало ли кто-то засиделся на работе и что-то там правит);

    -mx7 высокая степень сжатия (7), можно поставить и 5 (нормальное сжатие), тогда процесс пойдет побыстрее;

    -r0 (это ноль, а не буква О) исключения, которые будут прописаны дальше обрабатываются только в рабочем каталоге;

    -x@exclusions.txt это собственно говоря файл со списком исключений, которые не будем архивировать. Каждая строка файла — новое исключение. Можно использовать маски типа *.ext и т.п. Если исключение не много, то можно обойтись и без файла, в таком случае ключ примет следующий вид: -x!*.ext;

    full_path_for_the_archive это соответственно путь и имя нового архива;

    working_dir это папка, которая подлежит упаковке.

    Для пущего удобства можно использовать в имени архива %date%.

    В связи с тем, что архивировать нужно разные папки в разные архивы, объемами 10-15 гигов, то резонно использовать последовательность команд, дабы не создавать кучу правил в планировщике и не думать сколько времени займет весь этот процесс. Соответственно для этих целей использую объединение команд с помощью &&. Если использовать &, то все команды будут выполняться одновременно, что меня никак не устраивает, с && — последовательно при удачном завершении предыдущей команды.

    Помимо всего прочего желательно иметь логи, чтоб быть в курсе, а не случилось ли чего. Это можно легко реализовать с помощью инструкции '>>', которая сохраняет вывод в консоль в текстовый файл. Однако проблема в том, что 7zip вываливает в консоль кучу информации, в том числе и об архивации каждого нового файла. Очевидно, что на объемах в несколько тысяч файлов вся эта инфа в логах нужна как мертвому припарок. Соответственно требуется исключить все ненужные строки, оставив те, где есть информация о названии создаваемого архива, результат архивации и информацию об ошибках, коли таковые появятся.

    Тут на помощь приходит команда FINDSTR. В моем случае она принимает следующий вид:

    findstr /P /I /V «Compressing 7-Zip»

    Сначала пара слов об использованных ключах:

    /P пропускает строки, содержащие непечатные символы;

    /I на всякий случай игнорирую регистр букв;

    /V " " непосредственно перечень слов для поиска в строках и последующего исключения этих строк.

    В итоге на выходе этой команды имеем 3 строки:

    Scanning

    Creating archive archive_name

    Everything is Ok

    А потом закатываю все в текстовый файл, для последующего изучения:

    findstr /P /I /V «Compressing 7-Zip» >> log_file

    Теперь дело за малым. Нужно зафутболить все три блока в одну последовательность команд:

    7za.exe a -tzip -ssw -mx7 -r0 -x@exclusions.txt full_path_for_the_archive working_dir | findstr /P /I /V «Compressing 7-Zip» >> log_file.%date%.txt
    Поделиться публикацией
    Реклама помогает поддерживать и развивать наши сервисы

    Подробнее
    Реклама
    Комментарии 65
    • +5
      .zip бывает больше 2гб размером?
      • 0
        Arma2 Demo — 2.5Gb zip.
        Все работает :)
        Вы не путаете с compressed folders в XP? Этот ограничение оттуда.
        • 0
          тут вы ошибаетесь, архивация свыше 2 гигов замечательно работает. намедни заткнул в zip HDrip фильмака на 4 гига — никаких проблем
          • 0
            встроенный в венду архиватор потом распаковать это не может
            • НЛО прилетело и опубликовало эту надпись здесь
          • 0
            Спасибо, что собрали всё в одном месте.
            • +3
              инкрементные архивы?
              • +2
                Я так понимаю дело происходит в Винде… там нету стандартного потока ошибок? Не пойму к чему использовать такую конструкцию с findstr. Можно (в линуксе точно) написать просто 2>log_file.%date%.txt. 2 это стандартный поток ошибок.
                И почему именно zip? Он уже устаревший формат. Можно было как раз 7z использовать… ну или что-нибудь ещё надёжнее.
                • 0
                  Чтобы не генерировать большие логи. Ибо список заархивированных файлов человеку нужен до одного места.
                  • 0
                    А человеку нужны какие-нибудь логи, а не просто пустые файлы.
                  • +1
                    stderr есть, конструкция 2>log_file.%date%.txt вполне работоспособна, правда перед использованием с конкретными программами нужно убедиться, что они пишут ошибки именно в stderr, а не в stdout (со времен MS-DOS еще повелось, что многие stderr не используют)

                    zip, пожалуй, самый универсальный, та же винда держит его без всяких дополнительных утилит, в отличии от 7z или, скажем, tar.gz, а поскольку дело имеем с бакапами, то лучше предусмотреть самый худший вариант — голая система или вообще лайв-сиди какой-нить, имхо

                    • +2
                      Универсальность это хорошо, но zip имеет много проблем более или менее мелких. Для меня важная проблема — битая кодировка в именах файлов при открытии в линуксе zip'ов сделанных в win. И наоборот.

                      Лучше использовать тот же 7z и хранить инсталлер рядом (а не «в»! :) ) с бэкапом.
                      • 0
                        Общего идеала вообще нет, для кого-то битая кодировка при работе под разными семействами ОС проблема, для кого-то нет (хотя я лично не сталкивался при «одновременной» работе с архивами в Ubuntu 7+ и Win7), а для кого-то проблема ставить архиватор на виндоус-лайв-сиди :).

                        А вообще говоря, выбор формата (архиватора и т. п.) зависит прежде всего от планируемых сценариев восстановления, недопустимо, пожалуй, только одно — не иметь их (причем отлаженных на пустой машине), то есть делать бакапы не думая (и не проверяя на практике), как из них восстанавливаться будешь.
                    • 0
                      2>log_file — конкретно с 7зипом не работает. Видимо он пишет ошибки в обычный поток. (во всяком случае моя косольная версия 7-Zip (A) 4.65)
                      • +1
                        Console version now prints all messages to stdout by default,
                        and if -so switch is specified, 7-Zip prints messages to stderr.
                        www.7-zip.org/history.txt
                      • +3
                        Могу добавить, что если перед вами стоит задача упаковать большой объем, и главное для вас время упаковки, а не качество (размер конечного архива), то для более чем двухядерных систем лучше использовать bzip2 формат. К примеру:

                        7z a -t7z archive_file_name input_file_name -m0=bzip2 -mmt=8

                        В данном случае сжатие будет вестись в 8-и параллельных потоках (-mmt=8). Родной для 7z формат сжатия LZMA поддерживает к сожалению только 2-а потока. Остальные форматы сжатия максимум один поток.

                        Я таким способом на сервере с 8-ью ядрами сжимаю 9гб до 2,3гб за 23 минуты.
                        • 0
                          Помню что *.7z не делает инкрементный бекап без параметра --ms=off в конце строки, вот. Помню лоханулся когда заархивировал 40гб проектов а потом обновить не смог. Пришлось заново все сжимать.
                          • 0
                            7zip в принципе не делает инкрементных архивов, а двойной минус означает конец обработки параметров
                            • +1
                              Смешно…
                              RTFM про команду «u» и опцию "-u" с именем нового архива не совпадающим со старым.
                              • 0
                                так реализуется дифференциальный архив, а не инкрементальный ;-)
                          • 0
                            Я бы еще добавил параметр -y, чтобы задача не «зависала» ожидая ответа с консоли Y(es) or N(o), например, если целевой файл существует

                            • 0
                              инкрементные архивы я не использую, т.к. время создания бэкапа не критично. вечером ночью в конторе все равно никого нет. ежедневно создается полный бэкап всех файлов, а потом vbs скрипт удаляет бэкапы старше 7 дней.

                              про stderr не знал, нужно будет посмотреть, вываливает ли туда что-то 7zip, а архивация идет в zip, а не какой-то другой формат, именно из-за его универсальности, как правильно подметил VolCh.

                              вообще, когда я все это тестировал у себя, то при наличии одноименного архива, 7zip не особо напрягался и сравнивал содержимое архива с содержимом исходной папки, но согласен, что лучше подстраховаться и добавить парметр -y
                              • 0
                                для того чтобы удалить старые архивы достаточно команды forfiles
                                • 0
                                  я так понимаю, что утилита forfiles не входит в стандартную поставку win xp или 2k3 и ее нужно доставлять из resource kit?
                                  согласен, что команда удобная, но работать это соответственно будет не везде, в отличии от того же vbs
                                  • 0
                                    да, действительно, уже запамятовал, что она поставляется отдельно O:-)
                                • 0
                                  >ежедневно создается полный бэкап всех файлов, а потом vbs скрипт удаляет бэкапы старше 7 дней.

                                  vbs — лишнее. На Винде есть планировщик заданий и команда at для выполнения периодических действий и/или запланированных заданий.
                                  • 0
                                    как я уже писал, пока крутится Acronis, а там соответственно можно назначить сценарий для запуска до или после задания, поэтому используется vbs.
                                • 0
                                  а как обстоят дела со скоростью многогигабайтного архивирования?
                                  • –1
                                    а вот это выяснится в понедельник, когда я это раскатаю на серваке :)
                                    • +1
                                      Т.е. метод, описанный в статье, вы ни разу не использовали? Ну, счастливого вам понедельника, учитывая первый комментарий к этой статье.
                                  • +2
                                    такое ощущение, что тут не системные администраторы, которые не используют принцип «чувак, делай проще», а вместо подходящих инструментов пытаются подручными пинцетом и кувалдой сварить борщ, и ещё и огрызаются, когда им на это намекают.
                                    • –1
                                      сложносочинённая сложноподчинённая многозапятная фраза, чувак!
                                      надо быть прощще — использовать 7zip — иногда один из путей
                                      • +1
                                        это не совсем связано с 7ципом, а более к findstr и vbs, что упоминались выше.

                                        ну и да, я из той страны, где простыми предложениями почти не говорят/пишут.
                                    • 0
                                      использую такой способ на серверке уже два года, 7zip паролит архив и я его отсылаю на почтовый ящик (жмейл).
                                      • 0
                                        Кстати, встроенный в винду бекап не так уж и плох
                                        • 0
                                          мне показалось, что он уж очень неповоротлив. кроме того, не совсем удобно реализовано восстановление данных из бэкапа, особенно если надо вытащить какой-то конкретный файл/папку, а не весь бэкап целиком. но это мое ИМХО
                                        • +1
                                          А что со свободным местом всё настолько плохо, что приходится архивировать? Виндовый robocopy сихронизирует ~100Гб с usb диском минуты за 3-5 и лог выдает вполне понятный.
                                          • +4
                                            Звиняйте за размер но…
                                            Кому лень разбираться — ссылка на архив с готовыми скриптами настроенными на проекты на DELPHI. Имею сказать, что с RAR'ом это всё можно сделат неизмеримо круче. Но RAR малость платный.

                                            Структура каталогов:
                                            Делаем в корне проекта папочку !Bakup
                                            В ней создаём папки:
                                            7zip — кладём туда 7zip.
                                            Archives — тут будут хранится архивы и инкрементальные архивы.
                                            Current — тут хранятся текущие образы архива проекта (можно просто переписать на флэшку).

                                            Создаём в !Backup файлы:
                                            exclude.lst и excludeback.lst — с масками файлов и директорий исключаемых из инкрементальных и обычных архивов. Маски из этих файлов объединяются.
                                            excludecur.lst — файлы, исключаемые из текущих архивов.
                                            excludefull.lst — файлы, исключаемые из полных архивов.
                                            archivename.txt — префикс имени архива.

                                            Дальше идут скрипты:
                                            Backup.bat — создаёт самодостаточный архив в !Backup\Archives с текущей датой в имени. Файлы сортируются по папкам по месяцам (все архивы одного месяца хранятся в одной папаке).
                                            Текст скрипта:

                                            rem @echo OFF
                                            set BDir=!Backup
                                            md Current >nul
                                            md Archives >nul
                                            cd…
                                            del %BDir%\Current\_excludebak.tmp >nul

                                            copy /Y /A %BDir%\excludeback.lst + %BDir%\exclude.lst %BDir%\Current\_excludebak.tmp >nul

                                            @for /f «tokens=*» %%a in (%BDir%\ArchiveName.txt) do (
                                            SET Name=%%a
                                            goto ok
                                            )
                                            :ok

                                            set Dtmp=%Date%%Time%
                                            set DD=%Dtmp:~0,2%
                                            set DM=%Dtmp:~3,2%
                                            set DY=%Dtmp:~6,4%
                                            set TH=%Dtmp:~10,2%
                                            set TM=%Dtmp:~13,2%
                                            set TS=%Dtmp:~16,1%

                                            SET AName1=%BDir%\Archives\%Name%_%DY%-%DM%\%Name%_%DY%-%DM%-%DD%.zip
                                            SET AName2=%BDir%\Archives\%Name%_%DY%-%DM%\%Name%_%DY%-%DM%-%DD%_%TH%%TM%%TS%.zip
                                            if exist "%AName1%" goto FileExist

                                            :FileAbsent
                                            %BDir%\7zip\7za.exe a "%AName1%" -tzip -mx9 -mmt=on -mtc=on -ssw -scsWIN -ir!* -xr!"%BDir%\Current\*" -xr!"%BDir%\Full\*" -xr!"%BDir%\Archives\*" -xr@%BDir%\Current\_excludebak.tmp
                                            goto DoExit

                                            :FileExist
                                            %BDir%\7zip\7za.exe a "%AName2%" -tzip -mx9 -mmt=on -mtc=on -ssw -scsWIN -ir!* -xr!"%BDir%\Current\*" -xr!"%BDir%\Full\*" -xr!"%BDir%\Archives\*" -xr@%BDir%\Current\_excludebak.tmp
                                            goto DoExit

                                            :DoExit
                                            del %BDir%\Current\_excludebak.tmp >nul
                                            cd %BDir%

                                            Скрипт Current.bat — создаёт самораспаковывающийся самодостаточный архив текущего образа проекта в !Backup\Current в имя файла включается текущая дата. Предыдущие образы удаляются. Не архивирует историю архивов (папки !Backup\Current и !Backup\Archives). Предназначен для хранения и переноски текущего состояние проекта (очень удобно чтобы взять работу домой, например).
                                            Текст скрипта:

                                            rem @echo OFF
                                            set BDir=!Backup
                                            md Current >nul
                                            cd…

                                            @for /f «tokens=*» %%a in (%BDir%\ArchiveName.txt) do (
                                            SET Name=%%a
                                            goto ok
                                            )
                                            :ok

                                            set Dtmp=%Date%%Time%
                                            set DD=%Dtmp:~0,2%
                                            set DM=%Dtmp:~3,2%
                                            set DY=%Dtmp:~6,4%
                                            set TH=%Dtmp:~10,2%
                                            set TM=%Dtmp:~13,2%
                                            set TS=%Dtmp:~16,1%

                                            set AName1=%BDir%\Current\Cur_%Name%_%DY%-%DM%-%DD%.exe

                                            :CreateNew
                                            del Current\Cur*.exe
                                            %BDir%\7zip\7za.exe a "%AName1%" -t7z -mx9 -sfx7zcon.sfx -ms30f10m -mmt=on -mtc=on -ms=off -ssw -scsWIN -ir!* -x!"%BDir%\Current\*" -x!"%BDir%\Full\*" -x!"%BDir%\Archives\*" -xr@%BDir%\excludecur.lst
                                            goto DoExit

                                            :DoExit
                                            cd %BDir%

                                            Скрипт Delta.bat — создаёт древовидную структуру самораспаковывающихся инкрементальных архивов в !Backup\Archives. Архивы создаются помесячно. Т.е. для каждого месяца создаётся базовый архив и инкрементальные архивы. Для восстановления нужно распаковать сначала базовый архив за нужный месяц, а затем инкрементальный (_diff) за нужную дату месяца. Архивы также сортируются по папкам по месяцам.
                                            Текст скрипта:

                                            @echo OFF
                                            set BDir=!Backup
                                            md Current >nul
                                            cd…
                                            del %BDir%\Current\_excludebak.tmp >nul

                                            copy /Y /A %BDir%\excludeback.lst + %BDir%\exclude.lst %BDir%\Current\_excludebak.tmp >nul

                                            @for /f «tokens=*» %%a in (%BDir%\ArchiveName.txt) do (
                                            SET Name=%%a
                                            goto ok
                                            )
                                            :ok

                                            set Dtmp=%Date%%Time%
                                            set DD=%Dtmp:~0,2%
                                            set DM=%Dtmp:~3,2%
                                            set DY=%Dtmp:~6,4%
                                            set TH=%Dtmp:~10,2%
                                            set TM=%Dtmp:~13,2%
                                            set TS=%Dtmp:~16,1%

                                            SET NameM=%Name%_%DY%-%DM%
                                            SET NameD=%Name%_%DY%-%DM%-%DD%_diff

                                            SET ANameM=%BDir%\Archives\%NameM%\d_%NameM%.exe
                                            SET AName1=%BDir%\Archives\%NameM%\d_%NameD%.exe
                                            SET AName2=%BDir%\Archives\%NameM%\d_%NameD%_%TH%%TM%%TS%.exe

                                            if exist "%ANameM%" goto MonthExist

                                            :MonthAbsent
                                            %BDir%\7zip\7za.exe a "%ANameM%" -t7z -mx9 -sfx7zcon.sfx -mmt=on -mtc=on -ms30f10m -ssw -scsWIN -ir!* -x!"%BDir%\Archives\*" -x!"%BDir%\Full\*" -x!"%BDir%\Current\*" -xr@%BDir%\Current\_excludebak.tmp

                                            :MonthExist
                                            if exist "%AName1%" goto FileExist

                                            :FileAbsent
                                            %BDir%\7zip\7za.exe u "%ANameM%" -u- -up0q3r2x2y2z0w2!"%AName1%" -t7z -mx9 -sfx7zcon.sfx -mmt=on -mtc=on -ms30f10m -ssw -scsWIN -ir!* -x!"%BDir%\Archives\*" -x!"%BDir%\Full\*" -x!"%BDir%\Current\*" -xr@%BDir%\Current\_excludebak.tmp
                                            goto DoExit

                                            :FileExist
                                            %BDir%\7zip\7za.exe u "%ANameM%" -u- -up0q3r2x2y2z0w2!"%AName2%" -t7z -mx9 -sfx7zcon.sfx -mmt=on -mtc=on -ms30f10m -ssw -scsWIN -ir!* -x!"%BDir%\Archives\*" -x!"%BDir%\Full\*" -x!"%BDir%\Current\*" -xr@%BDir%\Current\_excludebak.tmp
                                            goto DoExit

                                            :DoExit
                                            del %BDir%\Current\_excludebak.tmp >nul
                                            cd %BDir%

                                            Скрипт Full.bat — создаёт полую копию проекта вместе со всей историей архивов в папке !Backup\Current. Предыдущая копия удаляется. Используется для переноса проекта вместе со всей историей и полного резервного копирования.
                                            Текст скрипта:

                                            @echo OFF
                                            set BDir=!Backup
                                            md Current >nul
                                            cd…

                                            @for /f «tokens=*» %%a in (%BDir%\ArchiveName.txt) do (
                                            SET Name=%%a
                                            goto ok
                                            )
                                            :ok

                                            set Dtmp=%Date%%Time%
                                            set DD=%Dtmp:~0,2%
                                            set DM=%Dtmp:~3,2%
                                            set DY=%Dtmp:~6,4%
                                            set TH=%Dtmp:~10,2%
                                            set TM=%Dtmp:~13,2%
                                            set TS=%Dtmp:~16,1%

                                            SET AName1=%BDir%\Current\Full_%Name%_%DY%-%DM%-%DD%.exe

                                            if exist «AName1» goto FileExist
                                            del Current\Full*.exe

                                            :FileExist
                                            %BDir%\7zip\7za.exe a "%AName1%" -up0q0r2x2y2z1w2 -t7z -mx9 -sfx7zcon.sfx -mmt=on -mtc=on -ms=off -ssw -scsWIN -ir!* -x!"%BDir%\Current\*" -x!"%BDir%\Full\*" -xr@%BDir%\excludefull.lst

                                            cd %BDir%

                                            И снова ссылка на архив со всем этим добром.
                                            • +3
                                              Ясен перец — парсер — лох. Ничерта не отформатировалось и ссылка не видна.
                                              Вот ссылка на архив со скриптами, настроенными на проекты на Delphi. Править нужно файлы ArchiveName.txt и exclude*.lst
                                              Что есть что изложено в моём комментарии выше.
                                              a href=«narod.ru/disk/14222019000/!Backup.zip.html
                                              Кому пригодится — плюсаните, люди добрые, а то ни комментировать ни посты создавать не можу :(
                                            • +1
                                              Любопытна задача. Но мне кажется, что Акронис все же в другом деле хорош (когда целиком партишн бэкапить надо, с системой или какими-то архи-важными данными). А что касается 7-zip, то его использую косвенно, в замечательном бесплатном продукте Cobian backup (он автоматизирует процесс сжатия резервных копий), который помимо минималистичного, но достаточно удобно GUI обладает и крутым функционалом. Например, без дифференциальных бэкапов мои данные бы занимали уйму места. А так, собираю n-ое количество дифференциальных бэкапов и раз в пару месяцев или больше скидываю их на блю-рэй диски. Если можно через консоль научить 7-zip делать диф. копии — научите ;-)
                                              • 0
                                                Вы ничего не путаете? Именно дифференциальные? Не инкрементальные часом? Потом что дифференциальному пара копий это точно лишнее — надо один полный и один дифференциальный.
                                                • 0
                                                  Не совсем так. На один полный можно бесконечное число диффов создавать. Я эмпирически «вычислил» оптимальное для себя число. Задаю в скедьюлере задание создавать полные архивы каждые 10-20 дифференциальных (к каждому соответствующему полному) и всех делов. Почему именно диффы? Мне показалось удобней именно с таким типом бэкапов работать, а не с инкрементными. Хотя упомянутая программка справляется отлично и с ними (Cobian backup)
                                                  • 0
                                                    «скедьюлер» — это сильно =)
                                                    инкрементные бекапы удобнее дифференциальных хотя бю тем, что для определения всех данных в бекапе Х надо разглядывать все бекапы до него. И уж тем более не надо вечно хранить первый.
                                                • 0
                                                  да Cobian backup замечательная программка, сам ей долго пользовался, пока не перешел на nnCron + 7zip. Но всем родственникам досих пор ставлю Cobian.
                                                • 0
                                                  А что за сервер? Что архивируется? Делается ли ASR бекап? Как вы планируете быстро развернуть сервер взамен расстрелянного старого?

                                                  У меня есть некоторый негатив к статье, и вот почему — мне попадались пара фирм, где бекап был сделан подобным весьма простым способом. Начавшись с простого zip, мысль у администратора плавно перетекла к складированию копий в централизованном виде. Потом автор задействовал кучу скриптов, которые архивируют, копируют, подтирают старые копии.

                                                  Так вот — пришел я и поставил Bacula, потому что мне отнюдь не кажется вот это творчество простым, мне кажется, что это стабильный источник проблем — каждое простое действие, которое встроено в нормальную систему здесь надо реализовать, встроить в существующий велосипедный парк, поиметь проблем с ошибками.

                                                  Это я к чему — господа админы, делайте правильно, чтобы за вами не расхлебывать потом последствия ваших «простых» схем, в которых вы что то там не дореализовали и делали руками, да и чтобы добавить новый сервер надо поменять вот тут, там и вот тут подопнуть.
                                                  • 0
                                                    контора у нас небольшая, поэтому на данный момент имеется один сервер типа «все в одном». весь вышеописанный сценарий предназначается исключительно для бэкапа документов, графики и pdf, коих очень много. поэтому, на мой взгляд, вариант с архивами подходит здесь на все 100%.

                                                    ввиду того, что пока на серве используется Acronis, бэкапы системного раздела создаются именно им
                                                    • 0
                                                      Понятно, тогда схема имеет право на жизнь, просто важно, очень важно, понимать уровень решения. Я не про вас лично, я всегда рассматриваю свои комментарии как уточнения, о которых стоит задуматься.
                                                    • 0
                                                      Каков план быстрого восстановления при использовании Bacula на Win-серверах?

                                                      В настоящий момент для Win2003 серверов мы практикуем образы Acronisом и System state backup.
                                                      Но акронис уж больно дорогой. Размышляем: поискать ПО для создания образов платное, но подешевле(как пример www.paragon.ru/corporate/db-server/ ) или смотреть Free/Open source.

                                                      P.S. используем Amanda для Linux серверов.
                                                      • 0
                                                        Я для windows серверов использую ntbackup — ASR ежемесячно, System state еженедельно. Bacula для файлов.

                                                        С Bacula вот только проблемы с резервными копиями БД и Exchange (вот честно — в большинстве случаев от него только проблемы в небольших фирмах).
                                                      • 0
                                                        кстати да, очень интересуют варианты быстрого и грамотного восстановления системы, желательно freeware, потому как acronis временами как-то нездорово обезьянит
                                                      • 0
                                                        Может быть кто-нибудь поможет Жану Вальжану?
                                                        Перебрал несколько бэкап-программ (Cobian и проч.), не могу найти нужную.
                                                        Хотелось бы, чтобы:
                                                        1) архиватор был ZIP, ARJ или 7zip.
                                                        2) Чтобы каждый файл запаковывался отдельно и структура каталогов сохранялась.
                                                        3) Чтобы программа была бесплатной.

                                                        Проблема именно с запаковывание файлов по-отдельности. Кстати, если 7-zip поддерживает такое «отдельное» архивирование, то какой должна быть строка.
                                                        • 0
                                                          я бы предложил такой вариант, но виндузятники явно не одобрят, хотя нужно всего-то установить cygwin
                                                          find. -type f|xargs gzip -9
                                                          • 0
                                                            Кстати, если 7-zip поддерживает такое «отдельное» архивирование, то какой должна быть строка.
                                                            Если не ошибаюсь, это опция «Размер блока: По размеру файла» из графической оболочки. Думаю, опцию командной строки будет не сложно.
                                                            • 0
                                                              А что значит «каждый файл по отдельности»? Или я не совсем правильно понимаю ваш запрос? А если сохранять структуру каталогов и потом запаковывать все это в один архив? Чем такая схема не нравится? :)
                                                              Cobian как раз замечательно справляется с архивацией (7-zip, zip). Он бесплатен. Надежен (уже много лет его юзаю как на серверах, так и на рабочих станциях).
                                                              PS. А если в каталоге тысячи файлов? Это сколько ж надо cpu-времени, чтоб каждый файл из такого каталога запаковывать по отдельности? :-))
                                                              • 0
                                                                задачи разные бывают. Может у него сотня фаилов по 100Гб каждый?

                                                                Можно теоретически батник написать, который рекурсивно каталоги обходит, но это конечно велосипед на граблях :)
                                                            • 0
                                                              автору на заметку:
                                                              1. лог файл тоже можно сжать, если он будут весить больше нескольких десятков мегабайт. и оптимально естественно никак не фильтровать лог, а сохранять целиком.
                                                              2. если использовать более современные алгоритмы сжатия, то можно получить многократный выигрыш в размере по сравнение с zip, ибо это один из наименее эффективных форматов сжатия.
                                                              3. использовать готовые системы для бэкапа это все же очень неплохой вариант.
                                                              • +2
                                                                Настоящий мужик, молодец! Мужик маны прочитал — всем рассказал!
                                                                • 0
                                                                  А можно как нибудь сделать, чтобы при бекапе не отображался процесс архивирования? Т.е. я запустил скрипт, он пыхтит и мне ничего на экран не выходит. Кстати, а почему у вас идет запуск 7za.exe? Где вы такой файл нашли? В инсталяшке же нет такого, мне приходится запускать 7zG.exe
                                                                  • 0
                                                                    На их сайте в разделе Downloads можно скачать 7-Zip Command Line Version
                                                                  • 0
                                                                    зачем же рубанком забивать гвозди?
                                                                    надо использовать инструменты для тех задач для которых они предназначены. Для бекапов надо использовать rsync и надстройки над ним, например duplicity
                                                                    • 0
                                                                      делаю инкрементные бекапы с помощью winrar:
                                                                      rar.exe a -agYYYYMMDDHHMM -ac -ao \\server\share\ D:\documents
                                                                      где: agYYYYMMDDHHMM — прибавлять к имени архива текущие дату/время
                                                                      -AC — снять атрибут «архивный»
                                                                      -AO — добавить файлы с установленным атрибутом «архивный»
                                                                      именно так, а не архивация «за последние» n-дней (т.к. скрипт архивации по сотне причин может и не запуститься) — в архив попадают файлы, измененные ТОЛЬКО с момента последней архивации.

                                                                      очень удобно анализировать: а в какой же именно день Леночка накосячила в файле общий.xls (можно откатить на любой день, причем БЕЗ установки всяких там акронисов (для любителей предполагать самые экстремальные ситуации, когда ВСЕ компы в офисе «НЕ ГРУЗЯЦЦО» — winrar идет даже на загрузочном WinXP PE)

                                                                      Но winrar хоть и относительно недорогой, но в кучу мест покупать надоест, поэтому перехожу на 7zip
                                                                      1. Как бы это реализовать на 7zip — у него таких ключей нет, да и «общая папка» может в один прекрасный день оказаться на samba-сервере под убунтой…
                                                                      • 0
                                                                        rsync (кстати не в курсе есть ли под винду?)
                                                                      • 0
                                                                        По итогам использования: 182 ГБ данных были упакованы по архивам общей емкостью 66,5 ГБ за 3,5 часа
                                                                        • 0
                                                                          Для тех, кому приходится архивировать сотни гигабайт
                                                                          Пробовал использовать WinRar для бэкапа общего сетевого диска (RAID10) — порядка 400 ГБ. Получался архив около 300 ГБ, при попытке открыть его WinRar сдулся с ошибкой «недостаточно системных ресурсов». Причем, на разных серваках. Видимо, неоптимальная работа с памятью. Степень сжатия была и 1, и 0.
                                                                          Попробовал 7zip — работает без проблем. Для файловой помойки в Windows этот архиватор однозначно рулит. Исходный архив открывался очень быстро и без проблем. Вот пример простого батника, который, на мой взгляд, оптимально решает данную задачу:
                                                                          "C:\Program Files\7-Zip\7z.exe" u -ssw -mx0 -mmt2 -ms=off -r e:\m_backup.7z @"c:\m_listbackup.txt" >> c:\m_backup_%date%.log
                                                                          Тип архива 7zip определяет по расширению результирующего файла бэкапа.
                                                                          u — поскольку архивный бит 7zip не понимает, пришлось делать просто обновление основного архива.
                                                                          -ssw — как и написано выше, открываем открытые другими программами файлы
                                                                          -mx0 — поскольку на диске куча pdf, jpg и т.д., то сжатие дает только 4% экономии. нерациональное соотношение место_на_диске/процессорное_время.
                                                                          -mmt2 — использовать два потока. думаю, пригодится при обновлении архива.
                                                                          -ms=off — по дефолту создаются solid-архивы. отключаем ибо они работают медленнее. возможно, для mx0 — некритично, но для mx1 и т.д. — оптимальнее.
                                                                          -r — рекурсивно обрабатывать поддиректории.
                                                                          e:\m_backup.7z — результирующий файл архива
                                                                          @«c:\m_listbackup.txt» — файл в UTF8 с папками, которые следует архивить.
                                                                          >> c:\m_backup_%date%.log — выводим результаты в лог с датой.
                                                                          К сожалению, сохранять права доступа к файлам 7zip тоже не умеет.
                                                                          Подчеркиваю, данные настройки оптимальны для достаточно больших объемов. Когда важно, чтобы просто с бэкапом можно было работать быстро и просто работать — извлекать отдельные файлы, лазить по папкам. Имхо — это основной плюс такой «кустарной» архивации.
                                                                          • 0
                                                                            проблема супер архивов это их размер, никаких ресурсов на них не хватит, потому или архив надо разбивать на части или использовать что то вроде CopyMik — который жмёт и сохраняет каждый файл отдельно (кстати, при этом, может ещё и шифровать).

                                                                            Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.