Subidas fallidas a nextcloud y la muerte pelona

Porque tras intentarlo tropecientas veces en el día y recibir tropecientas negativas y fallos raros (como errores 500) ¿ por qué no seguir dale que te pego hasta que agotes el espacio en disco ?

Otra de esas cositas de las que ocuparme que me surgen así como así y por las que tengo que dejarlo todo y enfocarme en otra cosa. Es un asco pero no hacerlo implica que regularmente, más unos días que otros, debo vigilar que el espacio en disco no desaparezca y el resto del sistema deje de dar servicio.

Los archivos que fallan tienen características más o menos similares: son bastante grandes, superan los dos gigabytes, y tienen caracteres especiales en el nombre como paréntesis y símbolos ordinales, cosas así.

El cliente de escritorio es una versión antigua y no da mucha información sobre qué ha fallado (tengo que pensarme lo de compilarlo y construir los paquetes yo porque esto es cada vez más caótico) y cuando miro en el servidor, con el interfaz web, me dice que no hay registros, que todo va bien entonces en el servidor. ¿ Qué ? ¿ Y encima me sonríes, cabronazo? Si tengo el sistema de archivos al 95%.

Busco el registro plano que debería tener y mira por dónde lo encuentro con buena salud en el lugar equivocado. Es tan buena su salud que ocupa 87 Gb (ochenta y siete, sí) y sigue con el crecimiento normal. Y yo rotando otra cosa en otro directorio. Todo bien.

El problema con esta instalación de Nextcloud, la principal para uso propio, es que empezó siendo owncloud, migró a Nextcloud y he probado en ella todo tipo de aplicaciones y cosas cuquis que después no han servido de nada. Ah, y además activando y desactivando el cifrado de archivos a nivel de usuario, aspecto que tenía y tiene, varios claroscuros. En casa de herrero …

Así que para el futuro, cuando tenga tiempo, tendré que crear una instalación paralela para pruebas. De momento el lío que hay organizado es curioso. El error puede venir, y no en este orden, de: el servidor Nextcloud, el lenguaje PHP, el servidor Apache o incluso la base de datos MariaDB.

Como estoy más bien perdido y tengo muchas otras cosas que atender voy a hacer algunos ajustes rápidos para solventar el problema.

El primero es un trabajo diario que busque y borre los archivos y directorios con extensión .part que lleven más de un día sin actualizar.

#!/usr/bin/env bash

VERSION=0.1
SOURCE_DIR=/var/lib/owncloud/
if [ ! -d "$SOURCE_DIR" ]; then
     echo "$0: no existe el directorio $SOURCE_DIR" >&2
     exit 1
fi

# Las subidas en nextcloud parecen estar organizadas en ocasiones con
# carpetas aunque se trate de archivos individuales. # # Supongo que tendrá que ver con que esté cifrado o no el contenido.

# Localizamos primero archivos .part que no tengan 
# acceso durante unos días para borrarlos primero
PARTIAL_FILES=$(tempfile --prefix=partial_files)
find $SOURCE_DIR -type f -a -name "*.part" -a -mtime +1 -print > $PARTIAL_FILES
if [ -s "$PARTIAL_FILES" ]; then
     for archivo in $(cat $PARTIAL_FILES)
     do
         rm -f $archivo
     done
     echo "$0: borrados $(wc -l $PARTIAL_FILES) archivos"
fi

# Y ahora vamos a localizar primero los directorios para tener una lista
# que borrar cuidadosamente después
PARTIAL_DIRS=$(tempfile --prefix=partial_dirs)
find $SOURCE_DIR -type d -a -name "*.part" -print > $PARTIAL_DIRS
if [ -s "$PARTIAL_DIRS" ]; then
     for directorio in $(cat $PARTIAL_DIRS)
     do
         if [ -z "$directorio" ]; then
             rm -rf $directorio
         fi
     done
     echo "$0: borrados $(wc -l $PARTIAL_DIRS) directorios"
fi

Lo segundo, ya que estoy, es desactivar todo el cifrado de archivos individuales. Como en realidad somos tres usuarios y conozco la contraseña de cada uno no hará falta perseguir a nadie para que me den la clave de descifrado.

$ sudo ncc encrypt:decrypt-all victor 

Lo tercero asegurarme de que Nextcloud registra donde debe hacerlo. Según su configuración actual el archivo es /var/log/owncloud.log y tiene rotación al alcanzar 100 Mb. Sin embargo ese archivo está vacío y en su lugar emplea /var/lib/owncloud/nextcloud.log a un ritmo vertiginoso. Hay alguno más como un archivo de auditorías pero están donde no tienen que estar. Los moveré y añadiré rotación dentro del sistema.

La rotación es la siguiente:

/var/log/owncloud.log {
         nocompress
         missingok
         weekly
         rotate 4
         su www-data www-data 
         create 0640 www-data www-data 
         size 10M
 }
 /var/lib/owncloud/nextcloud.log {
         nocompress
         missingok
         weekly
         rotate 4
         su www-data www-data 
         create 0640 www-data www-data 
         size 10M
 }

Importante emplear la directiva su o se tendrán todo tipo de problemas por los permisos de los directorios padre.

De momento tendrá que servir.

Referencias