evg
В некотором проекте нарисовалась необходимость резервного копирования базы данных.
Нарисовалась, путем уничтожение кем-то или чем-то части данных :)

Хотелось сделать малой кровью.
Реализована идея использования создания архивной копии базы. Делалось на C++Builder 2010.
В качестве архиватора выбран 7-zip (Оф. сайт)
На сайте можно найти версию для командной строки.
Использованы ключи:
  • a - добавить файлы в архив
  • -ssw - для добавления файлов уже использующихся (база данных открыта и используется :))

Для запуска архиватора вызовем функцию ShellExecute Упаковываем базу в архив base с добавлением дня, месяца, года.

В обработчике кнопки написал:

UnicodeString base_path; // путь с именем базы данных
UnicodeString arc_path = "7za.exe"; // путь к архиватору 

void __fastcall TForm1::BitBtn_Click(TObject *Sender)
{ UnicodeString b_p, opt;

	b_p = ExtractFilePath(base_path); // получим путь к базе
	opt = "a -ssw "+ b_p + "Backup\\base" + Date().FormatString("dd_mm_yyyy") + " " + base_path + "";

	int err = (int)ShellExecute( NULL, "open", arc_path.t_str(), opt.t_str(), "", SW_HIDE);

}


И в общем всё! Дёшево и сердито!

Коментарии

NazGull

Привет, evg! Я в свое время тоже столкнулся с такой проблемой, как создание резервной копии базы данных. Но решил проблему без кодинга. Написал обычный скрипт в bat-файле и в качестве архиватора выбрал rar от Евгения Рошала. Добавил в cron событие по понедельникам, средам и пятницам на запуск скрипта в 21:00, когда к базам нет обращения со стороны пользователей.

Базы, кстати, 1С: Предприятие были.

----------------------------
Верютин Алексей.

NazGull

З.Ы. Сделай ссылку на главную страницу, с телефона не удобно по страницам переходить! ;-)

evg

Привет ;)
Ок... сделаю как-нить