Идея: Компактный индекс съёмного носителя.
Реализация: Делать дырявую копию дерева каталогов/файлов - сохраняя владельцев/время/права доступа. Затем делать .sq из этого дерева и при желании иметь возможность подмонтировать и посмотреть это дерево.
В течение 25+ лет работы ИТшником - набралось масса барахла на съёмных носителях. Есть куча флешек, куча винтов... Надо это как то индексировать.
Изначально спрашивал в Админ форуме. Думал это уже реализовано - но никто не подсказал пруфлинков. Лишь некий driano32 в Ветке: Создать ISO со служебной информацией из дерева каталогов. Чем? дал простейший скрипт генерящий дерево дырок. Но работает оно очень долго....
Мог бы кто то реализовать эту идею в одной программе на скриптовом языке? У меня в экспериментах это стало выглядеть
tree-hole.sh:
#!/bin/sh
#Упаковка Фантома каталога
timestamp=`date +%y%m%d-%H%M%S`
echo $timestamp
if [ "$1" = "" ]; then
echo "Запускать надо так: $0 <Каталог> <Архив/дырка>"
else
echo "Аргументы = $1 $2"
fi
DIR_PREFIX="/opt/pub/_T3T/Data/tree-$2"
SOURCE=$1
TARGET=$2
CUR_DIR=`pwd`
if [ -d "$DIR_PREFIX" ]; then
echo $DIR_PREFIX" is already created, skipping."
else
mkdir "$DIR_PREFIX"
chmod -fR 755 "$DIR_PREFIX"
fi
echo '#/bin/sh' > "$DIR_PREFIX/mod_script"
echo 'DIR_PREFIX='$DIR_PREFIX >> "$DIR_PREFIX/mod_script"
echo 'if [ -f "$1" ]; then' >> "$DIR_PREFIX/mod_script"
echo ' attrib=`stat -c %a -- "$1"`' >> "$DIR_PREFIX/mod_script"
echo ' owner=`stat -c %U -- "$1"`' >> "$DIR_PREFIX/mod_script"
echo ' group=`stat -c %G -- "$1"`' >> "$DIR_PREFIX/mod_script"
echo ' size=`stat -c %s -- "$1"`' >> "$DIR_PREFIX/mod_script"
echo 'dd if=/dev/null of="$DIR_PREFIX/$1" bs=1 seek=$size && chown $owner:$group -- "$DIR_PREFIX/$1" && chmod $attrib -- "$DIR_PREFIX/$1"' >> "$DIR_PREFIX/mod_script"
echo 'fi' >> "$DIR_PREFIX/mod_script"
find $SOURCE -type d -exec mkdir "$DIR_PREFIX"/"{}" \;
find $SOURCE -type f -exec sh "$DIR_PREFIX/mod_script" "{}" \;
rm -f $DIR_PREFIX/mod_script
#genisoimage -allow-leading-dots -allow-lowercase -allow-multidot -iso-level 4 -l -o `date +%s`.iso "$DIR_PREFIX"
echo Start: $timestamp|tee -a $2.time
timemid=`date +%y%m%d-%H%M%S`
echo Mid: $timemid|tee -a $2.time
mksquashfs "$DIR_PREFIX/$1" $2.sq
timeend=`date +%y%m%d-%H%M%S`.
echo End: $timeend|tee -a $2.time
###Fucking Sheet rm -rf $DIR_PREFIX
Небольшой каталог в 32Gb оно за 6 минут ужимает в 69килобайтный .sq,а вот 1.7Тб каталог крутит со вчерашнего вечера...
Может кто поддержит и реализует эту идею? Тогда у общественности появится механизм индексации носителей
Этот механизм можно потом и развить - скажем добавляя в дерево md5 суммы файлов исходного каталога и получить механизм верификации изменений в ФС. Можно так и хранить долгоживущую дырку и инкрементально апдейтить хэши в ней.
Вот как то так...
P.S. Пробовал разные каталогизаторы (не помню всех имён), но ни один из них (даже cdcat из официального Debian репозитария) не смог переварить дерево 1.7Тб и кажется даже дерево 500Гб.
Просто работал, работал, работал и вдруг умирал...