Войти

Показать полную графическую версию : [решено] Бекап дефолтного юзер-профиля браузера Vivaldi


barn
31-05-2019, 18:07
Приветствую всех читающих этот тред.
Пытаюсь написать сценарий резервного копирования и архивации, дефолтного юзер-профиля браузера Vivaldi.
Прошу помощи в написании, а именно: обнаружение и указание на правку грубых, а так же нелепых ошибок,
подсказок в виде оптимального кода, поскольку моё понимание кода, приходит только в визуальном сравнении.
По возможности кратко объяснить или точно, с указанием маршрута, послать в раздел справки или к готовым решениям на форуме.
В идеале - всё отточить, сделать всё по фэн-шуй изящней чем предложено мной.
Началось всё здесь (https://forum.vivaldi.net/post/290631) (сказал - делай), а поскольку мои познания в этой теме чуть выше начальных, пришлось сесть за учебники.
Насыщение и передозировка информацией случилась буквально через пару часов, с начала "обучения".
Тому косвенно способствовали: малое количество или полное отсутствие, для наглядности и усвоения, "живых" примеров, а так же мелкий шрифт изданий.
Через выдачу поисковой системы был найден сайт с авторскими статьями Белый Александра Петровича.
Сайт был благополучно загружен на компьютер, и обучение продолжилось в оффлайне. Но и тут, мало примеров для понимания, что и как работает.
Поэтому, начал параллельно читать и треды здесь, на форуме.
В результате появился скрипт (Альфа), для работы из директорий архиваторов «7-Zip» и «WinRar».
Позже, был скачан пакет «7z-extra» с автономным архиватором 7za (7-Zip), и строку его запуска и работы добавил в скрипт.


cls
@echo off
title Backup profile Vivaldi
setlocal
rem Задаём переменную VIVALDI - Путь к каталогу браузера
set VIVALDI=%LocalAppData%\Vivaldi
rem Задаём переменную END, куда будет помещён архив (например "C:\Users\XXXXX\Documents")
set END=%HomePath%\Documents
rem Задаём переменные для создания имени файла архива из текущей даты и времени
set vdate=%date:~-10%
set vtime=%time:~0,-3%
set vtime=%vtime::=.%
rem Задаём переменную DEFAULT и создаём каталог сбора файлов (например в системной "Temp")
set DEFAULT=%Temp%\Vivaldi\User Data\Default
mkdir "%DEFAULT%\"
rem Копируем нужные нам папки из каталога (точнее из "User Data / Default")
xcopy "%VIVALDI%\User Data\Default\databases" "%DEFAULT%\databases" /s /q /i /v
xcopy "%VIVALDI%\User Data\Default\Extension Rules" "%DEFAULT%\Extension Rules" /s /q /i /v
xcopy "%VIVALDI%\User Data\Default\Extensions" "%DEFAULT%\Extensions" /s /q /i /v
xcopy "%VIVALDI%\User Data\Default\Local App settings" "%DEFAULT%\Local App settings" /s /q /i /v
xcopy "%VIVALDI%\User Data\Default\Local Extension settings" "%DEFAULT%\Local Extension settings" /s /q /i /v
xcopy "%VIVALDI%\User Data\Default\Local Storage" "%DEFAULT%\Local Storage" /s /q /i /v
rem Копируем файлы
copy /v "%VIVALDI%\User Data\Default\Bookmarks" "%DEFAULT%\Bookmarks"
copy /v "%VIVALDI%\User Data\Default\Favicons" "%DEFAULT%\Favicons"
copy /v "%VIVALDI%\User Data\Default\file_mapping.json" "%DEFAULT%\file_mapping.json"
copy /v "%VIVALDI%\User Data\Default\Login Data" "%DEFAULT%\Login Data"
copy /v "%VIVALDI%\User Data\Default\Preferences" "%DEFAULT%\Preferences"
copy /v "%VIVALDI%\User Data\Default\Secure Preferences" "%DEFAULT%\Secure Preferences"
rem Создаём файл "First Run" - маркер для браузера, что первый запуск и настройка произведены
copy nul "%Temp%\Vivaldi\User Data\First Run"
rem Копируем кастомные логотипы сайтов экспресс-панели (задайте свой путь или переменную)
xcopy "%VIVALDI%\IMG" "%Temp%\Vivaldi\IMG" /s /q /i /v
rem Запускаем процесс создания архива
7za.exe a -tzip "%Temp%\backup.zip" "%Temp%\Vivaldi\"
C:
rem Перемещаем готовый архив, с переименованием <дата, время> в каталог юзера
move "%Temp%\backup.zip" "%END%\%vdate%,%vtime%.zip"
rem Удаляем каталог сбора файлов
rmdir /s /q "%Temp%\Vivaldi"
rem Сигнал завершения =))
rundll32 user32,MessageBeep
rem Открытие папки с готовым архивом
explorer "%END%"
endlocal
exit

