Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // команда для архивации
- const std::string backup = "tar -cvf";
- // команда для восстановления данных из архива
- // ls -t отсортирует все файлы по времени создания (новые раньше)
- // grep backup выделит из этого списка все бэкапы
- // head -1 возьмет первый элемент получившегося списка
- const std::string unbackup = "tar -xvf `ls -t | grep backup | head -1`";
- // директория, которую необходимо архивировать
- const std::string source_dir = "dir";
- // директория, в которой хранятся бэкапы и архивируемая директория
- const std::string backup_dir = "/home/si1en7ium/code/labs/linux/dummydaemon/backup";
- const std::string cd = "cd";
- const std::string rm = "rm -rf";
- // функция, получающая имя бэкапа в соответствии с текущим временем
- std::string get_backup_name()
- {
- std::ostringstream oss;
- std::string result = "backup_";
- const time_t rawtime = time(0);
- const struct tm * timeinfo = localtime(&rawtime);
- oss << timeinfo->tm_year + 1900
- << "."
- << std::setw(2) << std::setfill('0') << timeinfo->tm_mon + 1
- << "."
- << std::setw(2) << std::setfill('0') << timeinfo->tm_mday
- << "_"
- << std::setw(2) << std::setfill('0') << timeinfo->tm_hour
- << "_"
- << std::setw(2) << std::setfill('0') << timeinfo->tm_min
- << "_"
- << std::setw(2) << std::setfill('0') << timeinfo->tm_sec
- << ".tar";
- result += oss.str();
- return result;
- }
- // создать резервную копию
- void pack_backup()
- {
- // сменить директорию на рабочую
- system((cd + backup_dir).c_str());
- // создать новый бэкап с помощью команды архивации
- system((backup + " \"" + get_backup_name() + "\" " + source_dir).c_str());
- }
- // разархивировать последний бэкап
- void unpack_backup()
- {
- // сменить директорию на рабочую
- system((cd + backup_dir).c_str());
- // удалить старую директорию
- system((rm + source_dir).c_str());
- // восстановить директорию из архива
- system((unbackup).c_str());
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement