Скрипт (bash) автоматической ежедневной выгрузки баз Postgres на ftp-сервер + Скрипт восстановления

15.01.20

База данных - Архивирование (backup)

Скрипт автоматически выгружает базы Postgres и выкладывает на ftp-сервер. Сохраняет базы по дням недели, что позволяет экономить место на диске. Добавлен скрипт для восстановления базы из архива.

Файлы

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование Скачано Купить файл
Скрипт (bash) автоматической ежедневной выгрузки баз Postgres на ftp-сервер. + Скрипт восстановления
.rar 3,00Kb
19 2 500 руб. Купить
Только скрипт восстановления.
.sh 1,45Kb
5 2 500 руб. Купить

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой

Вы можете заказать платную доработку или адаптацию этой разработки под вашу конфигурацию на «Бирже заказов».

  • 0% комиссии — оплата напрямую исполнителю;
  • Исполнители любого масштаба — от отдельных специалистов до команд под проект;
  • Прямой обмен контактами между заказчиком и исполнителем;
  • Безопасная сделка — при необходимости;
  • Рейтинги, кейсы и прозрачная система откликов.

Всем привет. Может кому пригодиться bash-скрипт для автоматической выгрузки баз postgres по расписанию.

Архив содержит несколько файлов:

  • access.setting (настройки доступа к ресурсам)
  • backup.log (файл лога)
  • bases.list (список баз)
  • pgsql-backup.sh (скрипт выгрузки)
  • pgsql-backup-onlyday.sh (скрипт выгрузки)
  • +pgsql-restore.sh (скрипт восстановления)

Итак:

access.setting  содержит настройки доступа к Postgres, ftp, а так же адреса серверов, подробное описание есть в файле.

bases.list Список баз, выгружаемых скриптом. Каждая база в новой строке. Если базу выгружать не нужно - закомментируйте символом "#" или удалите строку. Важно чтобы последняя строчка оставалась пустой или закомментированной.

backup.log сюда сохраняется информация о выгрузке баз или возникающих ошибках

pgsql-backup.sh собственно сам скрипт.

Поместите содержимое архива в /home/basebackup или в любой другой каталог, но в таком случае вам необходимо поменять значение переменной PathToDir  на новый путь. 

Скрипт делает дамп базы, затем подключается к ftp-серверу и выгружает полученный дамп в папку указанную в настройках.

Скрипт выгружает базы по дням недели: пн, вт, ср и т.д. Соответственно бэкап базы храниться 7 дней, база выгруженная в понедельник будет перезаписана в следующий понедельник, это позволяет экономить место на диске.

Вторая часть скрипта делает выгрузку на ftp-сервер в первый день месяца в формате дата.namebase и эти бэкапы перезаписаны не будут.

В архиве есть файл pgsql-backup-onlyday.sh который выгружает ежедневно базы в формате дата.namebase, эти бэкапы перезаписываться не будут, но в таком случае вам необходимо самому следить за наличием свободного места на диске.

Скрипт можно запустить вручную или по расписанию с помощью cron.

Чтобы скрипт запускался автоматически выполните команду crontab -e, и в открывшемся файле добавьте строку:

0 0 * * * /home/basebackup/pgsql-backup.sh >>/home/basebackup/backup.log 2>&1

Сохраните файл и все готово.

Cron будет запускать скрипт ежедневно в 00:00.(если нужно другое время почитайте параметры настройки cron)

Если вы меняли расположение файлов то укажите путь к файлам вместо выделенного красным.

P.S.: Скрипт не обязательно запускать на сервере с postgres, можно, в принципе, на любом компе(я проверял на виртуалке с linux mint), но, в этом случае, на комп необходимо доустановить пакет "postgresql-client", можно командой "sudo apt-get install postgresql-client", но в таком случае будет ругаться на несовместимость версий, лучше устанавливать "postgresql-client" из deb пакета postgres с сайта 1с.

UPD.

В архив добавил файл pgsql-restore.sh

позволяет восстановить базу из созданных архивов.

Итак:

Первое: из комментариев про бинарный режим:

Второе: Восстанавливает, специально проверил, и на centos (у меня на ней крутится postgres), и на ubuntu server 16.04 и на Linux Mint. Используйте скрипт из архива.

Третье: раз два см это неподъемная сумма для "спецов" из комментариев, пусть будет 1 см.

Четвертое: по поводу строки "date...." если задать через переменную для удобочитаемости, тогда в лог будет писать дата/время одно и тоже, когда была инициализирована переменная, а мне надо было чтобы время было на каждую операцию текущее, для оценки времени работы.

