Сайт | Скачать | Видео | Wiki

Автор Тема: Новый скрипт sync2layer  (Прочитано 7881 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн betcher

  • Модератор
  • Ветеран
  • ****
  • Сообщений: 3019
  • Репутация: +35/-0
  • Автор темы
    • MagOS linux
Новый скрипт sync2layer
« : 02 Февраль 2017, 19:26:16 »
https://github.com/pfs-utils/pfs-utils-cli/blob/master/project-files/usr/bin/sync2layer
Новый скрипт. Идея совместно с Антоном, на основе PUPSTATE-13.
sync2layer file.rom    (или file.img)
Создает файл-образ с ext3, подключает в aufs и далее переносит в него из changes все что можно безбоязненно перенести, освобождая память и делая по сути img файл с изменениями.
sync2layer file2.rom
создаст второй файл и в нем будут только те изменения которые случились с момента предыдущей синхронизации
sync2layer dir
все аналогично только с каталогом
sync2layer
только синхронизация в последний из подключенных слоев

Можно использовать для освобождения памяти, для создания сохраненок, для создания модулей из changes очищенных от стартовых изменений.
Все пока сыро, но работает вроде.
P.S. Нужно в libpfs заполнить changesDir=, не знаю какой у Вас путь.
« Последнее редактирование: 04 Февраль 2017, 09:39:05 от sfs »

Оффлайн DdShurick

  • Это Риччи
  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 8635
  • Репутация: +187/-2
  • Старый чайник
Re: Новый скрипт sync2 (название не окончательное)
« Ответ #1 : 02 Февраль 2017, 20:26:10 »
Новый скрипт.
Старый скрипт mksavesfs:
Код
#!/bin/sh
# DdShurick GPL-v2 18.03.16 for Richy initrd_mnt
if [ "$(id -u)" != 0 ]; then
loginroot $0
exit
fi
#Задаём переменные
. /etc/initvars
SAVEPATH=/mnt/${PDEV}${PDIR}/base

[ "$(grep $PDEV /proc/mounts)" ] || mount /dev/$PDEV /mnt/$PDEV
#Последовательно копируем 2 1 0 слои
mkdir -p /tmp/savesfs-root
[ "$(grep "save_sq " /proc/mounts)" ] && cp -a /$SYSMNT/bundles/save_sq/* /tmp/savesfs-root/
[ "$(grep "save_ext " /proc/mounts)" ] && cp -a /$SYSMNT/bundles/save_ext/* /tmp/savesfs-root/
cp -a $(ls -d /$SYSMNT/changes/[!dimstv]*) /tmp/savesfs-root/
#echo false > /tmp/savesfs-root/etc/.XLOADED
#Удаляем "затенённые" (отмеченные как удалённые) файлы и каталоги.
find /tmp/savesfs-root -mindepth 2 -name .wh.* | while read WH
do
F=$(echo $WH | sed 's/\/tmp\/savesfs-root//;s/.wh.//g')
if [ -e "/initrd/pup_rw$F" ]; then
rm $WH #если удалённый файл заново создан, удаляем .wh.*
else
[ -e "/tmp/savesfs-root$F" ] && rm -r /tmp/savesfs-root$F #если ранее сохранённый файл удалён, удаляем его.
fi # если .wh.* относится к нижним слоям - ничего не делаем
done
#Создаём новый файл сохранения
mv $SAVEPATH/${DISTRO_FILE_PREFIX}-save.sfs $SAVEPATH/${DISTRO_FILE_PREFIX}-save.sfs.old
mksquashfs /tmp/savesfs-root/ $SAVEPATH/${DISTRO_FILE_PREFIX}-save.sfs -comp xz && rm -r /tmp/savesfs-root
Можете брать идеи.
Моноблок Lenovo IdeaCentre c200 (Intel Atom D525, Intel GMA 3150, 2 Gb RAM) Richy64
Nettop Acer Aspire Revo R3610 (Atom N330, nVidia GeForce 9400, 3 Gb RAM) Richy64

Оффлайн betcher

  • Модератор
  • Ветеран
  • ****
  • Сообщений: 3019
  • Репутация: +35/-0
  • Автор темы
    • MagOS linux
Re: Новый скрипт sync2 (название не окончательное)
« Ответ #2 : 02 Февраль 2017, 20:33:21 »
Можно взять кусок по .wh файлам. Честно говоря не знаю как правильно поступать с ними именно в моей затее. Пока просто фильтрую и не трогаю.
В магос есть способ создать модуль из изменений, но все это работает только при выключении, чтоб лишнего хлама не попало.

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 33965
  • Репутация: +231/-0
    • PuppyRus-A
Re: Новый скрипт sync2 (название не окончательное)
« Ответ #3 : 03 Февраль 2017, 09:08:32 »
Сложновато. Скрипт создания сохраненки.pfs из changes в ПРА есть. Исторический, без деления cli gui. Переделка ему бы не помешала. Если у Вас нет - надо сделать. Это надо обязательно
Я делаю проще - пакеты ставлю в систему - pacman2pfs + pfsload
Остальное решается симлинками
Опять же - опытные сами разберутся. Начинающим про этот скрипт надо 2 листа в вики написать - не будут читать

Оффлайн betcher

  • Модератор
  • Ветеран
  • ****
  • Сообщений: 3019
  • Репутация: +35/-0
  • Автор темы
    • MagOS linux
Re: Новый скрипт sync2 (название не окончательное)
« Ответ #4 : 03 Февраль 2017, 10:14:42 »
Если у Вас нет - надо сделать. Это надо обязательно
На горячую корректно сделать модуль из changes не возможно. Элементарный пример программа, которая пишет свой конфиг при выключении. При создании модуля конфиг будет без последних изменений. Фалы устройств, файлы.pid, пайпы и прочее. Корректно сделать модуль из changes можно только из rc.halt и чем позже тем лучше. Вот это в магос есть.
Я делаю проще - пакеты ставлю в систему - pacman2pfs + pfsload
Я тоже так делаю с поправкой на urpm2lzm, но скрипт не об этом.

Опять же - опытные сами разберутся. Начинающим про этот скрипт надо 2 листа в вики написать - не будут читать
Я вроде не начинающий, но чтоб провернуть это и не сломать aufs два вечера потратил.
Скрипт решает некоторые моменты, которые до него решались либо костылями либо никак. Например во многом заменяет addmemory и syschanges, при том что это в общем разные вещи.
Еще раз попытаюсь донести идею.
1. Скрипт освобождает доступное место в верхнем слое aufs, которое по понятным причинам ограничено в чистом режиме, за счет переноса файлов в предпоследний слой. Как вы это сейчас решаете? Тем более без аналога addmemory.
2. Скрипт позволяет отделить "фоновые изменения", то есть то что пишет система при загрузке, от тех изменений которые вы действительно хотели бы сохранить. Как вы это делаете? У нас есть в вики древняя инструкция  по отделению. Подивитесь если интересно, тот еще геморр.
3. В отличии от pacman2pfs позволяет установить пакет(ы), настроить и только потом собрать модуль. Я это делаю с syschanges, а вы как?
4. Совершенно так же как в п.3 можно сделать модуль при установке софта из исходников, что тоже не всегда просто сделать.
Думаю и еще найдутся юзкейсы.
« Последнее редактирование: 03 Февраль 2017, 10:24:51 от betcher »

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 33965
  • Репутация: +231/-0
    • PuppyRus-A
Re: Новый скрипт sync2 (название не окончательное)
« Ответ #5 : 03 Февраль 2017, 11:07:26 »
На горячую корректно сделать модуль из changes не возможно. Элементарный пример программа, которая пишет свой конфиг при выключении.
Просто закрыть эту прогу
Фалы устройств, файлы.pid, пайпы
Создадутся по новой
У нас многие юзают такой скрипт - никто особо не обламывался. У нас правдо DE не сложнее XFCE
На крайняк можно отладить сохраненку в папку и mksquashfs ее
Вообще в save.pfs пихать что-то кроме своих настроек - нецелесообразно
Я вроде не начинающий, но чтоб провернуть это и не сломать aufs два вечера потратил.
Вот именно - юзерам такое без шансов. Но это не значит, что я отговариваю вас делать. Просто делюсь своим опытом
1. Решаю:
пакеты ставлю в систему - pacman2pfs + pfsload
Остальное решается симлинками
2. Если я Вас правильно понял - в ПРА это делает сам скрипт create-save-pfs (совсем не идеален). Там можно выбрать что сохранять
3. pacman2pfs делаю модули софта, настраиваю, делаю save.pfs "только настройки"
4. Компилю пакеты стандартно - далее п.3. У нас редкие юзера до такого доходят
« Последнее редактирование: 03 Февраль 2017, 11:10:42 от sfs »

Оффлайн betcher

  • Модератор
  • Ветеран
  • ****
  • Сообщений: 3019
  • Репутация: +35/-0
  • Автор темы
    • MagOS linux
Re: Новый скрипт sync2 (название не окончательное)
« Ответ #6 : 03 Февраль 2017, 11:25:55 »
Помогите лучше с названием. Всякая чушь в голову лезет.
Если считаете, что в pfs-utils такой скрипт не нужен, перепишу без привязки к pfs-utils и перенесу в нашу репу.

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 33965
  • Репутация: +231/-0
    • PuppyRus-A
Re: Новый скрипт sync2 (название не окончательное)
« Ответ #7 : 03 Февраль 2017, 11:31:57 »
Помогите лучше с названием
В ПРа  create-save-pfs. Можно changes2pfs
Или я не понял - скрипт не простое создание save.pfs...
Если считаете, что в pfs-utils такой скрипт не нужен
Т.к. changes в pfs-util стандартизирован переменной - лучше делать в рамках pfs-util. 
Остальное - не более чем мое личное мнение, основанное на моем опыте, которое я не готов кому-то навязывать
Чем больше стандартов и общих скриптов тем больше разрабов и тестеров - тем лучше всем
« Последнее редактирование: 03 Февраль 2017, 11:33:42 от sfs »

Оффлайн betcher

  • Модератор
  • Ветеран
  • ****
  • Сообщений: 3019
  • Репутация: +35/-0
  • Автор темы
    • MagOS linux
Re: Новый скрипт sync2 (название не окончательное)
« Ответ #8 : 03 Февраль 2017, 11:42:20 »
Или я не понял - скрипт не простое создание save.pfs...
Он вообще pfs не делает. В pfs нельзя дописать. Слоем может быть папка или образ. А уже из них при желании можно и pfs делать.
Он создает второй (после changes) слой, подключает его, и уже в подключенный переносит файлы из changes.

sync2layer
sync2l
second-layer-tool
s-layer
что-то вроде этого вертится.

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 33965
  • Репутация: +231/-0
    • PuppyRus-A
Re: Новый скрипт sync2 (название не окончательное)
« Ответ #9 : 03 Февраль 2017, 11:50:19 »
sync2layer
норм
Хорошо бы отдельно скрипт переноса changes в куда-укажут. Тогда changes2dir
Если еще с ключами "только настройки" и т.п. будет - может и я сподвигнусь навести порядок в create-save-pfs

Оффлайн betcher

  • Модератор
  • Ветеран
  • ****
  • Сообщений: 3019
  • Репутация: +35/-0
  • Автор темы
    • MagOS linux
Re: Новый скрипт sync2 (название не окончательное)
« Ответ #10 : 03 Февраль 2017, 11:53:17 »
норм
Ок, пусть будет sync2layer
Хорошо бы отдельно скрипт переноса changes в куда-укажут
Ну скрипт практически это и делает. Или теперь я Вас не понимаю :) ?

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 33965
  • Репутация: +231/-0
    • PuppyRus-A
Re: Новый скрипт sync2 (название не окончательное)
« Ответ #11 : 03 Февраль 2017, 11:56:59 »
скрипт практически это и делает.
Ну и отлично. Отдельно скопировали changes
Отдельно сделали пфс или подключили или что угодно

Оффлайн DdShurick

  • Это Риччи
  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 8635
  • Репутация: +187/-2
  • Старый чайник
Re: Новый скрипт sync2 (название не окончательное)
« Ответ #12 : 03 Февраль 2017, 14:55:15 »
скрипт переноса changes в куда-укажут.
Код
cp -a /$SYSMNT/changes/* /куда-то-туда/dir/ 
с ключами "только настройки"
Я уже приводил пример простейшего фильтра.
Моноблок Lenovo IdeaCentre c200 (Intel Atom D525, Intel GMA 3150, 2 Gb RAM) Richy64
Nettop Acer Aspire Revo R3610 (Atom N330, nVidia GeForce 9400, 3 Gb RAM) Richy64

Оффлайн neobht

  • Ветеран
  • *****
  • Сообщений: 1031
  • Репутация: +15/-0
Re: Новый скрипт sync2 (название не окончательное)
« Ответ #13 : 03 Февраль 2017, 16:31:34 »
Скрипт просто потрясающий!!!
5 лет к нему шли и наконец пришли! :)

Оффлайн betcher

  • Модератор
  • Ветеран
  • ****
  • Сообщений: 3019
  • Репутация: +35/-0
  • Автор темы
    • MagOS linux
Re: Новый скрипт sync2 (название не окончательное)
« Ответ #14 : 03 Февраль 2017, 19:31:34 »
Скрипт просто потрясающий!!!
На счет скрипта не уверен, надо еще напильником обработать. А вот сама идея и впрямь  - огонь