Когда с настройками было покончено я сделал резервную копию средствами OpenELEC, но вот что интересно - резервная копия выполняется без завершения работы XBMC, а значит часть файлов копируется в процессе использования.
Узнать список файлов, которые в данный момент используются, можно на самом медиацентре
OpenELEC:~ # lsof | grep /storage 866 /usr/sbin/connmand /storage/.cache/connman/ethernet_b827eb9ace35_cable/data 946 /usr/lib/xbmc/xbmc.bin /storage/.xbmc/temp/xbmc.log 946 /usr/lib/xbmc/xbmc.bin /storage/.xbmc/userdata/Database/Addons15.db 946 /usr/lib/xbmc/xbmc.bin /storage/.xbmc/userdata/Database/Textures13.db 946 /usr/lib/xbmc/xbmc.bin /storage/.xbmc/userdata/Database/TV22.db 946 /usr/lib/xbmc/xbmc.bin /storage/.xbmc/userdata/Database/Epg7.db 946 /usr/lib/xbmc/xbmc.bin /storage/.xbmc/userdata/Database/Addons15.db
Открытые файлы *.db это базы SQLite, которые могут быть в промежуточном состоянии на момент создания резервной копии.
Чтобы избежать копирования открытых файлов можно выключить оболочку XBMC, создать резервную копию и затем включить XBMC обратно.
После изучения системы инициализации в OpenELEC оказалось, что самым простым способом достичь желаемого - выполнить перезагрузку всего медиацентра. В процессе завершения работы системы выполняется скрипт /storage/.config/shutdown.sh, который запускается после выключения XBMC, но до перезагрузки всей системы.
Собственно скрипт
if [ "`date +'%H'`" != "05" ]; then echo "Seems triggered not by cron job, simply exiting" exit 0 fi STAMP=`date +'%Y%m%d%H%M%S'` if [ ! -d /storage/backup ]; then mkdir /storage/backup fi echo "Settings backup..." tar -cf /storage/backup/${STAMP}.tar /storage/.cache /storage/.config /storage/.xbmc if [ "`date +'%u'`" == "7" ]; then echo "Flash backup..." tar -cf /storage/backup/${STAMP}_flash.tar /flash fi echo "Backup finished, syncing..." sync sleep 30s
Скрипт проверяет в котором часу он запущен и если сейчас не 5 часов утра, то создание резервной копии отменяется - скорее всего это перезагрузка по требованию пользователя, а не задания крона. Далее создается TAR-архив, содержащий конфигурацию OpenELEC и XBMC. Также если скрипт запущен в воскресенье, то дополнительно создается резервная копия всей системы (защита от неудачного обновления самого OpenELEC или выхода из строя SD карточки). Перед завершением скрипта выполняется сброс буферов и выжидается 30 секунд (на всякий случай).
Задание крона выглядит так
# crontab -u root -l # Reboot to create semi-offline backup 10 5 * * * /usr/bin/xbmc-send --action="XBMC.Reboot"
Согласно этому заданию в каждый день в 5:10 утра выполняется команда перезагрузки средствами XBMC, что гарантирует корректное завершение работы.
Комментариев нет:
Отправить комментарий