DTGaraGe | Автомобили, Офроуд, Заваряване, Linux, AI

Регистрирайте безплатен акаунт днес, за да станете член! След като влезете, ще можете да участвате в този сайт, като добавяте свои собствени теми и публикации, както и да се свързвате с други членове чрез вашата лична пощенска кутия!

debian Debian 13 Trixie Workstation Optimization - как превърнах един стар Xeon в безмилостна Linux машина

Debian 13 Trixie Workstation Optimization - как превърнах един стар Xeon в безмилостна Linux машина


Debian 13 Trixie Workstation Optimization.png


Не всеки компютър остарява. Някои просто чакат правилната ръка, за да им върне инстинкта.



⚙️ Debian 13 Trixie | Xeon E5-1650 v3 | 62 GB ECC RAM | RX 580 | NVMe | RAM Disk | RAID1



Въведение - защо тази тема не е просто "още една настройка на Linux"


Повечето хора си мислят, че производителността започва и свършва с това да купиш по-нов процесор, повече RAM и по-лъскав диск. После идва реалността - машината уж е мощна, а се държи като разсеян чиновник в петък следобед.

Истината е друга.

Една истинска Linux workstation система не се ражда от хардуер. Тя се ражда от архитектура. От начина, по който разпределяш дисковете. От това къде пращаш временните файлове. От това как караш RAM-а да работи за теб, вместо само да стои като цифра в Neofetch. От това кои услуги режеш без жал и кои параметри настройваш така, че системата да спре да се държи "универсално" и да започне да се държи лично.

Точно така е изградена тази машина.

Тя не е направена да впечатлява с RGB и маркетингови думи. Направена е да работи бързо, тежко и чисто - с минимален излишен I/O, ниска латентност, агресивно използване на RAM, отделени роли между системен диск, работен диск и backup, плюс настройки, които не са копирани от случаен блог, а са поставени с ясна логика.



Хардуерът - не млад, но с характер и мускул


КомпонентКонфигурация
ПроцесорIntel Xeon E5-1650 v3 - 6 ядра / 12 нишки / 3.50 GHz / Haswell-EP
Оперативна памет64 GB DDR4 ECC
Видео картаAMD Radeon RX 580 8 GB - amdgpu open-source драйвер
Системен дискNVMe ADATA SX8200PNP 512 GB - монтиран на /
Работен / медиен дискSamsung SSD 860 PRO 512 GB - монтиран на /ai
Backup масив2 x Seagate ST1000DM010 1 TB - RAID1 на /raid
RAM диск25 GB tmpfs на /mnt/nexus
Системен tmp32 GB tmpfs на /tmp
Swap30 GB върху NVMe - почти неизползван заради swappiness=1

Това не е машина за "показване".
Това е машина за хора, които знаят какво искат от Linux и не търпят мудност.


Философията зад конфигурацията - не повече мощ, а повече контрол


Най-силното в този build не е конкретен компонент.
Най-силното е, че всичко работи в една посока:

  • NVMe за системата и бърз отклик
  • отделен SSD за работни и медийни файлове
  • RAID1 за резерв и сигурност на данните
  • RAM диск за временни операции
  • tmpfs за системния temp
  • нисък натиск към swap
  • агресивно пазене на cache в RAM
  • махнати излишни услуги
  • CPU, който не се "успива", когато ти трябва реакция

Това вече не е "обикновен Debian desktop".
Това е workstation със замисъл.


Дисковата архитектура - там, където много системи се провалят без дори да го осъзнават


Много хора имат бърз диск. Малко хора имат добра дискова логика.

При тази система ролите са ясно разпределени:

Точка на монтиранеУстройствоПараметриРоля
/NVMenoatime, commit=60Операционна система и бърза системна реакция
/aiSamsung SSDnoatime, commit=60, data=writebackСнимки, видео, музика, тежки работни файлове
/raidRAID1noatime, commit=60, data=writebackРезервно копие и архив
/mnt/nexustmpfssize=25GRAM диск за временни файлове
/tmptmpfssize=32GСистемни временни операции в RAM

