Advertisement
Guest User

Untitled

a guest
Apr 16th, 2014
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.47 KB | None | 0 0
  1. // команда для архивации
  2. const std::string backup = "tar -cvf";
  3. // команда для восстановления данных из архива
  4. // ls -t отсортирует все файлы по времени создания (новые раньше)
  5. // grep backup выделит из этого списка все бэкапы
  6. // head -1 возьмет первый элемент получившегося списка
  7. const std::string unbackup = "tar -xvf `ls -t | grep backup | head -1`";
  8. // директория, которую необходимо архивировать
  9. const std::string source_dir = "dir";
  10. // директория, в которой хранятся бэкапы и архивируемая директория
  11. const std::string backup_dir = "/home/si1en7ium/code/labs/linux/dummydaemon/backup";
  12. const std::string cd = "cd";
  13. const std::string rm = "rm -rf";
  14.  
  15. // функция, получающая имя бэкапа в соответствии с текущим временем
  16. std::string get_backup_name()
  17. {
  18.     std::ostringstream oss;
  19.     std::string result = "backup_";
  20.     const time_t rawtime = time(0);
  21.     const struct tm * timeinfo = localtime(&rawtime);
  22.     oss << timeinfo->tm_year + 1900
  23.         << "."
  24.         << std::setw(2) << std::setfill('0') << timeinfo->tm_mon + 1
  25.         << "."
  26.         << std::setw(2) << std::setfill('0') << timeinfo->tm_mday
  27.         << "_"
  28.         << std::setw(2) << std::setfill('0') << timeinfo->tm_hour
  29.         << "_"
  30.         << std::setw(2) << std::setfill('0') << timeinfo->tm_min
  31.         << "_"
  32.         << std::setw(2) << std::setfill('0') << timeinfo->tm_sec
  33.         << ".tar";
  34.     result += oss.str();
  35.     return result;
  36. }
  37.  
  38. // создать резервную копию
  39. void pack_backup()
  40. {
  41.     // сменить директорию на рабочую
  42.     system((cd + backup_dir).c_str());
  43.     // создать новый бэкап с помощью команды архивации
  44.     system((backup + " \"" + get_backup_name() + "\" " + source_dir).c_str());
  45. }
  46.  
  47.  
  48. // разархивировать последний бэкап
  49. void unpack_backup()
  50. {
  51.     // сменить директорию на рабочую
  52.     system((cd + backup_dir).c_str());
  53.     // удалить старую директорию
  54.     system((rm + source_dir).c_str());
  55.     // восстановить директорию из архива
  56.     system((unbackup).c_str());
  57. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement