Search
Write a publication
Pull to refresh
6
0
Константин Кулаков @kvk-2019

Пользователь

Send message

В честь "Всемирного дня бэкапа" решил частично проверить восстановление той части резервного копирования, что описана у меня сколько-нибудь подробно здесь (на Дзене, в той же статье короткие воспоминания о бэкапах в 80-е годы). Скрипты копирования такие:

@start "split into BD-RE slices" %comspec% /k py .\bd_split.py %~nx1
#! python3.13

import sys


BUF_SIZE = 1024 * 1024
FS_SIZE = 2048 * 512 # кратно BUF_SIZE, значит можно использовать сравнение count == BD_DISK_SIZE
BD_DISK_SIZE = 25025314816 - FS_SIZE

file_name = sys.argv[1]
source = r"K:\backup\2311\{0}".format(file_name)
dest_head = r"D:\kvk\YandexDisk\Acronis\{0}".format(file_name)

with open(source, "rb") as input:
    part = 1
    while True:
        count = 0
        with open(dest_head + ".{0:02d}".format(part), "wb") as output:
            bytestring = input.read(BUF_SIZE)
            while bytestring:
                count += output.write(bytestring)
                if count == BD_DISK_SIZE:
                    part += 1
                    break
                elif count > BD_DISK_SIZE:
                    raise Exception("Превышен максимальный размер диска для части {0}...".format(part))
                bytestring = input.read(BUF_SIZE)
            else:
                break

Поскольку облако не специализированное, подписываю GnuPG подписью получившиеся кусочки для последующего возможного контроля целостности.

Сегодня в процессе проверки подключил внешний жёсткий диск с бэкапами, для самой маленькой резервной копии из недавних посчитал SHA256, восстановил её же из облака вместе с подписями, проверил их, собрал эту инкрементную резервную копию из кусочков, проверил SHA256. Совпали. Последний раз проверял по такой схеме наверно более 10 лет назад, ну и сегодня "на всякий случай" :)

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

Tags:
Total votes 2: ↑1 and ↓10
Comments0

Так совпало, что прочитал сегодня на Хабре о том, что люди, по мнению Google, могут обмениваться своими наработками и подходами к медицине (мнение высказал у себя в сообществе ВКонтакте), также статью о том, что сисадмины не любят делиться своими скриптами по типу "набросал за пару минут, использую и ни с кем не делюсь - там всё просто и каждый то же самое без проблем может сделать", а также сегодня же скриптик написал для подготовки к печати данных по давлению и пульсу из Samsung Health и решил поделиться здесь вполне рабочим решением. Сначала вручную фиксируем давление и пульс в Samsung Health при каждом измерении тонометром (данные по пульсу с фитнес браслета у меня фиксируются автоматически, можно потом обрабатывать так же). Когда нужно, экспортирую в html данные за последние 2 недели, месяц, два или три месяца (для пульса делал ещё сортировку для кардиолога {у меня брадикардия была}). Потом отправляю файл на комп (через поделиться, Samsung с Microsoft здесь дружат) и перетаскиваю полученный файл (данные с давлением и пульсом) на предложенный скрипт ("Для печати кардиологу.js"), или в качестве первого неименованного параметра при запуске указываю путь к полученному файлу (перетаскивание файла/файлов на скрипт {CMD/JS/VBS} в Windows просто передаёт полные пути в качестве аргументов в этот скрипт). Замечу ещё, что у меня в качестве кодировки скриптов на Windows 10 установлена utf-8, для других вариантов параметр -2 вызываемого метода fso не проверял.

