LINUX.ORG.RU

bindfs и все-все-все

 , , ,


0

1

Полезная штука эта bindfs...
Т.к. про bindfs на LOR что-то мало, дарю сообществу полезный (кмк) скрипт dir2squash:

#!/bin/bash
USAGE() {
echo "Use: $(basename $0) [-h] [-p permission] [-o outfile] sourcedir
Options:
	-h	- Help and exit;
	-p	- Permission (default: a=wrX)
		  e.g. og-x,og+rD,u=rwX,g+rw or 0644,a+X ;
	-o 	- Output file."
}
#====================================================
while getopts ":hp:o:" opt_name 
do
  case "$opt_name" in
	"h")	USAGE; exit 2 ;;
	"p")	p="-p ${OPTARG}" ;;
	"o")	o="${OPTARG}" ;;
	":")	USAGE; exit 1 ;;
	"?") 	echo "Unknown option: '-${OPTARG}'"; USAGE; exit 1 ;;
  esac
done
shift "$((OPTIND-1))"
[ $# -eq 0 ] && echo "Error: missing sourcedir." && USAGE && exit 3
sourcedir=$1
echo "sourcedir: "${sourcedir}""
[ ! -d "${sourcedir}" ] && echo "Error: sourcedir is not a directory." && USAGE && exit 4

name=$(basename "$1")
[ -n "${p}" ] || p='-p a=wrX'
[ -n "${o}" ] || o="/tmp/${name}-$(date +%F_%H%M%S).lz4.squash"

wrk=$(mktemp -d) # дир. куда будем монтировать с помощью bindfs для подмены прав
bindfs -o ro ${p} --no-allow-other "${sourcedir}" "${wrk}"
mksquashfs "${wrk}" "${o}" -comp lz4 -b 1M -all-root -no-xattrs && echo "out: ${o}"
fusermount -u -z "${wrk}"
rm -Rf "${wrk}"
P.s.: Жду патчи к сему и советы как правильно пейсать на bash.

★★★★☆

Последнее исправление: superuser (всего исправлений: 6)

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

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

bindfs какой-то костыль.

Spoofing ★★★★★
()
Ответ на: комментарий от Spoofing

bindfs какой-то костыль

искал как подменить права без лишних копрований и прочего и нашёл только bindfs

superuser ★★★★☆
() автор топика
Ответ на: комментарий от Spoofing

и да, кмк mksquashfs не полноценный т.к. -force-uid и -force-gid есть, а -force-perm отсутствует

superuser ★★★★☆
() автор топика
Ответ на: комментарий от Siborgium

overlayfs

не имеет опций для подмены прав на лету, и смена прав на файлы в merged влечёт копирование их в upperdir, что нам не надо, т.к. обьёмы м.б. большими и вообще всё м.б. ro

man mount, секции –bind

не нашёл там ничего подходящего

A вот bindfs умеет подменять права «на лету»

superuser ★★★★☆
() автор топика
Последнее исправление: superuser (всего исправлений: 1)
Ответ на: комментарий от superuser

не имеет опций для подмены прав на лету, и смена прав на файлы

Проглядел это условие. Гугли user namespaces и отображение id/gid.

Предвосхищая вопрос «зачем все это, если есть bindfs»: это а) значительно быстрее и не требует fuse б) юниксвейно.

Siborgium ★★★★★
()
Ответ на: комментарий от superuser

не имеет опций для подмены прав на лету, и смена прав на файлы в merged влечёт копирование их в upperdir, что нам не надо, т.к. обьёмы м.б. большими и вообще всё м.б. ro

rwx

       metacopy={on|off}
           When metadata only copy up feature is enabled, overlayfs will only copy up metadata (as opposed to whole
           file), when a metadata specific operation like chown/chmod is performed. Full file will be copied up later
           when file is opened for WRITE operation.

           In other words, this is delayed data copy up operation and data is copied up when there is a need to
           actually modify data.
Siborgium ★★★★★
()
Ответ на: комментарий от Siborgium

Ну так bindfs «на лету» это делает, а с overlayfs надо ещё всё chmode-ить и где-то место выделять для upperdir, не, это не годится

superuser ★★★★☆
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.