Jump to content
XPEnology Community

Индексация Synolodgy:РЕШЕНИЕ


Recommended Posts

Все мы знаем что synology не умеет сама индексировать файлы на лету!

Для этого были разработаны два пакета: Media Indexer и inotify-tools и доступны к скачиванию по репозиторию http://synology.francis-besset.com/, с помощью которых все само обновлялось и было очень удобно.

Но что делать если нет возможности или нет разработанных под Ваш сервак этих файлов, именно с этим я и сталкнулся установив DS3617xs-v1.02a2--DSM 6.1.1-Update2!!!

Поискав на прасторах инета наткнулся на несколько забугорных сайтов с теми же проблемами.

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

Что требуется, а именно - нужно создать скрипт и добавить демона для индексации, для которого необходимо выполнить действие с базой данных и индексирование мультимедиа при полной индексации автоматов.

Для чего нужен скрипт?

Чтобы это обновление Auto update update индексировало любые действия с файлами: (по текущему inotify synoinex не может индексировать). Например, если вы копируете в мультимедийные директории из, transmission, video, photo, music таких как mkv, avi , mp3 -- файлы остаются незамеченными, а при автоматической индексации эти фалы становяться видны в программах таких как Video Station, Photo Station, сервер мультимедиа, и т/д.

Переходим к практике:

КАК:

Шаг 1:

Добавьте этот sh в index`s для старта synology

Создать файл с текстом в пути: /usr/local/etc/rc.d/S92_mediaindex.sh с chrown do "exec" right`s

#!/bin/sh
#
# update all indexes in db on syno
# NO MORE FULL reindex and etc
# by manslife 2010-11-13

case "$1" in
 start|"")

#
# input dirs
mkdir -p /tmp/mediaindex
music="/volume1/music"
video="/volume1/video"
photo="/volume1/photo"

# Setup find correctly.
export IFS=$'\n'

#sleep 10
echo `date` "Autoindex start indexing: " >> /var/log/messages
# Loop through our array.
for x in $music $video $photo
  do

if [ "$x" == "/volume1/music" ]; then
nn="music"
fi
if [ "$x" == "/volume1/video" ]; then
nn="video"
fi
if [ "$x" == "/volume1/photo" ]; then
nn="photo"
fi

# Find all directories & subdirectories
/opt/bin/find $x -type d -wholename '*' ! -wholename */@eaDir* > /tmp/mediaindex/$nn.dir
/opt/bin/sort /tmp/mediaindex/$nn.dir -o /tmp/mediaindex/$nn.dir

/usr/syno/pgsql/bin/psql mediaserver admin -tA -c "select path from directory where path like '$x%'" > /tmp/mediaindex/$nn-pgsql.dir
/opt/bin/sort /tmp/mediaindex/$nn-pgsql.dir -o /tmp/mediaindex/$nn-pgsql.dir

# Find all Files and exclude win files
/opt/bin/find $x -type f -wholename '*' ! -wholename */@eaDir* ! -name '*.ini' ! -name '*.db' ! -name '*.sys' ! -name '*.zip' ! -name '*.ra?' > /tmp/mediaindex/$nn.file
/opt/bin/sort /tmp/mediaindex/$nn.file -o /tmp/mediaindex/$nn.file

/usr/syno/pgsql/bin/psql mediaserver admin -tA -c "select path from $nn where path like '$x%'" > /tmp/mediaindex/$nn-pgsql.file
/opt/bin/sort /tmp/mediaindex/$nn-pgsql.file -o /tmp/mediaindex/$nn-pgsql.file

# Looking + -
/opt/bin/diff /tmp/mediaindex/$nn.dir /tmp/mediaindex/$nn-pgsql.dir |grep "<"|cut -c3-9000 > /tmp/mediaindex/$nn-dif-ON.dir
/opt/bin/diff /tmp/mediaindex/$nn.file /tmp/mediaindex/$nn-pgsql.file |grep "<"|cut -c3-9000 > /tmp/mediaindex/$nn-dif-ON.file

/opt/bin/diff /tmp/mediaindex/$nn.dir /tmp/mediaindex/$nn-pgsql.dir |grep ">"|cut -c3-9000 > /tmp/mediaindex/$nn-dif-OFF.dir
/opt/bin/diff /tmp/mediaindex/$nn.file /tmp/mediaindex/$nn-pgsql.file |grep ">"|cut -c3-9000 > /tmp/mediaindex/$nn-dif-OFF.file
#######################################
# REMOVE all needed directories & subdirectories
for i in $( /opt/bin/cat /tmp/mediaindex/$nn-dif-OFF.dir )
do
/usr/syno/bin/synoindex -D "$i" > /dev/null
echo `date` "Autoindex REMOVE DIRs: " $i >> /var/log/messages
done

# REMOVE all needed files
for i in $( /opt/bin/cat /tmp/mediaindex/$nn-dif-OFF.file)
do
/usr/syno/bin/synoindex -d "$i" > /dev/null
echo `date` "Autoindex REMOVE FILES: " $i >> /var/log/messages
done