Вопрос: Если запустить батник не на системном диске, почему то не отрабатывает команда перемещения (38 строка),
хотя отработали предыдущие команды копирования, когда собирались файлы для архива.
Мои действия: пробовал использовать копирование, отменял переименование в процессе перемещения, использовал свой темп (set myTemp=%Temp%).
Вылечил командой "С:", разместив её строкой выше. Но понимание, так и не пришло - вопрос остался.
Текущие состояние:
Сейчас пишу-тестирую скрипт (Бета), в нём будет: Обнаружение и закрытие всех процессов браузера,
Запуск архиватора по результату поиска, 7-Zip или WinRar, и в зависимости от разрядности системы. А если архиваторов нет, то запуск автономного 7za.
Генерация имени архива по текущей дате и времени, на момент создания, плюс билд-номер браузера (пока не решил откуда брать - есть как минимум 4 варианта).
В планах:
Само-обновляемый sfx-архив.
Буду признателен и рад любой помощи.
Спасибо.

barn
02-06-2019, 12:49
Сам отвечу на свой вопрос:
Если запустить батник не на системном диске, почему то не отрабатывает команда перемещения (38 строка) »
Причина, 8-я строка кода set END=%HomePath%\Documents, переменная HOMEPATH разворачивается как "\Users\Имя", без указания буквы диска.
Заменил на USERPROFILE, и всё заработало, правильно будет set END=%UserProfile%\Documents

