Батник для архивирования файлов и папок. Бэкап 1С баз.


no bakup

Сейчас я расскажу о том, как при помощи bat-файлов можно архивировать файлы и папки как на локальном компьютере, так и в сети организации.

Внимание!!! Для использования данного метода архивирования у Вас на компьютере должна быть установлена программа WINRar.

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

!!!При копировании кавычки надо переписать (поменять)!!!

chcp 1251
«C:\Program Files\WinRAR\WinRAR.exe» a -r -m5 D:\arhiv\papka.rar C:\папка

Теперь коротко о том что тут написано

  • «C:\Program Files\WinRAR\WinRAR.exe» — пусть к программе-архиватору, которая, собственно и будет выполнять всю работу. По умолчанию он такой же как и тут
  • a -r -m5 — параметры архивирования, по порядку значат следующее: добавить файл в архив, учитывать вложенные папки, использовать метод сжатия
  • D:\arhiv\papka.rar — путь где будет сохранен архивный файл и название этого архивного файла
  • C:\папка — путь к папке или файлу, который нужно архивировать
  • chcp 1251 — параметр отвечающий за распознавание русскоязычных символов находящихся в указании пути к файлу.

Вот что бывает без указания параметра chcp 1251

ошибка архиватора

По факту можно создать файл с расширением *.bat, сохранить в нем одну строчку и все будет работать. Но это всего лишь одноразовый и не удобный вариант.


Присвоение архиву даты создания. Автоматическое архивирование батником.


Все что для этого нужно сделать — добавить переменные времени в самом bat-файле. И потом указать эти переменные в создаваемом архиве. Все это выглядит примерно так:

chcp 1251
@echo off
set day=%DATE:~0,2%
set month=%DATE:~3,2%
set year=%DATE:~6,4%

«C:\Program Files\WinRAR\WinRAR.exe» a -r -m5 D:\arhiv\papka_%year%%month%%day%.rar C:\папка

Заметьте, что переменные времени добавляются в том месте, где указывается путь к архивному файлу и его название. Варьировать местами год, месяц и день можете на свое усмотрение.

Примечание: этот образец бат-файла подойдет для автоматического архивирования. То есть, если поместить данный батник в «назначенные задания» и указать промежуток запуска раз в сутки, то у Вас будут создаваться архивы каждый день, храниться в одном месте и у каждого архива будет дата создания. Это подходит для многих задач, в том числе и для бэкапа баз данных 1С.

В этом образце bat-файла есть один недостаток — архивы будут создаваться бесконечно до тех пор, пока у Вас на жестком диске не закончиться место.

papka



Видео пример работы двух первых способов с моими комментариями





Архивирование с заданным количеством бэкапов (архивов)

Теперь, рассмотрим вариант батника для архивирования папок и файлов, который будет делать указанное количество бэкапов (3, 5, 10, 30 — сколько захотите) с их циклической перезаписью. То есть, проще говоря, все будет полностью автоматизировано.

К примеру, Вы захотели, чтобы у Вас всегда был архив за три последних дня.

Для такого метода бэкапа Вам понадобится, своего рода, временное хранение архивного файла. Проще говоря, папка отличная от места хранения основных бэкапов.
Вот как будет выглядеть весь скрипт:

chcp 1251
@echo off
set day=%DATE:~0,2%
set month=%DATE:~3,2%
set year=%DATE:~6,4%
if exist D:\timearh\papka_01*.rar del D:\timearh\papka_01*.rar
«C:\Program Files\WinRAR\WinRAR.exe» a -r -m5 D:\timearh\papka_01_%year%-%month%-%day%.rar C:\папка
if exist D:\arhiv\papka_03*.rar del D:\arhiv\papka_03*.rar
if exist D:\arhiv\papka_02*.rar ren D:\arhiv\papka_02*.rar papka_03.rar
if exist D:\arhiv\papka_01*.rar ren D:\arhiv\papka_01*.rar papka_02.rar
xcopy D:\timearh\papka_01_*.rar D:\arhiv\

В итоге у нас получилось 3 архива в папке, последний из которых с указанием даты создания

data

Как видите, я создал отдельную папку D:\timearh для основного временного архива.

if exist D:\timearh\papka_01*.rar del D:\timearh\papka_01*.rar — команда проверяет нахождение файла во временной папке и удаляет его если он есть, это надо для того, чтобы файлы там не дублировались.

if exist D:\arhiv\papka_03*.rar del D:\arhiv\papka_03*.rar
if exist D:\arhiv\papka_02*.rar ren D:\arhiv\papka_02*.rar papka_03.rar
if exist D:\arhiv\papka_01*.rar ren D:\arhiv\papka_01*.rar papka_02.rar

Эти три команды нужды ля переименовывания основных файлов в сторону увеличения четности и удаления самого последнего файла, в нашем случае третьего. По сути, количеством этих строчек Вы и регулирует общее количество создаваемых архивов. Для увеличения бэкапов достаточно лишь дописать нужное количество строчек и не забыть переименовать порядок.

xcopy D:\timearh\papka_01_*.rar D:\arhiv\ — копирует файл из временной директории D:\timearh в основную папку с бэкапами. Это и есть наш самый свежий архив с указанием даты создания.

Данный вариант идеально подходит для бэкапа 1С баз. Он полностью автоматизирован, можно спокойно хранить месячный (а то и больший) архив баз.


На этом все. Постарался все разложить по полочкам. Если будут вопросы — пишите в комментариях, обязательно отвечу.

Спасибо за внимание 🙂

44 комментария

  • Сергей

    как быть, если хочу архивировать на флешку файлы с 2х компов. Ведь на каждом она может иметь свою букву диска?

    • Необходимо предварительно воткнуть флешку в каждый комп и в принудительном порядке через «управление дисками» назначить флешке необходимую букву, желательно ближе к концу алфавита. В таком случае каждый раз при втыкании этой флешки, будет видна ваша буква у нее.

  • Прохожый

    Спасибо, пригодилось. Как сделать так чтобы архивация отменилась, если при архивации происходят ошибки?

    • На сколько я знаю, автозакрытие сделать нельзя. Но, т.к. вся архивация будет проходить в фоновом режиме, то по идее все само закроется. По крайней мере если возникают ошибки при копировании архива (нехватка места на диске), все исчезает само.

  • Алексей

    Здравствуйте! Сергей, как дописать что бы архивирование происходило каждый час?

  • Алексей

    Голова кругом уже…. Сори, Janik как быть?

    • День добрый ))) Чтобы архивирование происходило каждый час, надо батник запихать в назначенные задания и выставить интервал запуска и все.

  • Здравствуйте! Спасибо за инфу-почти разобралась.Не понятен остался только один момент:вот во временной папке для хранения архивов они буду удаляться и записываться новые каждые три дня,а что же будет с папкой D:\arhiv\? Там архивы будут все-равно накапливаться за все время?

    • День добрый ))) Если вы говорите о последнем примере «Архивирование с заданным количеством бэкапов», то во временной папке будет всегда только 1 файл — самый последний архив. Теперь по паке D:\arhiv\. В ней будет ровно столько бэкапов, сколько строк вы для них укажите. Прочтите еще раз с пункта
      «if exist D:\arhiv\papka_03*.rar del D:\arhiv\papka_03*.rar» и далее. Если останутся вопросы — пишите на электронку (указана в контактах).

  • Андрей

    Можно ли выполнить поиск всех doc и xls и добавить их в 1 общий архив

  • Григорий

    Подскажите можно ли доработать батник, что бы он после архивации, он копировался на сетевой диск или в папку на Ftp. У меня несколько серверов с разными организациями и базами, хочется, что бы все базы бекапились в одну папку.

    • Конечно можно. У меня все копируется на сетевой отдельный бэкапник. Последний пример в статье как раз про Ваш вопрос. Надо просто в нужных местах поменять локальные пути на сетевые и все: а именно «D:\arhiv\» — это место хранение конечного бэкапа

  • Скажите пожалуйста, как сделать так, что бы дата создания архива указывалась на каждом архиве, а не только на последнем?
    Заранее спасибо.

    • Как вариант добавить к каждому названию архива «уникальность». Одним из таких вариантов может стать добавление в название времени создания архива. Команды смотрите тут http://www.cyberforum.ru/cmd-bat/thread702837.html. Только в этом случае будет необходимо убрать команды ren (переименование).

  • Здравствуйте,
    примитивный батник ваш прописал
    chcp 1251
    «C:\Program Files\WinRAR\WinRAR.exe» a -r -m5 D:\arhiv\papka.rar C:\папка
    создал для эксперимента точно такие же папки в тех же разделах, win 7 pro 64 bit, winrar тоже 64 битный стоит
    не срабатывает winrar, в чем может быть проблема?

    • Во-первых, проверьте путь к исполняемуму файлу архиватора, скорей всего, в конце должно быть просто RAR.exe. Во-вторых, если просто копировали, то сотрите ковычки и укажите их снова. Проверяйте, должно все сработать

  • спасибо, проблема была в ковычках)) сразу не обратил внимание. отличный способ делать бекап 1С

  • добрый день.
    спасибо за статью.
    возник вопрос: существует папка С:pst в ней лежат pst файлы. необходимо создать архивы на каждый файл, имя архива должно совпадать с именем файла, а так же присвоить пароль к каждому архиву.
    возможно ли создать подобный bat?

    • Добрый день. Архивация возможна без проблем (см. второй способ). По поводу пароля смотрите в гугле, никогда не озадачивался этим вопросом, поэтому подсказать не смогу.

  • каспер

    Добрый день, опробовал ваш батник, да действительно работает, но есть один нюанс в пути к файлу,
    «C:\Program Files\WinRAR\WinRAR.exe» a -r -m5 D:\arhiv\papka.rar C:\папка — то в этом случае батник работает,
    но у меня базы 1с лежат не напрямую на диске с, а гораздо дальше
    «C:\Program Files\WinRAR\WinRAR.exe» a -r -m5 D:\arhiv\papka.rar C:\папка\папка\папка
    так вот в этом случае батник запускается и тут же прекращает свою работу и ничего дальше не происходит
    как можно решить проблему, базы переносить не хочется а тем более пути заново прописывать , юзеров много

    • В Вашем случае попробуйте в конце поставить еще одну «\» (наклонную). Будет типа «C:\папка\папка\папка\», тогда должно заработать

      • каспер

        Попробоавал , к сожалению ситуация не изменилась, поставил кривую и ничего, архватор запускается и тут же гаснет, результат -нулевой

        • Странно. Если есть желание разобраться, то напишите мне письмо на почту (есть в разделе контакты) и отправьте весь код батника. Попробую помочь

  • Константин

    Все работает, спасибо. Я таким образом архив отправляю на яндекс диск, но возникла проблема. На яндекс диск можно залить файл не больше 10 гб. А бэкап весит 18 гб. Как сделать чтобы архив бился на файлы допустим по 9 гб???

  • Алексей

    У вас кавычки неправильные. Если кто-то не думая скопирует, работать не будет

    • Да, я знаю, спасибо за замечание. Особенности шаблона такие, отображение кавычек только такое. Примечание написано в самом начале статьи.

  • Ответь, пожалуйста, как сделать так, чтобы после архивации удалялся файл с которого сделан архив?

  • Панкин Алексей

    chcp 1251 можно избежать, если указать кодировку OEM 866
    Например в Notepad++ нужно выбрать Encoding/Character sets/Cirillic/OEM 866

  • MelanieDiund

    XRumer 12.0.19 is the BEST

  • Заметил, что не этот батник не копирует скрытые папки и фалы DBF и прочее, как можно сделать чтобы он все копировал, пример моего батника:
    chcp 1251
    @echo off
    set day=%DATE:~0,2%
    set month=%DATE:~3,2%
    set year=%DATE:~6,4%
    «C:\Program Files\WinRAR\RAR.exe» a -r -m5 G:\backup\arch_%year%—%month%—%day%.rar \\192.168.10.1\AIMKK_2017\
    Диск С
    Диск G
    Сеть, где базы 1с лежат \\192.168.10.1\AIMKK_2017\

    • Это для Вас как человека файлы видны или нет, а для системы они все есть. Странно, но должно копироваться все. Я завтра специально проверю этот ньюанс

      • Спасибо Вам за батник. Появились скрытые. Но заметил , что архив 70 метров при оригинальной базе в 1Гб.
        Что-то батник пропускает все же. Может я делаю что-то не так?

        • И появились какие-то файлы с расширением NO_MORE_RANSOM, что это?

          • Не хочу Вас расстраивать, но по-моему Вы словили вирус-шифровальщик. Советую срочно решать вопрос по восстановлению

  • Ок. Не подскажите, как быть с «худым» архивом? 70 метров против гиговой базы?

  • Быть может, это из-за того, что не все пользователи могли выйти из базы 1с и какие-то файлы занятые определенным процессом не архивируются?

    • Для начала стоит извлечь все из архива и сравнить наличие файлов с оригиналом. А потом уже дальше думать

      • Хорошо, подскажите, как можно тогда просто автоматизировать резервное копирование всей папки с базой (не архивирование), чтобы также по датам копировалась? Благодарю

        • Пробуйте использовать сторонний софт типа Acronis, благо программ полно, выбирайте сами

  • Владис

    Пару дней бекапилась база без проблем, но потом стал бекапить не полностью, те файлы, что не бекапятся пишет «Процесс не может получить доступ к файлу, так как этот файл занят другим процессом»
    Ставлю в планировщике задач на 1 час ночи бекап, это время точно уже никто не лазит в 1С
    Как с этим можно побороться?

  • Владис

    Наверное, это потому, что файлы еще открыты в базе, но как сделать так чтобы WINRAR архивировал и открытые файлы, надыбал в инете такие ключи, но че-то боязно их использовать «…..WinRAR.exe» a -m2 -ag -dh -r -y -ep1 -x*.cdx
    Что скажете?

  • Скажите пожалуйста, а можно ли в bat’нике прописать чтобы создавались папки по годам и месяцам в зависимости от даты создания бэкапа!? Чтобы не сортировать потом эти файлы вручную…

Добавить комментарий для Janik Отменить ответ

Ваш e-mail не будет опубликован. Обязательные поля помечены *