# ADD all needed directories & subdirectories
for i in $( /opt/bin/cat /tmp/mediaindex/$nn-dif-ON.dir )
do
/usr/syno/bin/synoindex -A "$i" > /dev/null
echo `date` "Autoindex ADD DIRs: " $i >> /var/log/messages
done

# ADD all needed files
for i in $( /opt/bin/cat /tmp/mediaindex/$nn-dif-ON.file)
do
/usr/syno/bin/synoindex -a "$i" > /dev/null
echo `date` "Autoindex ADD FILES: " $i >> /var/log/messages
done

done
rm -fr /tmp/mediaindex
echo `date` "Autoindex END indexing: " >> /var/log/messages

  ;;
 restart|reload|force-reload)
  echo "Error: argument '$1' not supported" >&2
  exit 3
  ;;
 stop)
  #
  ;;
 *)
  echo "Usage: inotifywait.sh [start|stop]" >&2
  exit 3
  ;;
esac

:

Шаг №2: для полноавтоматического демона необходимо установить «inotify-tools»

Загрузить http://github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz

Распаковать файл, скопировать каталог в synology и запустить через консоль:

/Путь к распакованному каталогу / configure --prefix = / usr && make && su -c 'make install'

Теперь создайте файл с текстом по пути: /usr/local/etc/rc.d/S93_mediaindexdm.sh

#!/bin/sh
# Looking FULL changes

case "$1" in
 start|"")

#NEW Variant: dirs ends white slashes
/usr/bin/inotifywait -mrcq -e close_write -e moved_to -e moved_from -e move -e create -e delete -e unmount /volume1/music /volume1/photo /volume1/video | while read -r; do
eval "$(echo "$REPLY" | sed -r 's#'\''#'\'\\\\\'\''#; s#^("([^"]*)"|([^"][^,]*)),("([^"]*)"|([^"][^,]*)),("([^"]*)"|([^"][^,]*))$#file_name='\''\2\3\8\9'\''; action='\''\5\6'\''#')"

#if [ "$action" = "CREATE" ] ; then
#echo '0 NOTHING to file CREATE! ONLY on WRITE_CLOSE'
#fi

if [ "$action" = "CREATE,ISDIR" ] ; then
/usr/syno/bin/synoindex -A "$file_name" > /dev/null
echo "At `date`, Autoindex ADD DIRs: "  "$file_name" >> /var/log/messages
fi
if [ "$action" = "CLOSE_WRITE,CLOSE" ] ; then
/usr/syno/bin/synoindex -a "$file_name" > /dev/null
echo "At `date`, Autoindex ADD FILES: " "$file_name" >> /var/log/messages
fi
if [ "$action" = "DELETE" ] ; then
/usr/syno/bin/synoindex -d "$file_name" > /dev/null
echo "At `date`, Autoindex REMOVE FILES: " "$file_name" >> /var/log/messages
fi
if [ "$action" = "DELETE,ISDIR" ] ; then
/usr/syno/bin/synoindex -D "$file_name" > /dev/null
echo "At `date`, Autoindex REMOVE DIRs: " "$file_name" >> /var/log/messages
fi
if [ "$action" = "MOVED_FROM,ISDIR" ] ; then
/usr/syno/bin/synoindex -D "$file_name" > /dev/null
echo "At `date`, Autoindex REMOVE DIRs: " "$file_name" >> /var/log/messages
fi
if [ "$action" = "MOVED_FROM" ] ; then
/usr/syno/bin/synoindex -d "$file_name" > /dev/null
echo "At `date`, Autoindex REMOVE FILES: " "$file_name" >> /var/log/messages
fi
if [ "$action" = "MOVED_TO,ISDIR" ] ; then
/usr/syno/bin/synoindex -A "$file_name" > /dev/null
echo "At `date`, Autoindex ADD DIRs: " "$file_name" >> /var/log/messages
fi
if [ "$action" = "MOVED_TO" ] ; then
/usr/syno/bin/synoindex -a "$file_name" > /dev/null
echo "At `date`, Autoindex ADD FILES: " "$file_name" >> /var/log/messages
fi
done &

  ;;
 restart|reload|force-reload)
  echo "Error: argument '$1' not supported" >&2
  exit 3
  ;;
 stop)
  killall inotifywait
  ;;
 *)
  echo "Usage: inotifywait.sh [start|stop]" >&2
  exit 3
  ;;
esac

:

После чего, индексация работает автоматически, а та же с помощью этих демонов HDD DISK `s на Syno переходят в спящий режим без проблем.

Испробовано на DS3617xs-v1.02a2--DSM 6.1.1-Update все вроде работает, видео фаил добавился в Video Station автоматически без принудительной переиндексации.

Пробуйте, отписывайтесь если получиться может кто что доработает, так же выкладывайте. :razz:

Link to comment
Share on other sites

  • 1 year later...

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...