barn
02-06-2019, 17:25
Финал, продолжение на форуме (https://forum.vivaldi.net/post/298898) Vivaldi.

cls
@echo off
title Backup profile Vivaldi
setlocal
rem Принудительно "гасим" процессы браузера
set "Apps=update_notifier.exe,vivaldi.exe"
:stop
for %%a in (%Apps%) do tasklist | findstr /irc:"^%%a" && (taskkill /f /t /im "%%a"& goto stop)
rem Задаём переменные, Vivaldi - каталог юзер-профиля, vPatch - путь к exe(шнику) браузера
set "Vivaldi=%LocalAppData%\Vivaldi"
set "vPatch=%LocalAppData%\Vivaldi\Application\vivaldi.exe"
rem Задаём переменную End, куда будет помещён архив (здесь"C:\Users\XXXXX\Documents")
set "End=%UserProfile%\Documents"
rem Задаём переменную UserD и создаём каталог сбора файлов (здесь системная "Temp")
set "UserD=%Temp%\Vivaldi\User Data"
mkdir "%UserD%\Default"
rem Копируем папки (расширения, их настройки, настройки браузера)
xcopy "%Vivaldi%\User Data\Default\databases" "%UserD%\Default\databases" /s /q /i /v
xcopy "%Vivaldi%\User Data\Default\Extension Rules" "%UserD%\Default\Extension Rules" /s /q /i /v
xcopy "%Vivaldi%\User Data\Default\Extensions" "%UserD%\Default\Extensions" /s /q /i /v
xcopy "%Vivaldi%\User Data\Default\Local App settings" "%UserD%\Default\Local App settings" /s /q /i /v
xcopy "%Vivaldi%\User Data\Default\Local Extension settings" "%UserD%\Default\Local Extension settings" /s /q /i /v
xcopy "%Vivaldi%\User Data\Default\Local Storage" "%UserD%\Default\Local Storage" /s /q /i /v
rem Копируем кастомные логотипы Экспресс-панели (задайте свой путь)
xcopy "%Vivaldi%\User Data\myLogo" "%UserD%\myLogo" /s /q /i /v
rem Копируем файлы (закладки, логины-пароли, настройки профиля)
copy /v "%Vivaldi%\User Data\Default\file_mapping.json" "%UserD%\Default\file_mapping.json"
copy /v "%Vivaldi%\User Data\Default\Bookmarks" "%UserD%\Default\Bookmarks"
copy /v "%Vivaldi%\User Data\Default\Login Data" "%UserD%\Default\Login Data"
copy /v "%Vivaldi%\User Data\Default\Preferences" "%UserD%\Default\Preferences"
copy /v "%Vivaldi%\User Data\Default\Secure Preferences" "%UserD%\Default\Secure Preferences"
rem Оптимизация (удаление *.ldb - обновляемые данные расширений, сайтов и настроек пользователя)
rem erase "%UserD%\*.ldb" /f /s /q
rem Копируем "First Run" (маркер - первый запуск и настройка произведены)
copy /v "%Vivaldi%\User Data\First Run" "%UserD%\First Run"
rem Задаём переменные для создания имени файла архива - из билда, даты и времени
set "vBuild=%vPatch:\=\\%"
wmic Datafile where name="%vBuild%" get Version /format:Textvaluelist >"%UserD%\First Run"
<"%UserD%\First Run" (for /f "tokens=2 delims==" %%a in ('more') do set "outBuild=%%a")
rem set "arcDT=%date: =0% %time: =0%"
rem for /f "tokens=1-7 delims=/-:., " %%a in ("%arcDT%") do (set arcDT=%%c-%%b-%%a_%%d.%%e.%%f)
for /f "delims=." %%i in ('wmic OS get LocalDateTime ^| find "."') do set osDT=%%i
set "aYear=%osDT:~0,4%"
set "aMonth=%osDT:~4,2%"
set "aDay=%osDT:~6,2%"
set "aHour=%osDT:~8,2%"
set "aMin=%osDT:~10,2%"
set "aSec=%osDT:~12,2%"
set "arcDT=%aYear%-%aMonth%-%aDay%_%aHour%.%aMin%.%aSec%"
set "arcName=Default [%outBuild%] %arcDT%"
rem Определяем разрядность системы, ищем архиватор "7-Zip" или "WinRar"
if %Processor_Architecture% == x86 (if not defined Processor_ArchiteW6432 goto bit32)
goto bit64
:bit32
path "%ProgramFiles%\7-Zip\";"%ProgramFiles%\WinRAR\"
goto cont
:bit64
path "%ProgramW6432%\7-Zip\";"%ProgramFiles(x86)%\7-Zip\";"%ProgramW6432%\WinRAR\";"%ProgramFiles(x86)%\WinRAR\"
:cont
rem Запускаем процесс создания и перемещения архива, с переименованием в каталог юзера
7z a -t7z "%Temp%\backup.7z" "%Temp%\Vivaldi" && move "%Temp%\backup.7z" "%End%\%arcName%.7z"
if errorlevel 1 (Rar a -ep1 -r "%Temp%\backup.rar" "%Temp%\Vivaldi" && move "%Temp%\backup.rar" "%End%\%arcName%.rar") ^
|| (7za a -tzip "%Temp%\backup.zip" "%Temp%\Vivaldi" && move "%Temp%\backup.zip" "%End%\%arcName%.zip")
path;
rem Удаляем каталог сбора файлов
rmdir /s /q "%Temp%\Vivaldi"
endlocal
rem Сигнал завершения =))
rundll32 user32,MessageBeep
rem Открытие папки с готовым архивом
explorer "%UserProfile%\Documents"
timeout 3
exit




© OSzone.net 2001-2012