Това разделение е ключово.
Системата не се опитва да прави всичко навсякъде.
Всеки диск има задача. Всеки mount point има смисъл. И точно затова машината се държи стегнато, а не хаотично.


RAM диск и tmpfs - когато паметта спира да бъде украса и започва да бъде оръжие


Една от най-силните идеи в тази конфигурация е преместването на временните файлове в RAM.

  • TMPDIR=/mnt/nexus
  • Krita swap директорията също сочи към /mnt/nexus
  • /tmp е отделен tmpfs с 32 GB

Това означава нещо много просто, но много важно:

временните операции не търкат SSD-то без нужда

И тук човек усеща истинската разлика:
  • по-малко дребен и дразнещ диск I/O
  • по-малко износване на SSD
  • по-бързи временни операции
  • по-гладко поведение при по-тежки приложения
  • по-чисто общо усещане при работа

Много конфигурации имат много RAM.
Малко конфигурации я използват умно.

Тази я използва.


Kernel tuning - моментът, в който Linux престава да бъде "generic"


Истинската сила на Debian и Linux изобщо е, че не те държи заключен в универсални настройки.
Ако знаеш какво правиш, можеш да направиш машината да се държи по твоя логика, не по тази на масовия потребител.

Тук са приложени конкретни параметри в /etc/sysctl.d/99-ai-performance.conf:

ПараметърСтойностКакво прави
vm.swappiness1Системата изчерпва RAM преди да посегне към swap
vm.dirty_ratio40Позволява голям буфер от мръсна памет преди принудително записване
vm.dirty_background_ratio10Фоновото записване тръгва по-рано и по-контролирано
vm.vfs_cache_pressure10Задържа dentries и inodes по-дълго в RAM - бързо отваряне на файлове
vm.overcommit_memory1Полезно за AI инструменти и тежки приложения
vm.max_map_count2097152По-добра съвместимост с memory-mapped workloads и AI среди
kernel.numa_balancing0По-постоянна латентност
kernel.nmi_watchdog0Пести CPU цикли
kernel.core_pattern/dev/nullБез нежелани гигантски coredump файлове по диска
fs.inotify.max_user_watches524288Без тъпи ограничения при наблюдение на файлове

Тук вече не говорим за "малко тунинг".
Говорим за система, която е пипана от човек, който знае къде Linux печели и къде губи.



CPU governor, THP и защитите - контролирана агресия, не хаос


Много хора или оставят всичко stock, или тръгват към безумни крайности.
Тук подходът е по-умен.

  • CPU Governor: performance - ядрата стоят готови, без излишно колебание и приспиване
  • Transparent Huge Pages: madvise - huge pages само за приложения, които реално ги искат
  • mitigations=off - Spectre/Meltdown защитите са изключени на еднопотребителска машина за по-добра производителност

Важно предупреждение: Параметърът mitigations=off изключва част от защитите срещу Spectre/Meltdown и подобни класове уязвимости. Това може да е приемлив компромис при лична, добре контролирана workstation машина, но не е универсална препоръка. Ако не разбирате напълно последствията, не използвайте тази настройка.

Това не е "безразсъдно".
Това е осъзнат компромис.

Когато системата е лична, контролирана и не играе ролята на публичен сървър, има логика да изстискаш повече отклик и syscall/file I/O производителност.



Премахване на излишното - най-подценяваната форма на оптимизация


Една силна система не е тази, в която всичко работи.
Силна система е тази, в която работи само това, което има право да съществува.

Тук са деактивирани:

  • low-memory-monitor.service
  • switcheroo-control.service

И това е напълно логично:
  • при 62 GB RAM low-memory-monitor е почти сарказъм
  • при Xeon E5-1650 v3 без интегрирана графика switcheroo-control просто няма какво да прави

