Proyecto movido a GitHub
Miér 7 Abr 2021 - 19:23 por bittor
Proyecto movido a GitHub:
https://github.com/bittor7x0/VDR-M7x0
Con muchos cambios y correcciones, Más información
También incluye el plugin epgfixer para corregir la EPG usando expresiones regulares y el plugin xmltv2vdr para descargar la EPG de internet
https://github.com/bittor7x0/VDR-M7x0
Con muchos cambios y correcciones, Más información
También incluye el plugin epgfixer para corregir la EPG usando expresiones regulares y el plugin xmltv2vdr para descargar la EPG de internet
Comentarios: 0
Buscar
Volver a mostrar grabaciones despues de reparticionar
Página 1 de 1.
Volver a mostrar grabaciones despues de reparticionar
Hola,
Después de reparticionar el disco para mejorar el rendimiento, siguiendo los consejos de otro hilo, me encontré con que solo se mostraban las grabaciones que había dejado en la primera partición.
He mirado lo que hace el vdr para que se vean las grabaciones hechas después de reparticionar y resulta que siempre crea enlaces a los archivos XXX.vdr en la primera partición ( y los archivos info.vdr e index.vdr se graban siempre ahí).
Para que me volvieran a aparecer las grabaciones, en lugar de dedicar media hora a hacerlo manualmente, decidí escribir un script (pensando que sería más rápido). Me llevó unas cuantas horas, pero como me ha funcionado, lo pongo aquí por si a alguien más le interesa (eso sí, el que lo ejecute, que lo haga bajo su propia responsabilidad). Es una de las primeras cosas que perpetro en bash, así que si hay alguna chapuza, sed indulgentes. Me parece que no puedo adjuntar archivos así que :
Tampoco se mantienen sincronizados los nombres de los directorios en las diferentes particiones. Es decir, si se renombra una grabación se cambian los nombres en la primera partición, pero no en la(s) partición(es) donde están realmente las grabaciones, así que el script anterior podría volver a crear enlaces duplicados a la misma grabación. Para evitarlo y como no había perdido suficiente tiempo todavía, he escrito otro script que lo que hace es renombrar los directorios tal como están en la primera partición. Está pensado para que se ejecute antes que el anterior (y periodiodicamente si alguien es tan caprichoso como yo y le importa esta diferencia de nombres). Lo mismo que antes, la responsabilidad de usarlo es de cada cual:
Después de reparticionar el disco para mejorar el rendimiento, siguiendo los consejos de otro hilo, me encontré con que solo se mostraban las grabaciones que había dejado en la primera partición.
He mirado lo que hace el vdr para que se vean las grabaciones hechas después de reparticionar y resulta que siempre crea enlaces a los archivos XXX.vdr en la primera partición ( y los archivos info.vdr e index.vdr se graban siempre ahí).
Para que me volvieran a aparecer las grabaciones, en lugar de dedicar media hora a hacerlo manualmente, decidí escribir un script (pensando que sería más rápido). Me llevó unas cuantas horas, pero como me ha funcionado, lo pongo aquí por si a alguien más le interesa (eso sí, el que lo ejecute, que lo haga bajo su propia responsabilidad). Es una de las primeras cosas que perpetro en bash, así que si hay alguna chapuza, sed indulgentes. Me parece que no puedo adjuntar archivos así que :
- Código:
#!/bin/sh
# Utilidad para crear en video0 los enlaces que falten a grabaciones en las otras particiones.
# Se recomienda sincronizar antes los directorios en las diferentes particiones para no duplicar directorios
# con diferente nombre.
# Autor: atinar.
# Email: atinar1 at hotmail dot com.
# Usalo bajo tu propia responsabilidad.
# Determina si se van a borrar los listados al terminar
borrarrastrodelcrimen=false
# Salir si se esta ejecutando vdr
[ -f /var/run/runvdr.pid ] && logger -s "Detener vdr antes de restaurar directorios de video." && exit 1
# Buscar directorio real al que corresponde video0
video0=`readlink /var/vdr/video0`
# Formatear texto para simplificar sed
video0tr=`echo $video0 | tr / \~`
# Preparar directorio donde se guardan las listas de archivos y directorios a procesar
TMP=${video0}/tmp/restaurar
if [ ! -d ${TMP} ]; then
mkdir -p ${TMP}
fi;
# Generar listado con todos los archivos *.vdr en directorios de grabaciones que no esten en video0
if [[ -f ${TMP}/fdst ]]; then rm ${TMP}/fdst; fi
for video in `find /var/vdr -regex /var/vdr/video.* -type l` ; do
if [[ $video != /var/vdr/video0 ]]; then
find $video -follow -regex ".*/[0123456789.-]*\.rec/[^/]*\.vdr" -type f | sort >> ${TMP}/fdst
fi
done
# Crear listado con las ordenes de creacion de los enlaces simbolicos que falten.
# Aun no se crean los enlaces, solo directorios vacios en video0.
if [ -f ${TMP}/a1fori_ln ]; then rm ${TMP}/a1fori_ln; fi;
for dst in `cat ${TMP}/fdst`; do
dsttr=`echo $dst | tr / \~`
oritr=`echo $dsttr | sed 's/~var~vdr~video[^~]*~/~var~vdr~video0~/'`
oripathtr=`echo $oritr | sed 's/~[^~]*\.vdr//'`
oripath=`echo $oripathtr | tr \~ /`
if [[ ! -e $oripath ]]; then
mkdir -p $oripath
fi
if [[ -d $oripath ]]; then
ori=`echo $oritr | tr \~ /`
if [[ ! -e $ori ]]; then
echo "ln -s $dst $ori" >> ${TMP}/a1fori_ln
fi
fi
done
# Generar los enlaces
[[ -f ${TMP}/a1fori_ln ]] && source ${TMP}/a1fori_ln
# Borrar listados.
if [ ${borrarrastrodelcrimen} ]; then
if [ -e ${TMP}/a1fori_ln ]; then rm ${TMP}/a1fori_ln; fi
fi
Tampoco se mantienen sincronizados los nombres de los directorios en las diferentes particiones. Es decir, si se renombra una grabación se cambian los nombres en la primera partición, pero no en la(s) partición(es) donde están realmente las grabaciones, así que el script anterior podría volver a crear enlaces duplicados a la misma grabación. Para evitarlo y como no había perdido suficiente tiempo todavía, he escrito otro script que lo que hace es renombrar los directorios tal como están en la primera partición. Está pensado para que se ejecute antes que el anterior (y periodiodicamente si alguien es tan caprichoso como yo y le importa esta diferencia de nombres). Lo mismo que antes, la responsabilidad de usarlo es de cada cual:
- Código:
#!/bin/sh
# Utilidad para sincronizar directorios de grabaciones en las distintas particiones.
# Autor: atinar.
# Email: atinar1 at hotmail dot com.
# Usalo bajo tu propia responsabilidad.
# Determina si se van a borrar los listados al terminar
borrarrastrodelcrimen=false
# Salir si se esta ejecutando vdr
[ -f /var/run/runvdr.pid ] && logger -s "Detener vdr antes de sincronizar directorios de video." && exit 1
# Buscar directorio real al que corresponde video0
video0=`readlink /var/vdr/video0`
# Formatear texto para simplificar sed
video0tr=`echo $video0 | tr / \~`
# Preparar directorio donde se guardan las listas de archivos y directorios a procesar
TMP=${video0}/tmp/sincronizar
if [ ! -d ${TMP} ]; then
mkdir -p ${TMP}
fi;
# Buscar directorios de grabaciones en video0
find $video0 -regex ".*/[0123456789.-]*\.rec" -type d | sort -u > ${TMP}/doripath
# Borrar listados antiguos
if [ -e ${TMP}/fori ]; then rm ${TMP}/fori; fi;
if [ -e ${TMP}/doripath_sinc_tmp ]; then rm ${TMP}/doripath_sinc_tmp; fi;
if [ -e ${TMP}/ddstpathnew ]; then rm ${TMP}/ddstpathnew; fi;
if [ -e ${TMP}/ddstpathold ]; then rm ${TMP}/ddstpathold; fi;
if [ -e ${TMP}/ddstpathold_tmp ]; then rm ${TMP}/ddstpathold_tmp; fi;
if [ -e ${TMP}/a1fori_rm ]; then rm ${TMP}/a1fori_rm; fi;
if [ -e ${TMP}/a2fdst_mv ]; then rm ${TMP}/a2fdst_mv; fi;
if [ -e ${TMP}/a3fori_ln ]; then rm ${TMP}/a3fori_ln; fi;
# Buscar enlaces simbolicos en directorios de grabaciones de video0
for oripath in `cat ${TMP}/doripath` ; do
if [[ $oripath -nt ${oripath}/.sinc ]]; then
find $oripath -regex ".*\.vdr" -type l >> ${TMP}/fori
echo $oripath >> ${TMP}/doripath_sinc_tmp
fi;
done
# Generar listado de directorios que se van a marcar como sincronizados
if [ -f ${TMP}/doripath_sinc_tmp ]; then
cat ${TMP}/doripath_sinc_tmp | sort -u > ${TMP}/doripath_sinc
rm ${TMP}/doripath_sinc_tmp;
fi;
# Generar listados de enlaces con rutas destinas en destino
for ori in `cat ${TMP}/fori` ; do
oritr=`echo $ori | tr / \~`
dst=`readlink $ori`
dsttr=`echo $dst | tr / \~`
oripathtr=`echo $oritr | sed 's/~[^~]*\.vdr//'`
dstpathtr=`echo $dsttr | sed 's/~[^~]*\.vdr//'`
SED_CMD="'s/$video0tr~//'"
orisubpathtr=`eval "echo $oripathtr | sed $SED_CMD"`
dstsubpathtr=`echo $dstpathtr | sed 's/~var~vdr~video[1-9]~//'`
if [[ $orisubpathtr != $oripathtr && $dstsubpathtr != $dstpathtr && $orisubpathtr != $dstsubpathtr ]] ; then
SED_CMD="'s/$dstsubpathtr/$orisubpathtr/'"
dstpathnewtr=`eval "echo $dstpathtr | sed $SED_CMD"`
dstpathnew=`echo $dstpathnewtr | tr \~ /`
if [[ $dstpathnewtr != $dstpathtr ]]; then
if [[ ! -d $dstpathnew ]]; then
echo $dstpathnew >> ${TMP}/ddstpathnew
mkdir -p $dstpathnew;
fi
if [[ -d $dstpathnew ]]; then
SED_CMD="'s/$dstpathtr/$dstpathnewtr/'"
dstnewtr=`eval "echo $dsttr | sed $SED_CMD"`
dstnew=`echo $dstnewtr | tr \~ /`
if [[ ! -f $dstnew ]]; then
echo "rm $ori" >> ${TMP}/a1fori_rm
echo "mv $dst $dstpathnewtr" | tr \~ / >> ${TMP}/a2fdst_mv
echo "ln -s $dstnewtr $ori" | tr \~ / >> ${TMP}/a3fori_ln
echo "$dstpathtr" | tr \~ / >> ${TMP}/ddstpathold_tmp
else
echo "$dstnew" >> ${TMP}/f5dst_existe
fi;
fi;
fi;
fi;
done
# Generar listado de directorios en video[12...] que van a quedar obsoletos
if [ -e ${TMP}/ddstpathold_tmp ]; then
cat ${TMP}/ddstpathold_tmp | sort -u > ${TMP}/ddstpathold
rm ${TMP}/ddstpathold_tmp
fi
# Realizar la sincronizacion.
# Hasta aqui no se ha hecho nada que pueda ser perjudical, como mucho crear
# unos cuantos directorios vacios.
if [ -f ${TMP}/a1fori_rm && -f ${TMP}/a2fdst_mv && -f ${TMP}/a3fori_ln ]; then
source ${TMP}/a1fori_rm
source ${TMP}/a2fdst_mv
source ${TMP}/a3fori_ln
fi
# Borrar directorios obsoletos que hayan quedado vacios
if [ -f ${TMP}/ddstpathold ]; then
for dstpathold in `cat ${TMP}/ddstpathold` ; do
if [[ -d $dstpathold ]]; then
find $dstpathold -follow -type f -size 0c -exec rm '{}' \;
rmdir -p $dstpathold 2> /dev/null
fi
done
if [ ${borrarrastrodelcrimen} ]; then rm ${TMP}/ddstpathold; fi
fi
# Poner marca de sincronizacion
if [ -f ${TMP}/doripath_sinc ]; then
for oripath in `cat ${TMP}/doripath_sinc`; do
touch ${oripath}/.sinc
done
if [ ${borrarrastrodelcrimen} ]; then rm ${TMP}/doripath; fi
fi
# Borrar listados.
if [ ${borrarrastrodelcrimen} ]; then
if [ -e ${TMP}/a1fori_rm ]; then rm ${TMP}/a1fori_rm; fi
if [ -e ${TMP}/a2fdst_mv ]; then rm ${TMP}/a2fdst_mv; fi
if [ -e ${TMP}/a3fori_ln ]; then rm ${TMP}/a3fori_ln; fi
fi
atinar- Desarrollador
- Cantidad de envíos : 278
Fecha de inscripción : 06/09/2008
Temas similares
» [Solucionado] Grabaciones desaparecidas despues de pasar a v0.6
» Recepción de TV3 después del 18 de Junio
» Denunciado un abuso en el foro
» Varias dudas despues de la instalación
» Necesito que me orienteis despues de actualizar a VDR
» Recepción de TV3 después del 18 de Junio
» Denunciado un abuso en el foro
» Varias dudas despues de la instalación
» Necesito que me orienteis despues de actualizar a VDR
Página 1 de 1.
Permisos de este foro:
No puedes responder a temas en este foro.
|
|