Pull to refresh

Google Chrome и RamDisk. Автоматизация, бэкап и автообновление

Reading time 5 min
Views 15K
Прочитав статью Отучаем Chrome кушать винчестеры, у меня появилась идея использовать рамдиск не только для Хрома, но и для многих других часто запускаемых приложений (WinRAR, Miranda, Firefox, веб-сервер, и т.п.).

Идеей я воспользовался, и остался очень доволен возросшей скоростью работы моего ноута (1000 мб/с против 35 мб/с!). Единственное, что потребовалось – сделать автоматический бэкап изменившихся файлов на рамдиске.

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

В этой статье я затрону только браузер Chrome.

Итак, используем Chrome на рамдиске.

Что нам для этого нужно?
1) Автозагрузка Chrome на рамдиск при старте системы
2) Автобэкап на жесткий диск при закрытии Хрома
3) Автобэкап каждый час
4) Автообновление браузера из интернетов

Нам потребуется:
nnCron, nnBackup (обязательно зарегистрировать!), WinRAR, Gavotte Ramdisk, Wget, побольше оперативки.

Сначала устанавливаем все эти программы. Создаём рамдиск R:\.

Затем на жесткий диск распаковываем дистрибутив Хрома в D:\BackUp\Programs\Chromium\Chrome.
Создаем ярлык к исполняемому файлу chrome.exe, в котором дополнительно указываем в поле «Объект»: «R:\Programs\Chromium\Chrome\chrome.exe --user-data-dir=..\Profile --enable-user-scripts», и в поле «Рабочая папка»: «R:\Programs\Chromium\Chrome» (всё без кавычек).
Ярлык помещаем на рабочий стол и/или в панель быстрого запуска, в дальнейшем им и будем запускать браузер.

В итоге, как все должно работать:
Во время входа пользователя в систему, nnCron будет загружать Хром вместе с профилем из папки D:\BackUp\Programs\Chromium на рамдиск в папку R:\Programs. Работать Хром будет с рамдиска. Бэкап будет инкрементальный, в D:\BackUp.

Первый скрипт:

#( BIG_START
AsLoggedUser
SingleInstance
WatchLogon: "*"
Action:
SWHide
AsService
StartIn: "R:\Programs\nnBackup\"
START-APPW: R:\Programs\nnBackup\nnbackup.exe sync -i D:\BackUp\Programs\Chromium -o R:\Programs\Chromium -s -c -x chrome.exe -dx cache
START-APP: R:\Programs\nnBackup\nnbackup.exe sync -i D:\BackUp\Programs\Chromium\Chrome -o R:\Programs\Chromium\Chrome -c -m chrome.exe
START-APP: R:\Programs\nnBackup\nnbackup.exe sync -i D:\BackUp\Programs\Chromium\Profile\Default\Cache -o R:\Programs\Chromium\Profile\Default\Cache -c
)#


Тут всё очень просто: а) на рамдиск загружается папка с Хромом и профлем, без исполняемого файла и кэша; б) загружается сам исполняемый файл. Это сделано для того чтобы не запустить хром, пока все файлы до конца не скопировались; в) в конце грузится кэш. Он долго копируется, и нам нет смысла ждать. Можно сразу открывать странички в инететах, кэш подгрузится спустя минуту-две.

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

Следующий скрипт бэкапит файлы профиля, когда Хром закрывается. Бэкап инкрементальный, т.е. бэкапятся только изменённые и новые файлы:

#( BackUp_Chromium
AsLoggedUser
SingleInstance
WatchProcStop: "chrome.exe"
Rule: PROC-EXIST: "chrome.exe" NOT
Action:
SWHide IdlePriority
AsService
StartIn: "R:\Programs\nnBackup\"
START-APP: R:\Programs\nnBackup\nnbackup.exe sync -i R:\Programs\Chromium -o D:\BackUp\Programs\Chromium -s -ad -c -m "Bookmarks,Cookies,Current*,Extension Cookies,History,Last*,Preferences,Thumbnails,Visited Links,Web Data,*.bdic,Local State,Safe Br*,Chrome\Plugins\*.dll"
START-APPW: R:\Programs\nnBackup\nnbackup.exe sync -i R:\Programs\Chromium\Profile\Default -o D:\BackUp\Programs\Chromium\Profile\Default -s -ad -da -c -m "Cached Theme Images\*,Extensions\*,JumpListIcons*\*,User scripts\*"
START-APP: R:\Programs\nnBackup\nnbackup.exe sync -i R:\Programs\Chromium\Profile\Default\Cache -o D:\BackUp\Programs\Chromium\Profile\Default\Cache -ad -da -c
)#