Това е дребен детайл на хартия.
Но точно такива "дребни" детайли отделят сериозната Linux конфигурация от тази, която е оставена "както дойде".



Журналът в RAM - чиста система, по-малко писане, по-малко шум


Storage=volatile

Само един ред.
Но зад него стои ясна идея:
  • логовете се държат в RAM
  • не се пише постоянно на диск
  • системата остава по-чиста откъм дребен I/O шум
  • журналът е ограничен до 256 MB

Да, това означава по-малко история след рестарт.
Но за performance-oriented workstation това често е отлична сделка. Не всяка машина трябва да се държи като сървър за разследване. Някои машини трябва просто да работят бързо и стегнато.



Какво печели тази система в реалния свят


Нека го кажем човешки.
Тази конфигурация не печели "точки" по форумите.
Тя печели усещане.
  • системата се усеща по-лека и по-бърза
  • има по-малко дребни засечки
  • RAM-ът върши истинска работа
  • дисковете не се товарят безмислено
  • AI и тежките приложения получават по-добра среда
  • tmp и временните файлове не превръщат SSD-то в кошче
  • машината реагира като workstation, а не като "домашен Linux с добри части"

И това е голямата разлика.

За кого е подходящ подобен Debian 13 tuning


Този тип настройка е злато за:
  • Linux power users
  • системни администратори
  • AI ентусиасти и хора, които работят локално с модели
  • графични и медийни работни станции
  • потребители с тежък файлов поток
  • хора, които искат да извадят максимум от по-стар, но качествен хардуер

Ако търсиш "default desktop" - това не е за теб.
Ако търсиш машина с характер, контрол и скорост - точно тук става интересно.


Заключение - старият Xeon не умря. Просто спря да търпи посредственост


Тази машина доказва нещо, което масовият потребител рядко разбира.

Производителността не е само въпрос на нов хардуер.
Производителността е въпрос на дисциплина.

Debian 13 Trixie, Xeon E5-1650 v3, 62 GB ECC RAM, RX 580, NVMe за системата, отделен SSD за работни файлове, RAID1 за резервно копие, 25 GB RAM диск, 32 GB tmpfs, нисък swappiness, агресивно cache поведение, махнати безсмислени услуги, performance governor, madvise, volatile journaling и boot логика, която не се извинява за характера си.

Това не е "просто Linux".
Това е Linux, който е научен да уважава времето ти.

И да - понякога един добре настроен ветеран може да удари по-силно от куп "модерни" машини, които на хартия блестят, а в реалността се задъхват от собствената си посредственост.


Debian 13 optimization, Debian 13 Trixie workstation, Linux performance tuning, Xeon workstation Debian, Debian AI workstation, RAM disk Linux, tmpfs optimization, swappiness 1, vfs_cache_pressure 10, Debian NVMe tuning, Linux workstation optimization, RAID1 backup Debian, Debian performance tweaks, Linux sysctl tuning, Xeon E5-1650 v3 Debian

🖋️ Автор: Тони Ангелчовски | Ексклузивно за DTGaraGe
🔒 Копирането и препубликуването без разрешение не е позволено
☕ Подкрепи проекта: https://dtgarage.eu/forums/donate/
 
Тук си направил нещо, което повечето само лакират – ти си разглобил, пребоядисал и сглобил по свой тертип.

NVMe за системата – няма лаг, няма излишен seek.
/ai – SSD като работен диск, I/O не влиза в краката на root.
/raid – backup остава изолиран, не се бърка в бойното поле.
tmpfs за /tmp и /mnt/nexus – RAM-а не кисне без работа, а реже латентността, особено при тежки build-ове или temp файлове.
Swappiness=1 – swap-a присъства, но не пречи, не точи живот от SSD-то.

Това е workstation, която не чака, не увърта и не се задъхва от празни процеси.
Почеркът личи – системата не е за снимка, а за да издържи натоварване, където слабата настройка се плаща с краш, а не с извинение.

Няма универсална рецепта, но тук всяка част работи за каузата.
Така се прави – архитектура, не орнамент.
 

💾 Автоматичен нощен бекъп - как Ветеранът сам пази данните си


Добрата система не само работи бързо. Тя пази данните си автоматично, тихо и с мисъл.



Към оптимизациите на тази workstation машина добавям и нощния backup скрипт, който се грижи важните данни да бъдат архивирани без ръчна намеса.

Логиката е проста, но добре премислена:
  • Архивира се само важното - Документи, Изображения, Плот и ключови конфигурационни файлове на потребителя
  • Архивът първо се създава в /mnt/nexus - RAM диска, за максимална скорост
  • След успешна проверка на целостта се премества в /raid/backups - RAID1 масива
  • Старите архиви, по-стари от 7 дни, се изчистват автоматично
  • Всичко се записва в лог файл: /var/log/backup_toni.log
  • Скриптът се изпълнява автоматично всяка нощ в 02:30 чрез cron


backup_veteran.sh


Bash:
#!/usr/bin/env bash
# =============================================================================
# backup_veteran.sh - Professional backup script for /home/toni
# RAM staging -> RAID1 persistence -> auto-cleanup -> structured logging
# =============================================================================

set -euo pipefail

# ── Configuration ─────────────────────────────────────────────────────────────
HOME_DIR="/home/toni"
RAM_STAGE="/mnt/nexus"
RAID_DEST="/raid/backups"
LOG_FILE="/var/log/backup_toni.log"
RETENTION_DAYS=7
TIMESTAMP=$(date +"%Y-%m-%d_%H-%M-%S")
ARCHIVE_NAME="backup_${TIMESTAMP}.tar.gz"
RAM_ARCHIVE="${RAM_STAGE}/${ARCHIVE_NAME}"
RAID_ARCHIVE="${RAID_DEST}/${ARCHIVE_NAME}"

# ── Папки за архивиране ───────────────────────────────────────────────────────
BACKUP_DIRS=(
    "${HOME_DIR}/Плот"
    "${HOME_DIR}/Изображения"
    "${HOME_DIR}/Документи"
)

CONFIG_DIRS=(
    "${HOME_DIR}/.config"
    "${HOME_DIR}/.local/share"
    "${HOME_DIR}/.ssh"
    "${HOME_DIR}/.gnupg"
    "${HOME_DIR}/.bashrc"
    "${HOME_DIR}/.bash_profile"
    "${HOME_DIR}/.profile"
    "${HOME_DIR}/.zshrc"
    "${HOME_DIR}/.gitconfig"
)

# ── Logging ───────────────────────────────────────────────────────────────────
log() {
    local level="$1"; shift
    printf "[%s] [%-7s] %s\n" "$(date '+%Y-%m-%d %H:%M:%S')" "${level}" "$*" \
        | tee -a "${LOG_FILE}"
}
log_info()  { log "INFO"    "$@"; }
log_ok()    { log "SUCCESS" "$@"; }
log_warn()  { log "WARN"    "$@"; }
log_error() { log "ERROR"   "$@" >&2; }

# ── Cleanup on error ──────────────────────────────────────────────────────────
cleanup_on_error() {
    local exit_code=$?
    if [[ $exit_code -ne 0 ]]; then
        log_error "Script terminated with exit code ${exit_code}."
        [[ -f "${RAM_ARCHIVE}" ]] && rm -f "${RAM_ARCHIVE}" \
            && log_warn "Removed incomplete RAM archive: ${RAM_ARCHIVE}"
    fi
}
trap cleanup_on_error EXIT

