Creality K1C после обновления прошивки — автоматическая очистка Timelapse — 27 августа 2026 г. в 13:23:46.081
Creality K1C после обновления прошивки — автоматическая очистка Timelapse Продолжаю серию по настройке K1C. Даже если штатный Creality Timelapse отключён, Moonraker Timelapse всё равно сохраняет видео во внутреннюю память принтера. Проблема простая: если ничего не контролировать, накопитель со временем можно забить полностью. Поэтому я добавил автоматическую очистку старых таймлапсов. 4. Автоочистка Timelapse при заполнении памяти Логика такая: * при заполнении /usr/data до 80% запускается очистка; * удаляются самые старые файлы; * очистка продолжается, пока использование не опустится до 75%; * проверка выполняется раз в час. Сначала создаём директорию для скриптов: mkdir -p /usr/data/scripts Создаём cleanup-скрипт: cat > /usr/data/scripts/timelapse_cleanup.sh <<'EOF' #!/bin/sh HIGH=80 LOW=75 DIR1="/usr/data/printer_data/timelapse" DIR2="/usr/data/creality/userdata/delay_image/video" usage_percent() { df -P /usr/data | awk 'NR==2 {gsub("%","",$5); print $5}' } USED=$(usage_percent) [ -z "$USED" ] && exit 1 [ "$USED" -lt "$HIGH" ] && exit 0 echo "Disk usage ${USED}% - starting timelapse cleanup" while [ "$USED" -gt "$LOW" ]; do OLDEST=$( find "$DIR1" "$DIR2" -type f 2>/dev/null \ | while read FILE; do MTIME=$(stat -c %Y "$FILE" 2>/dev/null) [ -n "$MTIME" ] && echo "$MTIME $FILE" done \ | sort -n \ | head -n 1 \ | cut -d' ' -f2- ) if [ -z "$OLDEST" ]; then echo "No timelapse files left to delete" exit 0 fi echo "Deleting: $OLDEST" rm -f "$OLDEST" USED=$(usage_percent) done echo "Cleanup finished. Disk usage ${USED}%" EOF chmod +x /usr/data/scripts/timelapse_cleanup.sh Теперь добавляем cron-задачу. Создаём отдельную директорию: mkdir -p /usr/data/cron Добавляем запуск раз в час: cat > /usr/data/cron/root <<'EOF' 0 * * * * /usr/data/scripts/timelapse_cleanup.sh >> /usr/data/scripts/timelapse_cleanup.log 2>&1 EOF chmod 600 /usr/data/cron/root Дальше — автозапуск crond после загрузки принтера: cat > /etc/init.d/S98timelapse_cron <<'EOF' #!/bin/sh CROND=/usr/sbin/crond CRONDIR=/usr/data/cron LOG=/usr/data/scripts/crond.log case "$1" in start) if pidof crond >/dev/null 2>&1; then exit 0 fi echo "Starting timelapse cleanup cron..." "$CROND" -b -c "$CRONDIR" -L "$LOG" ;; stop) echo "Stopping cron..." killall crond 2>/dev/null ;; restart) "$0" stop sleep 1 "$0" start ;; *) echo "Usage: $0 {start|stop|restart}" exit 1 ;; esac EOF chmod +x /etc/init.d/S98timelapse_cron Первый запуск: /usr/sbin/crond -b -c /usr/data/cron -L /usr/data/scripts/crond.log Проверяем: ps | grep '[c]rond' Должен быть один процесс `crond`. Само заполнение диска можно проверить так: df -h /usr/data В итоге таймлапсы можно хранить без постоянного ручного контроля: пока места достаточно — ничего не происходит. Как только диск доходит до 80%, система сама удаляет самые старые файлы и освобождает запас. Для K1C с ограниченной внутренней памятью — одна из самых полезных мелких доработок. 📱 P3D_Service