Еще скрипт, который каждый час бэкапит Хром на винт:

#( BackUp_One_Hour
AsLoggedUser
SingleInstance
Time: 0 * * * * *
Action:
SWHide IdlePriority
AsService
StartIn: "R:\Programs\nnBackup\"
START-APP: R:\Programs\nnBackup\nnbackup.exe sync -i R:\Programs -o D:\BackUp\Programs -s -ad -c -m "Bookmarks,Cookies,Current*,Extension Cookies,History,Last*,Preferences,Thumbnails,Visited Links,Web Data,*.bdic,Local State,Safe Br*,Chromium\Chrome\Plugins\*"
START-APPW: R:\Programs\nnBackup\nnbackup.exe sync -i R:\Programs -o D:\BackUp\Programs -s -ad -da -c -m "Chromium\*\Cached Theme Images\*,Chromium\*\Extensions\*,Chromium\*\JumpListIcons*\*,Chromium\*\User scripts\*"
START-APP: R:\Programs\nnBackup\nnbackup.exe sync -i R:\Programs\Chromium\Profile\Default\Cache -o D:\BackUp\Programs\Chromium\Profile\Default\Cache -ad -da -c
)#


И последний скрипт, который обновляет Хром два раза в неделю:

#( Update_Chromium
AsLoggedUser
SingleInstance
Time: 0 21 * * 3,7 *
Action:
SWHide IdlePriority
AsService
StartIn: "D:\BackUp\Wget\"
DIR-DELETE: "R:\Updates\Chromium"
START-APPW: D:\BackUp\Wget\wget.exe build.chromium.org/buildbot/continuous/LATEST/chrome-win32.zip -P R:\Updates\Chromium\ -c --limit-rate=32k --wait=2m --tries=60
FILE-EXIST: "R:\Updates\Chromium\chrome-win32.zip" NOT
IF
LOG: "D:\BackUp\Programs\update.log" "Ошибка загрузки chrome-win32.zip [%FT-CUR FT>DD.MM.YYYY/hh:mm:ss%]"
EXIT
THEN
START-APPW: R:\Programs\WinRAR\WinRAR.exe t R:\Updates\Chromium\chrome-win32.zip -r -y
ExitCodeProc 0 <>
IF
LOG: "D:\BackUp\Programs\update.log" "Ошибка в архиве chrome-win32.zip [%FT-CUR FT>DD.MM.YYYY/hh:mm:ss%]"
EXIT
THEN
START-APPW: R:\Programs\WinRAR\WinRAR.exe x R:\Updates\Chromium\chrome-win32.zip R:\Updates\Chromium\ -y
ExitCodeProc 0 <>
IF
LOG: "D:\BackUp\Programs\update.log" "Ошибка распаковки chrome-win32.zip [%FT-CUR FT>DD.MM.YYYY/hh:mm:ss%]"
EXIT
THEN
PAUSE: 10000

START-APPW: R:\Programs\nnBackup\nnbackup.exe sync -i R:\Updates\Chromium\chrome-win32 -o D:\BackUp\Programs\Chromium\Chrome -s -ad -da -c -dx Dictionaries,locales,Plugins,resources
START-APPW: R:\Programs\nnBackup\nnbackup.exe -i R:\Updates\Chromium\chrome-win32\locales\ru.dll -o D:\BackUp\Programs\Chromium\Chrome\locales -c
LOG: "D:\BackUp\Programs\update.log" "chrome-win32.zip [%FT-CUR FT>DD.MM.YYYY/hh:mm:ss%]"

BEGIN PAUSE: 500 PROC-EXIST: "chrome.exe" NOT UNTIL
BEGIN FILE-DELETE: "R:\Programs\Chromium\Chrome\chrome.exe" PAUSE: 1000 FILE-EXIST: "R:\Programs\Chromium\Chrome\chrome.exe" NOT UNTIL

START-APPW: R:\Programs\nnBackup\nnbackup.exe sync -i R:\Updates\Chromium\chrome-win32 -o R:\Programs\Chromium\Chrome -s -ad -da -c -x chrome.exe -dx Dictionaries,locales,Plugins,resources
START-APPW: R:\Programs\nnBackup\nnbackup.exe -i R:\Updates\Chromium\chrome-win32 -o R:\Programs\Chromium\Chrome -s -c -m chrome.exe,locales\ru.dll
DIR-DELETE: "R:\Updates\Chromium"
)#


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

Вот и всё!
Правьте пути для запуска программ в скриптах под себя.
Tags:
Hubs:
+27
Comments 49
Comments Comments 49

Articles