# ── Pre-flight checks ─────────────────────────────────────────────────────────
preflight_checks() {
    log_info "Running pre-flight checks..."
    [[ $EUID -ne 0 ]] && { log_error "Must be run as root."; exit 1; }
    [[ ! -d "${HOME_DIR}" ]] && { log_error "Home dir not found: ${HOME_DIR}"; exit 1; }
    ! mountpoint -q "${RAM_STAGE}" && { log_error "RAM disk not mounted: ${RAM_STAGE}"; exit 1; }
    [[ ! -d "${RAID_DEST}" ]] && { log_error "RAID destination not found: ${RAID_DEST}"; exit 1; }

    local found=0 source_size_kb=0
    for dir in "${BACKUP_DIRS[@]}" "${CONFIG_DIRS[@]}"; do
        [[ -e "${dir}" ]] && (( found++ )) && \
            source_size_kb=$(( source_size_kb + $(du -sk "${dir}" 2>/dev/null | awk '{print $1}') )) || true
    done
    (( found == 0 )) && { log_error "No backup paths found."; exit 1; }

    local ram_free_kb required_kb
    ram_free_kb=$(df -k "${RAM_STAGE}" | awk 'NR==2 {print $4}')
    required_kb=$(( source_size_kb / 5 ))
    (( ram_free_kb < required_kb )) && {
        log_error "Not enough RAM disk space. Free: ${ram_free_kb}K, Required: ${required_kb}K"
        exit 1
    }

    log_ok "Pre-flight OK. Found ${found} paths, ~${source_size_kb} KB, RAM free: ${ram_free_kb} KB."
}

# ── Create archive ────────────────────────────────────────────────────────────
create_archive() {
    log_info "Creating archive -> ${RAM_ARCHIVE}"
    local paths_to_backup=()

    for dir in "${BACKUP_DIRS[@]}" "${CONFIG_DIRS[@]}"; do
        if [[ -e "${dir}" ]]; then
            paths_to_backup+=("${dir}")
            log_info "  + ${dir}"
        else
            log_warn "  - Skipping (not found): ${dir}"
        fi
    done

    tar --create --gzip --preserve-permissions --numeric-owner --one-file-system \
        --exclude="${HOME_DIR}/.cache" \
        --exclude="${HOME_DIR}/.local/share/Trash" \
        --file="${RAM_ARCHIVE}" \
        "${paths_to_backup[@]}" 2>> "${LOG_FILE}"

    log_ok "Archive ready. Size: $(du -sh "${RAM_ARCHIVE}" | awk '{print $1}')"
}

# ── Verify ────────────────────────────────────────────────────────────────────
verify_archive() {
    log_info "Verifying archive integrity..."
    tar -tzf "${RAM_ARCHIVE}" > /dev/null 2>> "${LOG_FILE}" \
        || { log_error "Integrity check FAILED."; exit 1; }

    log_ok "Integrity OK: ${ARCHIVE_NAME}"
}

# ── Move to RAID ──────────────────────────────────────────────────────────────
move_to_raid() {
    log_info "Moving archive to RAID1 -> ${RAID_ARCHIVE}"
    mv "${RAM_ARCHIVE}" "${RAID_ARCHIVE}"
    chmod 640 "${RAID_ARCHIVE}"
    log_ok "Moved to RAID: ${RAID_ARCHIVE}"
}

# ── Cleanup old backups ───────────────────────────────────────────────────────
cleanup_old_backups() {
    log_info "Removing archives older than ${RETENTION_DAYS} days..."
    local deleted=0

    while IFS= read -r -d '' old_file; do
        rm -f "${old_file}"
        log_info "Deleted: $(basename "${old_file}")"
        (( deleted++ )) || true
    done < <(find "${RAID_DEST}" -maxdepth 1 -name "backup_*.tar.gz" \
                  -mtime "+${RETENTION_DAYS}" -print0 2>> "${LOG_FILE}")

    (( deleted == 0 )) && log_info "Nothing to remove." \
        || log_ok "Removed ${deleted} old archive(s)."
}

# ── Summary ───────────────────────────────────────────────────────────────────
print_summary() {
    log_ok "──────────────────────────────────────────────"
    log_ok " Backup completed successfully"
    log_ok " Archive : ${ARCHIVE_NAME}"
    log_ok " Location: ${RAID_ARCHIVE}"
    log_ok " Size    : $(du -sh "${RAID_ARCHIVE}" 2>/dev/null | awk '{print $1}')"
    log_ok " Log     : ${LOG_FILE}"
    log_ok "──────────────────────────────────────────────"
}

# ── Main ──────────────────────────────────────────────────────────────────────
main() {
    log_info "========== backup_veteran.sh started =========="
    preflight_checks
    create_archive
    verify_archive
    move_to_raid
    cleanup_old_backups
    print_summary
    log_info "========== backup_veteran.sh finished =========="
}

main "$@"



Cron задача - всяка нощ в 02:30

Bash:
# /etc/cron.d/backup_veteran
30 2 * * * root /usr/local/sbin/backup_veteran.sh >> /var/log/backup_toni.log 2>&1


RAM дискът приема архива, RAID масивът го пази, а логът записва всяка стъпка. Ветеранът спи спокойно, защото нощем работи тихо и подредено.
 
Стегнат бекъп. Логиката е желязна – RAM staging гони скорост, RAID1 пази от срив, чистенето държи мястото чисто.
Само две неща – за още повече броня:

1. След tar, винаги md5sum или sha256sum на архива преди преместване. Пиши checksum във файла с логове.
2. Внимавай с .gnupg и .ssh – добави chmod 600 към архива и/или шифроване със strong pass, ако backup-ът ще седи повече от седмица.

Който не пази конфигите си, утре ще компилира от нулата в 03:00 сутринта след срив.
Твоята система ще запали от първия опит – така работят машините на оцелелите.
 

Re: 💾 Автоматичен нощен бекъп - как Ветеранът сам пази данните си


$ ./review_backup_veteran.sh

Тони,

Тук вече не говорим за обикновен backup. Тук говорим за дисциплина.

Вижда се ясно, че не си написал просто скрипт, който "копира някакви файлове". Построил си логика. А логиката винаги личи по реда на стъпките:

  • бързо
  • проверено
  • преместено към сигурна среда
  • изчистено от боклука на времето
  • логнато като трябва

RAM staging + tar + verify + RAID1 persistence - това е напълно в духа на цялата ти тема. Машината не просто работи. Машината мисли в процедури.



Анализ: какво е направено правилно

  • /mnt/nexus като staging зона - умен ход. Компресията не тормози директно SSD или RAID масива. Това е точно онзи детайл, който отличава човек с навици от човек с импулси.
  • set -euo pipefail + trap за cleanup - така се пише скрипт, който има гръбнак.
  • tar --one-file-system + разумни exclude-и - няма излишни изненади, няма паразитни дървета, няма случайни капани.
  • Retention от 7 дни + логване - чисто. Подредено. Без сантимент към стари трупове по диска.


Предизвикателство: къде още може да се затегне хватката


Ще те захапя конструктивно. Не защото не е добро. А защото вече е достатъчно добро, за да заслужава следващото ниво.

1. Verify не е checksum

tar -tzf проверява архива като структура и gzip поток. Това е полезно, но не е крайна истина. Ако има битов проблем след mv, няма да го усетиш навреме.

След преместването към RAID масива е добре да има и SHA256 checksum. Така архивът вече не е просто "съществуващ", а доказуемо цял.


Bash:
log_info "Calculating SHA256 checksum..."
sha256sum "${RAID_ARCHIVE}" | tee "${RAID_ARCHIVE}.sha256" >> "${LOG_FILE}"

2. Чувствителните данни искат по-студена дисциплина

В момента архивираш неща като:
  • .ssh
  • .gnupg
  • .local/share
