Создавалась, как средство сохранения резервной копии букетов, но как то разрослась. Делал для своих нужд, но может кому будет полезна.
Создает копии файлов и папок (если находит их в ресивере) на флешке, в указанной вами папке, в отдельных подпапках:
Спойлер:
- всех файлов букетов - lamedb - cables.xml, terrestrial.xml, satellites.xml, blacklist, bouquets.radio, bouquets.tv, settings - crontab - CCcam.cfg, CCcam.prio - все скрипты запуска найденных эмуляторов (oscam, oscam-ymod, wicardd, cccam) - все исполняемые файлы найденных эмуляторов (oscam, oscam-ymod, wicardd, cccam) - полностью папки: /usr/oscam, /usr/oscam-ymod, /usr/keys, так как я конфиги разных эмуляторов храню в отдельных папках, а не в tuxbox - полностью папку: /etc/epgimport - полностью папку: /etc/astra - исполняемые файлы astra, t2mi_decap, все найденные версии libaio.so и libc.so и скрипт astra-sm - полностью папку /lib/modules с драйверами в том числе - полностью папку /usr/script/cam не помню уже для какого имиджа - сам себя, то есть файл Slot1MBBackup.py, но их может быть до 4-шт соответственно Slot2MBBackup.py, Slot3MBBackup.py, Slot4MBBackup.py - конвертер EventName.py, так как он должен быть правленным, чтобы не было креша по его вине - что то еще по мелочам
Такой себе параноидальный набор, но он позволяет настроить новый имидж очень быстро, не потеряв своих настроек, хотя и вручную.
Все это копируется в указанную вами папку и упаковывается в архив с уникальным именем Backup_хххххххххх.tar.gz, где хххххххххх это время в секундах с начала эпохи. На флешке может находиться не более 39 файлов архивов, если больше, то самый старый затирается, а новый добавляется. Размер архива +/- 10 Мб.
Если вдруг у вас на компьютере установлен и настроен ftp сервер, то утилита сама опросит ip адреса вашей сети с 192.168.1.100 по 192.168.1.120 и если найдет сервер, то отправит туда этот свежий архив с копиями. Поиск ip занимает некоторое время. Поддерживается даже два ftp сервера. Например у меня на windows установлен FilleZilla сервер, а на linux сервер vsftpd Сервера настраиваются согласно их документации, а в утилиту вносятся только два логина, два пароля и два пути к серверу. Если ftp серверов нет, то можно оставить все, как есть.
Порядок работы:
Спойлер:
Копируем файл Slot1MBBackup.py на флешку в /media/hdd/, что делает его не зависимым от установленных имиджей. Присваиваем этому файлу права 755 В строках 17 и 19 прописываем одинаковый путь к папке на флешке, где будут храниться копии, если такой папки нет, она будет создана автоматически. path1 = '/media/hdd/Slot1' path = '/media/hdd/Slot1'
В строках 23, 25, 27 прописываем данные ваших ftp серверов - логины, пароли, пути к серверам: ftp_user_m = ["login_1", "login_2"]
ftp_password_m = ["Pasword_1", "Pasword_2"]
server_m = ["/Server/dir_1/", "/ftp/dir_2/"]
Сохраняем с заменой. Запускаем из телнета командой /media/hdd/Slot1MBBackup.py Таких файлов SlotХMBBackup.py может быть столько, сколько у вас установлено имиджей, должны только отличаться названия, ну и прописанные пути, чтобы не сваливать всё в кучу...
Чтобы автоматизировать весь этот процесс, добавляем расписание запуска в crontab. crontab можно настраивать по разному, я делал так. В файл crontab предпоследней строкой добавил строку: 0 */3 * * * root /media/hdd/Slot1MBBackup.py Теперь файл Slot1MBBackup.py будет запускаться каждые три часа (0-00, 3-00, 6-00, 9-00 и так далее)
Работает в фоне, систему не грузит, нас не отвлекает, а резервные копии создаются без нашего участия по установленному расписанию.
В прицепе три файла, это одна и та же тестовая программка, но скомпилированная под разные архитектуры. Просто должна выводить информацию о CPU, но это не важно, интересует запустится ли на ресиверах с соответствующей архитектурой? Скопировать в любое место, например в /tmp, присвоить права 755 и в терминале дать команду например /tmp/test_arm и глянуть ответ. Может, у кого есть желание протестирует? У меня ресиверы только ARM и все работает, а вот mipsel и sh4 я никак проверить не могу
openpli 12.1 dm800sev2 dm800sev2 login: root Last login: Thu Oct 19 03:14:42 HKT 2023 on pts/0 root@dm800sev2:~# cat /proc/version Linux version 3.2-dm800sev2 (newnigma2@nn2build.newnigma2.to) (gcc version 4.6.4 20120303 (prerelease) (GCC) ) #1 SMP Sat Mar 19 23:20:06 CET 2016 root@dm800sev2:~#
Творчески переработал, переписал на С++, обозвал MyBackup ver. 2.4
В прицепе три исполняемых файла под разные архитектуры и файл конфигурации MyBackup.conf. Файл конфигурации должен находиться только в /etc/, а сама программа может запускаться из любого места с правами 755.
В первом сообщении этой темы подробно расписаны функции программы.
Изменения: - добавлено копирование папки /etc/tuxbox - добавлено копирование папки /media/hdd/cam, куда я перенес все свои эмуляторы, конфиги и скрипты запуска - добавлено копирование папок пользователя - добавлено копирование файлов пользователя - переработал механизм взаимодействия с ftp севером
Запускать можно вручную, а так же по расписанию, используя например crontab. Для работы с ftp севером требуется установка Curl.
Файл конфигурации состоит из трех секций: [folder], [files] и [server]
Спойлер:
В секции [folder] первые две строки должны быть обязательно по образцу - это корень, куда будет производиться копирование, но их можно изменять по желанию, но это должен быть путь к папке на съемном носителе: usb, hdd, чтобы не занимать место в самом ресивере. Ниже можно добавлять любое количество строк с путями к папкам, которые вы хотите, чтобы тоже копировались. Например строку: /usr/lib/enigma2/python/Components - будет копироваться полностью папка Components.
Секция [files] может быть пустой, но в нее можно добавлять пути к файлам, которые вы хотите, чтобы тоже копировались. Например строка: /usr/lib/enigma2/python/Plugins/Extensions/Bitrate/bitrate.pyc - будет копироваться файл bitrate.pyc из плагина Bitrate.
Если вы не пользуетесь ftp сервером, то секцию [server] нужно оставить, как есть. Если пользуетесь, в первой строке правильно укажите IP вашего сервера и название папки, куда будет передаваться файл, во второй и третей строке - логин и пароль сервера соответственно. В четвертой строке можно ставить ...= 0 или ...= 1. Если 1, то программа будет перебирать IP в диапазоне от 192.168.1.100 до 192.168.1.120, чтобы найти рабочий сервер. Если IP сервера не меняется и он верно указан в первой строке этой секции, то нужно поставить значение 0 и перебора не будет.
Важно. Секции между собой разделяются одной пустой строкой и в конце файла тоже одна пустая строка, как в образце.
Работает очень быстро, скорость ограничена в основном скоростью чтения/записи накопителя, ну и перебор IP занимает в основном 3 сек. на адрес, в особых случаях 2 минуты. Если запускается по расписанию, мы этого не заметим, если в ручную все видно визуально в терминале.
Тестировал на нескольких ресиверах с ARM архитектурой процессора, проблем не заметил, если не нарушать правила выше. Другие архитектуры проверить не могу, но скомпилировал.
Исполняемый файл нужно переименовать, названия могут быть:
Спойлер:
1. MyBackup - основные функции, описаны выше.
2. Srvidcreator - если вы переименуете исполняемый файл таким образом и запустите, программа отработает, как одноименная моя утилита и создаст файл oscam.srvid в папке /tmp/, который нужен для oscam-ymod для правильного отображения названий каналов в логе.
3. BISS_Key_Formats_Tool - если вы переименуете исполняемый файл таким образом и запустите, программа отработает, как одноименная моя утилита и создаст в папке /tmp/ файлы: BISS_Key_Formats.txt, _SoftCam.Key и _constant.cw (добавил в этой версии). Долго боролся, но нашел подход для расчета namespace hash в С++, создал для этого свою функцию на основе crc32(), хотя конечно не без помощи интернета, теперь расчет не зависит от версии python, да и сам python в этой программе не используется.
4. Если вы переименуете исполняемый файл в любое другое название и запустите, программа покажет в терминале погоду из сервиса в интернете для места, которое вы укажете в командной строке после пробела, например исполняемый файл находится на /media/hdd, дадим ему любое имя например anyname, запускаем командой: /media/hdd/anyname dublin - получим погоду для славного города Дублина
Ну как то так, может кому будет интересно. Надеюсь, косяков будет не так много, как я себе думаю