Задать вопрос
  • Про извлечение квадратных кор... значений из health bar'ов. Как?

    @rPman
    Придется заниматься реверсинженерингом, с unreal engine это заметно сложно.

    Выше VoidVolker отлично ответил. Можно добавить что есть ещё направление, анализ сетевых пакетов, они правда тоже могут быть зашифрованы, но информация в них наиболее полезная...
    Ответ написан
  • Как реализовывать пункт ТЗ "Требования сохранности информации при авариях"?

    @rPman
    У онлайн резервирования данных ценник реализации растет экспоненциально от допустимого лага во времени назад от момента аварии, до которого можно терять данные.

    Универсальные решения крутятся вокруг репликации (базы данных), постоянных снапшотов файловой системы и верхнеуровневых логов действий пользователей, на основе которых можно восстановить потерянные данные (типов пример, восстанавливал данные на за час до моря и симулируя действия пользователей, доводишь состояние до конечного.

    При возникновении выбора, купить специализированное железо или завернуть как очередная виртуалка на сервере приложений - выбирать первое.

    Если есть возможность, закладывать онлайн резервирования и восстановление в само приложение (те самые прогоны логов действий пользователей), как ещё один способ а не единственный.

    Само собой, резервные копии территориально должны быть разделены с рабочими данными... ну и регламенты доступа к данным, запрет доступа со стороны (сервер резервной копии инициирует подключение и авторизацию а не наоборот).

    Куча нюансов от того какой софт крутится с данными, как бизнес к простоям толерантен, допустимы ли лаги при модификациях (пока сервер репликации не скажет что все ок, все будут ждать), держишь ли ты запасное железо в загашнике, как регулярно проверяешь ли бакапы на восстановление и проверяешь ли результат, добавляешь ли в копию софт и инфраструктуру для его запуска (а то через несколько итераций обновлений старый бакап станет тыквой), достаточная ли документация и проводишь ли ты текстовые стресс прогоны с сотрудниками на форс-мажор (мало сохранить данные, нужны люди, способные в срок из вернуть),..
    Ответ написан
  • Как восстановить GPT на флешке?

    @rPman
    Самое первое и тупое - сделать резервную копию, и пересоздание разделов (можно даже для надежности очистить первые сектора на диске с помощью dd).

    Вообще странно, sgdisk -e должен был бы помочь, ну попробуй сделать
    sgdisk --backup=файл_для_бакапа /dev/sda
    sgdisk --load-backup=файл_для_бакапа /dev/sda

    Если фиксить, попробуй консольный gdisk /dev/sda и в интерфейсе нажать v (проверить и починить) и w (записать изменения)

    p.s. осторожно с ИИ, они дают идеи но косячат с ключами, каждый их ответ перепроверяй ими же, добавив в контекст документацию по утилите
    Например anthropic:claude sonnet посоветовал
    sudo sgdisk -g /dev/sdX # синхронизация таблиц
    но это не совсем верный совет, ключ -g
    -g, --mbrtogpt
    Convert an MBR or BSD disklabel disk to a GPT disk. As a safety measure, use of this option is required on MBR or BSD disklabel disks if you intend to save your changes, in order to prevent accidentally damaging such disks.
    Если в mbr копии будет неправильная таблица, эта команда все сломает

    поэтому, если важны данные, делай сначала бакапы
    Ответ написан
    Комментировать
  • Можно ли спрятать процесс на дистрибутивах GNU\Linux?

    @rPman
    Функционально такой вирус создать конечно же можно, мало того, на linux все вышеописанное даже легче реализовать, за небольшим исключением.

    В linux по умолчанию пользователь менее привилегирован чем в windows (особенно когда в windows по умолчанию запрос на повышение привилегий не выдается в большинстве случаев). Т.е. проблема не в создании приложения с нужным функционалом, а в заражении, т.е. его запуске.

    Пример путей проникновения - win-way пути запуска их как скачал-запустил, например .AppImage образ, изначально в нем должна поддерживаться песочница, но большинство примитивных приложений что я смотрел типа чат для ИИ (chatbox тот же) - требуют для запуска необоснованное отключение песочницы.

    Или к примеру смотришь, а приложение не запускается, требует suid флаг на бинарник,.. (тот же proton если запускать из lutris) и в лучшем случае ты нагуглишь инстуркции но никак не гарантии что после этого в систему не будет установлен троян.

    Запуск приложений что в windows что в linux это вопрос ДОВЕРИЯ их разработчикам. Отличный пример rustdesk, опенсорс, но это приложение столько телеметрии отправляет (а в исходниках бинарники забиты) а еще на глюке начинает нагружать одно ядро процессора тупо в цикле ps запускать. Есть песочницы по типу snap/flatpak а так же штатно lxc, но интерфейс для их использования не для обывателя (нужно в консоли писать команды, с неудобной документацией по настройке прав доступа и т.п.) поэтому пока это не изменится, linux будет таким же дырявым с точки зрения простоты заражения как и windows.
    Ответ написан
    1 комментарий
  • Можно поменять серийный номер жесткого диска для конкретного приложения?

    @rPman
    Можно виртуализацией, самый простой способ. Внутрь виртуалки пробрасывается диск как образ (в qemu или virtualbox он так и прописывается, как файл). Диск аппаратно для программы будет другим, а содержимое то же самое что на оригинальном... так же можно пробрасывать конкретный раздел, тогда можно подменять в т.ч. и бут сектор
    Ответ написан
    Комментировать
  • Видимая точка входа в VPN?

    @rPman
    Что бы хостер vpn с выходным ip не видел ВАШ ip, используйте еще один промежуточный.
    Вы -> Промежуточный VPN -> Выходной VPN -> интернет

    В этом случае ваш провайдер 'не будет знать' (нет), какой выходной в интернет ip адрес у вас, а выходной vpn не будет знать какой ваш ip. Промежуточный vpn будет знать ваш ip но не будет знать выходной в интернет ip.

    Еще более сложная схема используется tor, где промежуточных нод может быть несколько уровней, и они могут меняться.

    Но к сожалению это не будет работать против тайминг атак, при которых пакеты идентифицируются статистически по времени и размеру. Если ваш и выходной провайдеры в сговоре (обмениваются данными или точнее складывают данные и обрабатывают единым образом). Так же такая атака возможна если ваш провайдер и провайдер веб сайта, на который вы заходите, так же 'в сговоре'.

    На сколько я знаю чуть выше уровень защиты против тайминг атак - у i2p, там в трафик подмешиваются случайные данные...

    Но все равно, против скоординированной атаки провайдеров по всему миру полностью анонимным свои действия сделать не получится, я читал что деанонимизировали людей и с i2p просто добавляя в трафик этой сети задержки на разных узлах и анализировали их статистически (веб приложение тоже было захвачено, нужно было вычислить клиента), в зависимости от скорости ответа выявляли, какие именно ноды на данный момент участвуют в связи между клиентом и сервером.

    Живите честно и самая лучшая защита - быть 'неуловимым джо'
    Ответ написан
  • Как и где сохранять данные в next js?

    @rPman
    Проблема в том что в nextjs а используется подход stateless (а скорее всего http rest), когда каждый запрос клиента это новый запуск приложения, а состояние нужно будет заново восстанавливать и естественно где то хранить, например в базе данных.

    Для того что бы сервер не приходилось настраивать, используй базу данных в файле, наилучшим ее представителем является sqlite. Это будет просто файл, который максимум нужно будет оградить от публичного доступа, разместив вне каталога веб сервера.

    Еще момент, состояние можно хранить на клиенте, это потребует от него поддержки javascript. Особенно если эти данные исключительно вопрос интерфейса и внешнего вида но не бизнеслогики.

    Если хостинг не позволяет хранить файлы и сам по себе является stateless, есть отвратительный но используемый метод, который используется, в тч.. майкрософтом, когда пишешь веб приложение в visual studio (может уже изменили?). Храни состояние в сетевых пакетах, т.е. cookies (пользователь их сможет увидеть и изменить, помни об этом). Так же можно передавать данные, добавляя их как GET, добавляя к каждой ссылке информацию в виде параметров, но в этом случае эти данные будет видеть пользователь прямо в ссылке и это нехорошо для SEO. Так же не советую использовать для этого POST запросы, это скроет состояние от пользователя но помешает ему нажимать кнопку 'Обновить' в браузере (будет выскакивать непонятное многим сообщение подтверждение повторной отправки данных).
    Ответ написан
  • Не сходится общее время работы HDD и m.2 NVMe почему так?

    @rPman
    Скорее всего устройства по разному считают время работы во сне.
    hdd это самостоятельное устройство, оно может крутиться просто если ему подавать энергию, а значит и считать время работы.

    А nvme почти полностью живет за счет материнской платы и процессора (а значит ОС и драйверов) и не удивлюсь что оно может засыпать (hdd тоже могут но менее агрессивно, так как это механика и постоянные вкл/выкл ей вредят) и не считать время работы
    Ответ написан
    Комментировать
  • Как при загрузки с флешки перенести восстановить windows boot manager windows 10 на НОВОМ диске?

    @rPman
    нужно взять установочный диск windows той же архитектуры и желательно версии (в 10-ой они скопом в одном диске вроде), загрузиться в режиме восстановления, командная строка:
    - создать любыми способами раздел efi boot 128мб (можно в загрузочном диске командной строке diskpart либо я пользуюсь liveusb linux и там с помощью gparted или fdisk) и отформатировать его fat32
    - если используется не uefi метод загрузки но на диске таблица разделов gpt (а не старая dos/mbr) то нужно будет создать раздел bios boot 1мб.
    p.s. размещение этих разделов желательно не дальше 2тб от начала диска
    - восстановить загрузчик написать:
    bcdboot d:\windows /s c: /f ALL
    В данном случае d:\windows это путь до windows каталога, а c: = имя диска efi boot. Порядок и наименования дисков будут отличаться от системы к системе поэтому предварительно посмотреть dir c: на списки файлов, вместо ALL можно написать UEFI если нужно только восстановить запись загрузчика в биосе, ну а BIOS если используется старый метод legacy compatible mode или его еще mbr или dos называют.
    Ответ написан
    1 комментарий
  • Как автоматически очищать кэш у клиента на странице?

    @rPman
    Глобально - через отправку клиенту заголовка, фича относительно новая (прошли годы как приняли) но по уму должна поддерживаться уже всеми. Чистит все, для веб сайта и его поддоменов, не думаю что это красиво делать регулярно, но как фосмажор - почему нет.

    Ну а исторически, проблема кеширования при обновлении веб приложений решается заранее, имя файла (или добавлять ?xxx к ссылке) должно содержать хеш от его содержимого, т.е. все файлы проекта (те что в html коде, т.е. js и css) перед деплоем должны пройти переименование и соответствующую правку когда/шаблонов в местах, где переименованные файлы используются.
    Ответ написан
    1 комментарий
  • Необходима автоматическая авторизация на сайте, через один ip-адрес, то есть через прокси с разных устройств?

    @rPman
    Универсально - написать небольшой скрипт для greaseminkey/tempermonkey (расширение для браузера для внедрения в сайт своего скрипта) и организовать какой то способ обмена cookies после авторизации (т.е. какой то веб сервер, где будет храниться куки, откуда ваш скрипт будет запрашивать и соответственно сохранять при успешной авторизации)... Все вполне примитивное (там от слов несколько строк кода), особенно если только внутри локальной сети, иначе придется какую то защиту от злоумышленника на этом сервере.
    Ответ написан
    Комментировать
  • Как создать чат бот для проверки домашних дел у ребёнка?

    @rPman
    Да, реализовать можно, но качество будет не высоким, ведь понятие порядок у уже обученных ИИ может сильно отличаться от вашего мнения.

    Можно дообучить модель - классификатор, затратив не сильно много денег (есть google-ские vl модельки от 2b, есть qwen-овские и 2b и 9b и 90b на любой вкус и деньги), но даже в этом случае скорее всего качество распознавания 'в лоб' будет порядка 70% ну и обучающую выборку создавать нужно будет долго и кропотливо, каждый раз снимая фото до и после (желательно много раз с разных ракурсов и в разные моменты уборки).

    Если не решать задачу в лоб, то используй фейсбуковскую SAM2 (или прежняя SAM), она разобьет изображение на объекты, каждый объект можно получить его координаты, описание и т.п. вот полученную информацию можно как то обрабатывать уже классическими алгоритмами, ведь будет видно что каждая вещь на каком месте... но качество фото должно быть высоким.

    p.s. а можно не использовать нейронку, а делать фото из одного и того же места (закрепить камеру) и сравнивать фото в момент, когда комната была прибрана и когда нет, по количеству расхождений... а вот что именно сравнивать уже вопрос.
    Ответ написан
  • Как быстро войти в тему разработки ChatGPT, LLM Agent и т.п.?

    @rPman
    Разве эта задача решается легко? а как ее решали до сегодняшнего дня? что является критерием оценки качества беседы?

    У тебя вроде все указано нужное - whisper получает текст, может с временными метками (хз что такое faster-whisper-xxl, есть есть официальная утилита на python - pip install whisper в консоли задаешь модель и кучу параметров и получаешь текстовый файл).

    Результат слабоват, потому что инструменты такие. Выбирай по умнее. И не забывай, что с русским языком локальные ИИ работают значительно хуже чем с английским (или если это qwen еще и китайский).

    Не пытайся решать задачу одним промптом. Набрасывай на проверяемые данные несколько промптов, по очереди (не одним чатом, а каждый раз заново). Кстати есть замечание, разные сети по разному реагируют на размещение вопроса перед данными и после (есть соблазн размещать данные в начале, потому что тогда работает кеширование и входной текст не обрабатывается заново), т.е. можно данные+вопрос и вопрос+данные

    а еще бывает вопрос+данные+фразы_помощники типа 'глубоко вдохни и подумай шаг за шагом', 'ты уверен, а если подумать еще раз', 'и какой будет твой окончательный ответ' а так же извлечение строгого ответа из ответа в свободной форме, ведь если сразу ограничить формат ответа, то качество будет хуже..

    еще есть совет, делать несколько прогонов одной и той же задачи и смотреть, как будут отличаться результаты, если гулять сильно, значит повод задуматься об изменении подхода или алгоритма.

    Добавь сюда ручную проверку человеком (например случайные результаты проверки) и сохраняй в табличку для анализа, как часто ИИ ошибается и в каких случаях, поможет тюнить промпт и вообще следить за тем бардаком, что вытворяет ИИ.

    upd. настоятельно рекомендую использовать 70b модели (та же qwen или llama3.3 например). При использовании младших моделей, старайся не использовать квантизацию, она их ломает сильнее чем для старших версий... используй 8bit, не меньше.

    Мне нравятся модели deepseek distilled qwen 14b или 32b? 14b с полным контекстом можно запустить на 2x16gb nvidia 4060ti, при этом рекомендую использовать vllm а не llama.cpp (каждая стоит 50т.р. дешевле ну просто некуда) на скоростях с батчингом до тысячи tps (16 параллельных запросов мне давали 800tps ну а vllm при запуске обещал 31k tps)... внимание, промпты и ответ только на английском, но русский вроде понимает
    Ответ написан
    Комментировать
  • Почему скрипт запуска виртуальной машины перестал работать?

    @rPman
    какое красивое садамаза, скрипт запускает сам себя на javascript являясь bat, да еще и внутри powershell, как это читать и отлаживать, известно только его разработчику :)

    И самое главное, вам точно нужно GUI для смены даты? И уж точно для этого не требуется ни powershell ни повышение прав доступа (хотя может у вас там так настроено)

    У virtualbox есть соответствующие команды VBoxManage, которые можно было просто прописать в текстовом файлике, назвать blablabla.bat и запускать
    upd. нужно считать разницу в миллисекундах между текущим временим и целевым, на bat это сложно, поэтому лучше сразу писать на чем то типа javascript, не изобретая паровоза (и от туда же запускать vboxmanage)

    p.s. кайфую с современного ИИ, который это сумел разобрать и по полочкам разложить этот кошмар
    anthropic:claude sonnet 3.5
    ...
    проанализируй этот скрипт для windows, почему тут сместь cmd и javascript, и начни описание, что именно делают первые строчки
    Давайте разберем этот интересный гибридный скрипт:

    Первые строки скрипта представляют собой "полиглот" - код, который может быть интерпретирован несколькими языками программирования:

    ```
    set @x=0; /*
    @echo off
    ver |>NUL find /v "5." && if "%~1"=="" cscript.exe //nologo //e:jscript "%~f0"& exit /b
    ```

    Это хитрая конструкция, которая:
    1. Начинается как cmd-скрипт (`@set @x=0;`)
    2. Открывает многострочный комментарий в JavaScript (`/*`)
    3. Выключает вывод команд в cmd (`@echo off`)
    4. Проверяет версию Windows и если скрипт запущен без параметров, перезапускает сам себя через cscript.exe в режиме JavaScript

    Последняя строка скрипта:
    ```javascript
    */new ActiveXObject('Shell.Application').ShellExecute (WScript.ScriptFullName,'Admin','','runas',1);
    ```
    закрывает JavaScript-комментарий и содержит код для повышения привилегий - перезапуска скрипта с правами администратора.

    Это техника самоповышения привилегий (UAC bypass), которая позволяет скрипту перезапустить себя с правами администратора, если он был запущен от обычного пользователя.

    Основная часть скрипта написана на PowerShell и использует Windows Forms для создания графического интерфейса. Согласно документации [learn.microsoft.com](https://learn.microsoft.com/en-us/dotnet/api/syste...), скрипт создает форму для ввода даты, которая будет использоваться для настройки BIOS времени виртуальной машины VirtualBox.

    Такая сложная структура используется для:
    1. Обеспечения запуска с правами администратора
    2. Совместимости с разными версиями Windows
    3. Комбинирования возможностей разных языков скриптования Windows

    продолжай дальше анализ, почему там еще и powershell?
    PowerShell используется в этом скрипте для основной функциональности, и его часть начинается после строк:

    ```
    ;@echo off
    ;@Findstr -bv ;@ "%~f0" | powershell -noprofile -command - & goto:eof
    ```

    Эта конструкция особенно интересна, потому что:
    1. Использует Findstr для фильтрации содержимого файла, пропуская строки, начинающиеся с `;@`
    2. Передает отфильтрованное содержимое в PowerShell через пайп (`|`)
    3. Запускает PowerShell без профиля (`-noprofile`) для ускорения загрузки

    PowerShell был выбран для основной части скрипта по нескольким причинам:

    1. **Объектная модель**: Как отмечается в [thenewandshiny.com](https://thenewandshiny.com/powershell-everywhere/), PowerShell работает с объектами, а не с текстом, что делает его более надежным для работы с системными компонентами.

    2. **Удобство работы с GUI**: PowerShell позволяет легко создавать Windows Forms для пользовательского интерфейса, что используется в функции `CustomInputBox`

    3. **Управление VirtualBox**: PowerShell предоставляет удобные средства для запуска процессов и управления VirtualBox через `VBoxManage`

    4. **Работа с датами**: PowerShell имеет мощные средства для работы с датами и временем, что критично для этого скрипта

    Важно отметить, что в скрипте используется разделение на Windows PowerShell и PowerShell Core. Как упоминается в [get-powershellblog.blogspot.com](https://get-powershellblog.blogspot.com/2017/10/wh...), это важно учитывать при работе с разными версиями PowerShell.

    Скрипт использует стандартный формат командлетов PowerShell `Verb-Noun`, хотя, как отмечается в [scoop-docs.vercel.app](https://scoop-docs.vercel.app/docs/misc/Why-PowerS...), такой формат может казаться излишне многословным, но он обеспечивает четкую структуру и понятность команд.

    Основная функциональность скрипта:
    1. Создает GUI для ввода даты
    2. Проверяет корректность введенной даты
    3. Настраивает время BIOS для виртуальной машины VirtualBox
    4. Запускает виртуальную машину с модифицированными настройками времени

    какими строчками настраивается время
    В скрипте время настраивается несколькими ключевыми командами:

    1. Сначала отключается синхронизация времени с хостом:
    ```powershell
    start-process $VB_MANAGE 'setextradata', $vmname, 'VBoxInternal/Devices/VMMDev/0/Config/GetHostTimeDisabled 1' -NoNewWindow
    ```

    2. Затем вычисляется смещение времени в миллисекундах:
    ```powershell
    $timeoffset_milliseconds='{0:0}' -f ([datetime]$date - [datetime]::Now).TotalMilliseconds
    ```

    3. И наконец, применяется смещение времени BIOS:
    ```powershell
    start-process $VB_MANAGE 'modifyvm', $vmname, '--biossystemtimeoffset', $timeoffset_milliseconds -NoNewWindow
    ```

    Здесь важно отметить несколько моментов:
    - Используется VBoxManage - утилита командной строки VirtualBox (путь хранится в переменной `$VB_MANAGE`)
    - Смещение вычисляется как разница между желаемым временем (`$date`) и текущим системным временем
    - Параметр `--biossystemtimeoffset` устанавливает смещение времени BIOS в миллисекундах

    После установки времени виртуальная машина запускается командой:
    ```powershell
    start-process $VB_MANAGE startvm, $vmname
    ```

    Похожий подход используется в проекте [github.com/bitbank2/rtc_setter](https://github.com..., где также реализована настройка времени, но для реального RTC (часов реального времени), а не виртуальной машины.

    Важно понимать, что этот скрипт не просто устанавливает время, а именно смещение относительно системного времени хоста, что позволяет виртуальной машине работать с другой датой, но сохранять корректный ход времени.

    Ответ написан
    5 комментариев
  • Как реализовать стартап и сохранить авторское право?

    @rPman
    Идеи стоят мало, если идея ценная - патентуй, как минимум в ее защите тебе поможет государство, но только на территории своей страны,и глобально защиту искать получится очень дорого, только очень ценные идеи этого стоят, что очень редко. Чаще патентуют идеи не для того что бы идею не украли, а что бы защититься от мошенников, которые возьмут вашу идею, запатентую быстрее вас и призовут государство что бы вас 'наказать' (и это очень 'хорошо' работает, к сожалению).

    Для создания чего либо нужен тот кто найдет, организует, проконтролирует... будьте тем кто этим займется, ну а без этого идея не взлетит.

    Специалисты сейчас очень узкого профиля, поэтому вероятность того что вашу идею украдут и реализуют без вас 'очень мала'. С другой стороны, погоняло в лице конкурентов, узнавших о вашей идее, может быть хорошим стимулом для реализации этой идеи как можно быстрее, это гонка, кто быстрее тот и победитель.

    p.s. не ищите 'специалиста по ИИ', лучший способ вас обмануть, ведь если что то не получится, это 'не человек виноват а ИИ несовершенен'. Ищите специалиста для решения конкретной задачи.

    p.p.s. вам придется сделать ставку, либо своими деньгами, либо своим временем и 'уникальной идеей', вам придется пойти на риск.
    ----

    Есть замечательная техника, проверенная временем - 'разделяй и властвуй'. Не говорите никому всю информацию целиком, разделяйте ее, каждому сообщайте ровно столько, сколько нужно для решения задачи.
    Ответ написан
    21 комментарий
  • Установка windows 10 требует поворачивать разные предметы, куда указывает рука - iso?

    @rPman
    про win 10 первый же результат из гугла по запросу 'windwows 10 home установка без облачного аккаунта': https://siblimo.ru/kak-ustanovit-windows-10-bez-uc...
    Ответ написан
    Комментировать
  • Как реализовать на сайте просмотр 3д моделей, которые загружает пользователь?

    @rPman
    https://threejs.org/
    например на его основе написан просмотрщик на thingeverse
    Ответ написан
    Комментировать
  • Программы для обнаружения вредоносного ПО для Windows?

    @rPman
    Все ревизии windows в составе своем содержат 'приложение для обнаружения вредоносного ПО', в win7 это defender (он не обновляется поэтому по факту 'бесполезен' уже давно), ну а в последних версиях это 'защита от вирусов и угроз'.

    Помимо сканирования 'на лету' у него есть функция проверки файлов по требованию (настраиваемое сканирование).

    Ну а самое продвинутое решение - это virustotal, это онлайн антивирус по факту комбайн из десятков антивирусов, проверяемый файл по хешу определяется, что ранее уже проводилась проверка, в этом случае он не будет загружен по сети и не будет протестирован (зачем если это уже проводилось), что значительно сокращает время тестирования, при этом в составе есть песочницы для автоматического анализа (подробный лог, например какие сетевые запросы делает приложение или какие файлы меняет)
    Ответ написан
    3 комментария
  • Как лучше всего бекапить общие папки?

    @rPman
    Штатный ntbackup в режиме fast (инкрементальный). Лично мне не нравится, неудобно, но зато штатно и все мышевозекательно.
    ---
    Любой архиватор, позволяющий добавлять в архив либо по флагу archived либо по дате, простенький скрипт из трех строчек, сохраняешь дату бакапа в имени файла бакапа и следующий бакап делаешь на основе этой даты с предыдущего (у меня было два каталога - один для последнего единственного файла и второй для всех остальных - при запуске бакапа я брал имя этого единственного файла, делал бакап в этот же каталог и после его успешного завершения перемещал файл старый во вторую папку... если в каталоге два файла при запуске - значит предыдущий бакап корректно не завершился, и значит более новый файл удалить и повторить попытку.

    Делать бакапы - пол дела, их нужно проверять. В случае с инкрементальными бакапами нужно держать где то распакованную версию с последней проверки и помнить дату этого бакапа, разворачивая в нее все последующие инкрементальные архивы. Я тогда не заморачивался с удалением файлов (в планах было хранить список файлов в момент бакапа и сравнивать их скриптом но особой необходимости в этом не было а потом перешел на rsync). Недостаток инкрементальных бакапов, если потерять этот развернутый тест-бакап, то что бы восстановить состояние каталога на последнее - нужно будет последовательно развернуть все, начиная с самого первого стартового. Что бы этого не происходило, нужно периодически пересоздавать 'первый стартовый архив' из тестового, и удалять все бакапы старее.
    ---
    rsync (есть продвинутая с патчами если нужно хранить права но по уму лучше брать ту что на основе mingw) - решил все проблемы, включая удобство использования (смотреть инкрементальную копию как обычный каталог тупо в far/проводник), добавив долгую проверку диска chkdsk после сбоя потому что там миллионы файлов. Это магический ключ --link-dest с его помощью можно указать каталог последнего бакапа, что то типа такого:
    rsync -av --link-dest=/backup/%PREV% /mnt/d/ /backup/%CURRENT%

    Тут PREV хранит дату (например dd-m-yyyy) предыдущего бакапа а CURRENT - текущего.

    И самое главное, на NAS храни не сами файлы (так как по сети не будут переданы ни права доступа ни расширенные атрибуты ни симлинки... а .vhd образ (его можно тут же монтировать с помощью штатного diskpart). На диске сделай обычный ntfs, можно даже сжатие включить (или шифрование, как хочешь). Копировать так данные можно клиентами windows начиная с 7-ки (не starter и не home ревизии), т.е. скрипт резервного копирования запускать прямо на клиенте, который монтирует диск, делает резервную копию, и размонтирует... делать это рекомендуется по ssh с основного сервера, что бы гарантировать что один и тот же .vhd не будет смонтирован дважды (да там и не получится), но если так будешь делать, это значит клиенты будут иметь доступ (да можно права настроить но все же) ко всем бакапам,.. если nas поддерживает, на момент бакапа делать снапшот хранилища, и если бакап завершится без ошибок, удалять иначе откатывать назад и повторять.

    Недостаток подхода - если во время резервного копирования произойдет сбой (повиснет компьютер или разрыв связи), то диск придется чинить с помощью chkdsk, все ничего но времени это будет занимать часами, если файлов в одном бакапе сотни тысяч, то на всем диске будет миллионы. От разрыва связи можно защититься, отключив кеширование записи на диске (в свойствах диска и соответственно его устройства).

    Достоинство - каждый каталог визуально полная копия забакапленных файлов, при этом старые (да и любые) копии можно удалять прямо как есть... используются hardlinks и файлы будут присутствовать на диске в единственной копии пока хотя бы один бакап на них ссылается (читай симуляция дедубликации)
    Ответ написан