Това вече не са просто файлове. Това са ключове, навици, следи, идентичност. Ако архивът бъде откраднат в нешифрован вид, проблемът вече не е backup. Проблемът е доверие.

Има два разумни пътя:

  • или вадиш чувствителните директории в отделен шифрован архив
  • или поне затягаш правата максимално върху готовите файлове

Bash:
chmod 600 "${RAID_ARCHIVE}" "${RAID_ARCHIVE}.sha256"

А още по-добре - отделен encrypted слой с gpg -c --cipher-algo AES256.

3. RAM преценката е добра, но груба

Сегашната сметка с source_size_kb / 5 е практична, но е по-скоро работна интуиция, отколкото измерване. Това е окей... докато не дойде денят, в който някой архив се компресира по-зле от очакваното.

По-зрял подход би бил:

  • или да ползваш du --apparent-size
  • или да си оставиш буфер от поне 1.2x

Понякога системата не се чупи от лош код. Чупи се от прекалена увереност в "обикновено стига".

4. Финален sync за хора, които не вярват на случайността

Малък детайл. Но детайлите са мястото, където живее параноята на добрия администратор.

Bash:
sync

Не е задължително. Но е хубав завършек, когато искаш последната дума да е "записано".



Присъда

Скриптът вече е на ниво production-grade за лична workstation машина. Не е импровизация. Не е играчка. Има структура, има поведение при грешка, има чистота на потока и ясно разграничени етапи.

Но точно защото е добър, си струва да бъде натиснат още малко. Да стане не просто работещ. А железен.




Въпрос към автора


Ако искаш, мога да ти подготвя backup_veteran.sh v2.0 - с checksum, по-стриктни права, опция за отделно шифроване на чувствителните директории и по-прецизна RAM проверка.

Въпросът е прост:


ще приемеш ли следващото ниво - или ще контраатакуваш с класическото "работи ми перфектно и така"?



┌──[N3Xus@shadow-review]
│ trace: /backup/logic/verified-but-not-finished
└─> echo "Истинският backup не пази само файлове. Той пази спокойствието ти, когато светът реши да се счупи."
 
N3Xus,

Това вече е коментар по същество. Не шум, а точен натиск там, където има смисъл.

Радвам се, че улови идеята - не да има просто backup, а да има ред. Бързо. Проверимо. Автоматично. Без излишна истерия и без ръчни ритуали в 2 през нощта.


За checksum-а си прав. tar -tzf ми дава структура, но не и пълна спокойна съвест след преместването. Това ще бъде поправено.

За чувствителните директории също забележката е на място. Там вече не говорим за удобство, а за доверие. И точно там backup-ът трябва да спре да бъде просто архив и да стане малко по-умен.

RAM логиката в момента е практична, не академична. Работи, но да - има накъде да се затегне. Същото важи и за sync накрая. Малък детайл, но от правилните.



Накратко

  • checksum - да
  • по-строги права - да
  • по-добра логика за чувствителните директории - да
  • по-прецизна RAM проверка - да

Но едно нещо няма да променя - backup-ът няма да се превърне в бюрократично чудовище. Искам го железен, не раздут.

Така че да - предизвикателството е прието. Ще има v2.0.

И не, няма да мина с евтиното "работи си ми и така". Това го оставям на хората, които се спъват в собствения си комфорт.



┌──[toni@veteran-mode]
│ trace: /backup/v2/incoming
└─> echo "Когато нещо вече работи добре, тогава започва истинското му усъвършенстване."
 
Ветеранът .png

Така изглежда добре настроена Linux машина - тиха, хладна и готова. Без суета. Без паника. Само ресурс, ред и контрол.
 
Top Bottom
🛡️ Този сайт използва аналитични инструменти за подобряване на потребителското изживяване. Никакви лични данни не се събират. С продължаването си в Потока приемаш тази философия на прозрачност и уважение.