Пятое: из комментариев "у многих клиенты будут глубоко за NAT", зачем запускать такие вещи на клиентах за NAT не совсем понятно. Лучше всего запускайте скрипт cron`ом на самой машние где крутится Postgres.

Ну и на конец: Работа скрипта по восстановлению:

Запустите скрипт. По тем же настройкам (из файла access.setting), что описаны выше, произойдет подключение к ftp и выведется список файлов. Введите имя файла из которого следует восстановить базу.

Затем скрипт спросит создать новую базу или загрузить в старую (введите соответственно "new" или "old").

Если выбрали "old" - появится список баз на сервере.

Введите имя базы в которую необходимо залить бэкап.

Готово.

UPD2. 

Благодарю за подсказку насчет "Акела промахнулся", поэтому добавил еще одно подтверждение пользователем загрузки базы.

Также указал явное включение пассивного и бинарного режимов.

Вступайте в нашу телеграмм-группу Инфостарт

bash скрипт postgres ftp dump бэкап cron

См. также

Архивирование (backup) Инструменты администратора БД 1С:Предприятие 8 1C:Бухгалтерия 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Платные (руб)

Данная разработка позволит решить вопрос с резервным копированием Ваших баз в автоматическом режиме, расположенных на сервере 1С. Система умеет ставить блокировки на вход, блокировать фоновые задания, принудительно отключать сеансы пользователей. И все это система делает в автоматически при создании бэкапа (или через команду). Выгрузка происходит в родной формат 1С - .dt. Так же система умеет архивировать данные выгрузки с установкой пароля. Умеет менять расширение файла zip или dt на любое указанное вами, что позволит сохранить выгрузки от шифровальщика. Может удалять старые копии выгрузок, оставляя указанное количество резервных копий, начиная с самой поздней. Только для WINDOWS! Версия 1.4 от 28.05.2026

7320 руб.

06.11.2012    80504    635    45    

94

Информационная безопасность Архивирование (backup) Системный администратор Разработчик 1С 8.3 Бесплатно (free)

Утром базы не открылись: ночью хакеры зашифровали серверы, базы 1С, почту, кассы, мобильные приложения и бэкапы в сети. Критичные базы подняли из копий на отключённых дисках и потеряли около 10 часов данных. Рассказываю, как прошли первые сутки, что увидел только человек, что мы закрыли после атаки и какие двери в самой базе 1С программист может проверить у себя уже сегодня.

10.11.2026    16049    nedomolkov.ivan    67    

20

Архивирование (backup) Обновление 1С Системный администратор Разработчик 1С 8.3 Бесплатно (free)

Платформа 8.3.17, MS SQL Server: обновление конфигурации падает через 15 секунд на этапе обновления предопределённых данных, и конфигуратор при каждом входе предлагает только повторить. Проверьте у себя, когда сделана последняя полная копия базы: у нас её не было почти месяц. Разбор по минутам: что не помогло (перезапуск агента сервера 1С, перезагрузка, пакетный /UpdateDBCfg, три совета со стороны) и почему. Как ibcmd достал .dt из базы, которая не открывается, и как новую базу подставили под старым именем в кластере 1С через rac, не трогая пользователей. Простой 57 минут, потерь данных нет. Отдельно ошибки ИИ-агента Claude, который работал на сервере, и порядок действий на случай, если это случилось у вас.

03.11.2026    712    nedomolkov.ivan    13    

5

Архивирование (backup) Инструменты администратора БД Системный администратор Разработчик 1С 8.3 1С:Управление торговлей 11 1С:Библиотека стандартных подсистем Абонемент ($m)

Полностью автоматизированная внешняя обработка для администрирования 1С: блокировка/разблокировка ИБ, массовое завершение сеансов, резервное копирование и восстановление из .dt, выгрузка/загрузка конфигурации (.cf), пакетная работа с расширениями (.cfe) и дополнительными обработками – всё через удобную форму без ручных запусков конфигуратора и консоли кластера

1 стартмани

21.01.2026    6569    66    war41k    0    

18

Архивирование (backup) Групповая разработка (Git, хранилище) Системный администратор Разработчик Бесплатно (free)

Как дать возможность каждому разработчику 1С вести разработку, тестирование и оптимизацию на собственной полноразмерной копии базы и при этом не тратить миллиарды рублей и тысячи часов на развертывание тестового окружения, а так же экономить дисковое пространство? Расскажем о том, как с помощью инструмента Database Lab получать полноразмерные копии базы 1C на СУБД PostgreSQL за считанные секунды (даже в случае использования многотерабайтных баз).

15.12.2025    14266    nasonkin    19    

31

Архивирование (backup) Учет документов Бухгалтер 1С:Предприятие 8 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Платные (руб)

В текущих версиях 1С пока нет функции, позволяющей автоматически отмечать возврат оригиналов документов с помощью сканера штрих-кодов. Многие контрагенты часто сталкиваются с проблемой утери оригиналов УПД или их невозврата. В ответ на эти запросы было разработано расширение, которое упрощает контроль за возвратом оригиналов документов и помогает лучше организовать их хранение.

12200 руб.

19.02.2025    2965    3    0    

3

Архивирование (backup) Системный администратор 1С 8.3 Бесплатно (free)

Предлагаю Вашему вниманию 3 скрипта на bash (sh) для архивирования (backup) типовых конфигураций на Linux средствами 1С и Postgres. Перед запуском корректно заполните раздел "Параметры" в соответствии с Вашими настройками.

20.01.2025    6009    Prelude    5    

12

Архивирование (backup) 1С 8.3 1С:Библиотека стандартных подсистем Абонемент ($m)

Резервные копии базы 1С без завершения сеансов: .dt, файл базы, PostgreSQL, MS SQL, своя команда. Расписание, профили, ротация, ZIP, FTP, журнал и письмо об ошибке. Платформа 8.3+ (кроме 8.2), любая конфигурация с БСП. Подключение за 5 минут.

5000 руб.

27.08.2024    4173    1    6    

2
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. starik-2005 3309 16.01.20 13:33 Сейчас в теме
Как-то (в детстве) писал статейку со скриптом - где-то тут: https://infostart.ru/public/1051601/

Вдруг кому интересно, что там за слова после "DAY=...", а двух стартманей нет... )))
Isonic; iulyus; oldcopy; BigB; lmnlmn; +5 – Ответить
2. oldcopy 177 17.01.20 02:13 Сейчас в теме
Как-то измельчал народ, везде денег хотят или стартманей. А я, как дурачок, уже 10 лет веду блог, где бесплатно разжевываю от и до, да и здесь тоже бесплатно публикуюсь... Видимо что-то я пропустил в этой жизни.
5. starik-2005 3309 17.01.20 12:31 Сейчас в теме
(2)
Как-то измельчал народ, везде денег хотят или стартманей.
Вам, ИТ-директорам, не понять обычных 1С-негов.
3. Mallok 90 17.01.20 07:36 Сейчас в теме
Как вы заколебали тут умничать, ведете блог, пишите статьи...так и пишите и ведите, с хрена ли вы тут себя рекламируете таких умных???? Я выкладываю ГОТОВОЕ решение, а не статью из разряда "как нарисовать сову". Дорого 2sm?, вот интересно, а сколько бы ты, такой красивый, в реале взял бы с компании, обратившейся к тебе настроить бэкап???
4. starik-2005 3309 17.01.20 12:28 Сейчас в теме
(3)
а сколько бы ты, такой красивый, в реале взял бы с компании, обратившейся к тебе настроить бэкап???
Так это не царское дело - пусть плебеи занимаются. Ну и не раскрыта тема восстановления, которая раскрыта в ссылке в (1), а без восстановления зачем бэкап вообще нужен?
6. oldcopy 177 18.01.20 18:24 Сейчас в теме
(3) О как бомбануло, не идет гешефт? Бывает...

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

Вполне можно было бы расписать ваше "ноу-хау" в виде статьи, точно также выложив скрипты за стартмани, я думаю, что многие бы скачали, чисто для экономии времени.
7. starik-2005 3309 20.01.20 11:02 Сейчас в теме
(6) лучше вообще статью - за 50 голосов дают 30 стартманей, за 100 - еще 20. Зато сразу. Хотя у меня есть обработка просмотра структуры СУБД из одной строки кода - ее уже 35 раз скачали за 1 см, но я там честно говорю, что одна строка кода всего и если не жалко - качайте.
8. oldcopy 177 20.01.20 12:03 Сейчас в теме
Решил я все таки посмотреть "готовое" решение и стал третьим, расставшимся с двумя стартманями. И сразу вопрос к автору: вы восстанавливать свои архивы пробовали? Если нет, то попробуйте, возможно вас ждут чудесные открытия. Потому что архивы следует передавать в бинарном режиме, переключения в который я не увидел.

Ну и работа с FTP в активном режиме тоже очень сомнительное решение, у многих клиенты будут глубоко за NAT (а то и не за одним) и работать данный скрипт у них не будет.

Читабельность тоже оставляет желать лучшего, можно же было $(date +%Y/%m/%d_%H:%M:%S) вынести в переменную, а не писать через строку.

В общем и целом на 2 стартмани не тянет и на "готовое" тоже. Как шаблон для доработки - сойдет.
9. oldcopy 177 21.01.20 08:28 Сейчас в теме
Первое: из комментариев про бинарный режим:


Это вам повезло, что FTP-сервер оказался "умным", определил что вы ему передаете и сам включил бинарный режим. Но не у всех такое "везение", поэтому бинарный режим при передаче архивов надо включать явно.

из комментариев "у многих клиенты будут глубоко за NAT", зачем запускать такие вещи на клиентах за NAT не совсем понятно


Уже на этом можно бы было и закончить. Глубоко на NAT может стоять именно ваш сервер, тот самый на котором Postgres и где будет крутиться данный скрипт. А FTP-сервер будет где-то в этих самых интернетах. В активном режиме такая связка работать не будет. В пассивном - будет, причем откуда угодно.

Затем скрипт спросит создать новую базу или загрузить в старую (введите соответственно "new" или "old").

Если выбрали "old" - появится список баз на сервере.

Введите имя базы в которую необходимо залить бэкап.

Готово.


А потом высянится, что "Акела промахнулся". При заливке в существующую базу лучше делать не

DROP DATABASE
CREATE DATABASE

а

ALTER DATABASE имя RENAME TO новое_имя

Чтобы оставалась живая копия. Она карман не тянет, если что - всегда можно удалить руками.
Для отправки сообщения требуется регистрация/авторизация