var fso=new ActiveXObject("Scripting.FileSystemObject");
var a = WSH.Arguments; if(a.length){
    s = fso.OpenTextFile(fn=(a.UnNamed.Item(0)), 1, false, -2).ReadAll();
    s = s.replace(/(table.tableWithBorder.*font-size:)41px/, "$125px")
        .replace(/ style="min-width:\d+px"/gi, "")
        .replace(/ style="height:113px"/i, "")
        .replace(/ style="height:75px"/gi, "")
        .replace(/(id="tableTitleDiv".*Заметки)/i, "$1");
    s = s.replace(RegExp.$1, RegExp.$1.replace(/width:\d+px;/gi, ""));
    fso.OpenTextFile(fn.replace(/[_.](html)$/, " (вариант для печати).$1"), 2, true, -2).Write(s);
}
В результате получается что-то вроде этого
В результате получается что-то вроде этого

Не говорю, что скрипт идеален, но JS (WSH) был для меня довольно долгое время основным рабочим инструментом, поэтому пользуюсь по старой памяти без особого напряга. Скрипт меняет размер шрифта и таблицу, чтобы она помещалась по ширине на книжную страничку A4.

Tags:
Total votes 1: ↑1 and ↓0+2
Comments2

Довольно давно, когда работал сисадмином, написал пару скриптов, чтобы от обычного ping получить несколько большую информационную отдачу, об этом в видео. Скрипты выложил на GitHub.

Tags:
Total votes 4: ↑2 and ↓2+2
Comments5

На днях опубликовал на GitHub свой скрипт 2013 года, который наполнял с ИБП Ippon Smart Winner 750 базу данных IBM DB2 данными по напряжению сети (за каждую секунду в течение года, по результатам наблюдений скорректировал уставки на реле напряжения, их безопасность для техники подтвердилась при отгорании нуля), обновлял статус моего DynDNS клиента по данным с роутера, запускал и останавливал виртуальную машину VMware Player (там у меня крутилась openSUSE с сайтом на Apache/Django) по расписанию и когда в планировщике BeholdTV была запланирована запись кабельного телевидения (это было необходимо, поскольку видео захватывалось в .asf/x264 - crf18/AC3 без использования графического ускорения и на всё ресурсов не хватало), следил за качеством ADSL линии. А сегодня дополнил ещё рядом скриптов: в 2014 перенёс сайт на Raspberri Pi (Arch Linux ARM) и там стал захватывать IPTV видео. Про захват у меня на Дзене можно почитать, а скрипы создания оглавления и некоторого контроля версии файлов (WSH/JS) опубликовал на GitHub здесь же. Также скрипты по установке времени и некоторой оптимизации скорости отклика сайта, мониторинга доступности посредством Online Domain Tools. Ещё дополнил своими Windows скриптами по работе с СУБД IBM DB2 Express-C и её оптимизации по книге "Best practices Tuning and monitoring database system performance" (она тоже выложена в соответствии с лицензией). Изначально не включил библиотеку RGraph для построения графиков, теперь выложил под лицензией MIT 2013 года.

Tags:
Total votes 1: ↑1 and ↓0+3
Comments0

На днях вышел из строя ИБП. Переключился на стабилизатор. Было уже. До техники APC стоял ИБП Ippon Smart Winner 750. Мониторил напряжение. Сохранял в базе данных SQL сервера IBM DB2 Express-C 10.5 данные за каждую секунду и хранил в течение года. Это помогло выставить уставки на реле напряжения и нормально пережить несколько отгораний нуля без потерь для техники. Скрипты соответствующие опубликовал сегодня на GitHub у себя. При работе от стабилизатора приходилось потом чинить неоднократно SQL базу данных, благо у меня было настроено журналирование в "Архивном" режиме, а сама база данных периодически тестировалась на наличие повреждений. Сложнее с остальной частью данных на компьютере: в NTFS принято частичное журналирование и внезапное отключение ведёт к необходимости решать, восстанавливать ли из бэкапа или соглашаться с тем, что возможно какие-то повреждения будут не сразу обнаружены и могут вызвать проблемы с дальнейшим ремонтом. Чуть раньше такой же пост на Дзене у себя опубликовал.

Tags:
Total votes 1: ↑1 and ↓0+1
Comments0

Information

Rating
9,150-th
Location
Кушва, Свердловская обл., Россия
Date of birth
Registered
Activity