Comandos de DAV y de base de datos¶
Resumen¶
Esta página es la referencia de los comandos occ que gestionan libretas de direcciones, calendarios, suscripciones de calendario y ausencias (dav, calendar) y de los que mantienen, inspeccionan y convierten la base de datos (db), con ejemplos y su salida. Está dirigida a quienes administran el servidor.
Fuente: documentación de Nextcloud, «admin_manual/occ_database», versión 3ad9158, licencia CC BY 3.0; traducida y adaptada para APS Conecta Gestión.
Comandos de DAV¶
Los comandos dav gestionan libretas de direcciones, calendarios, suscripciones de calendario, ausencias y datos relacionados:
dav
dav:absence:get get the out-of-office absence settings for a user
dav:absence:set set the out-of-office absence settings for a user
dav:clear-calendar-unshares clear calendar unshares for a user
dav:clear-contacts-photo-cache clear cached contact photos
dav:create-addressbook create a dav addressbook
dav:create-calendar create a dav calendar
dav:create-subscription create a dav subscription
dav:delete-calendar delete a dav calendar
dav:delete-subscription delete a calendar subscription for a user
dav:fix-missing-caldav-changes insert missing calendarchanges rows for existing events
dav:list-addressbooks list all addressbooks of a user
dav:list-calendar-shares list all calendar shares for a user
dav:list-calendars list all calendars of a user
dav:list-subscriptions list all calendar subscriptions for a user
dav:move-calendar move a calendar from one user to another
dav:remove-invalid-shares remove invalid dav shares
dav:retention:clean-up delete CalDAV trash elements that are due for removal
dav:send-event-reminders send event reminder notifications
dav:sync-birthday-calendar synchronize the birthday calendar
dav:sync-system-addressbook synchronize users to the system addressbook
calendar
calendar:export export a calendar of a user
calendar:import import a calendar to a user
Gestión de libretas de direcciones¶
dav:list-addressbooks¶
Listar todas las libretas de direcciones de un usuario:
sudo -E -u www-data php occ dav:list-addressbooks layla
+-------------+----------+-----------------------------+-------------------+----------+
| Database ID | URI | Owner principal | Owner displayname | Writable |
+-------------+----------+-----------------------------+-------------------+----------+
| contacts | Contacts | principals/users/layla | Layla Smith | ✓ |
+-------------+----------+-----------------------------+-------------------+----------+
dav:create-addressbook¶
Crear una libreta de direcciones para un usuario:
sudo -E -u www-data php occ dav:create-addressbook layla work
Gestión de calendarios¶
dav:list-calendars¶
Listar todos los calendarios de un usuario:
sudo -E -u www-data php occ dav:list-calendars layla
+----------+-------------+-----------------------------+-------------------+----------+
| URI | Displayname | Owner principal | Owner displayname | Writable |
+----------+-------------+-----------------------------+-------------------+----------+
| personal | Personal | principals/users/layla | Layla Smith | ✓ |
+----------+-------------+-----------------------------+-------------------+----------+
dav:create-calendar¶
Crear un calendario para un usuario:
sudo -E -u www-data php occ dav:create-calendar layla holidays
dav:delete-calendar¶
Eliminar un calendario de un usuario indicando su nombre:
sudo -E -u www-data php occ dav:delete-calendar layla holidays
Usar --birthday para eliminar el calendario de cumpleaños en lugar de indicar un nombre. Usar -f / --force para eliminarlo de inmediato en lugar de moverlo a la papelera:
sudo -E -u www-data php occ dav:delete-calendar --force layla holidays
sudo -E -u www-data php occ dav:delete-calendar --birthday layla
dav:move-calendar¶
Nota
Mover un calendario cambia sus URL de compartición existentes.
Mover un calendario de un usuario a otro:
sudo -E -u www-data php occ dav:move-calendar personal layla fred
Sin --force, el comando falla si el usuario de destino ya tiene un calendario con el mismo nombre o si el calendario está compartido con un grupo del que el usuario de destino no es miembro.
Usar -f / --force para continuar de todos modos: las comparticiones con grupos en conflicto se descartan y, si el nombre del calendario ya está ocupado en el destino, se prueba automáticamente un nombre nuevo (personal-1, personal-2, hasta diez intentos). El comando falla si no encuentra un nombre libre en esos intentos.
Gestión de suscripciones de calendario¶
dav:list-subscriptions¶
Listar todas las suscripciones de calendario de un usuario:
sudo -E -u www-data php occ dav:list-subscriptions layla
User layla has no subscriptions
dav:create-subscription¶
Crear un calendario de suscripción para un usuario:
sudo -E -u www-data php occ dav:create-subscription layla "Astronomy Calendar" \
webcal://cantonbecker.com/astronomy-calendar/astrocal.ics
Opcionalmente, indicar un código de color HEX para el calendario:
sudo -E -u www-data php occ dav:create-subscription layla "Astronomy Calendar" \
webcal://cantonbecker.com/astronomy-calendar/astrocal.ics "#ff5733"
Si no se indica, se usa el color predeterminado del tema.
dav:delete-subscription¶
Eliminar una suscripción de calendario de un usuario:
sudo -E -u www-data php occ dav:delete-subscription layla "Astronomy Calendar"
Gestión de ausencias (fuera de la oficina)¶
dav:absence:set¶
Establecer la ausencia (fuera de la oficina) de un usuario. first-day y last-day son inclusivos y tienen el formato YYYY-MM-DD.
short-message: un breve mensaje de una línea que se muestra como estado del usuario junto a su nombre en toda la interfaz mientras está ausente (p. ej., en contactos, chat y listas de usuarios).
message: el texto completo de fuera de la oficina que se muestra a los usuarios que intentan contactar con el usuario ausente.
replacement-user-id: opcional; un colega al que contactar en su lugar. Su nombre mostrado se guarda junto con la ausencia y se muestra a los demás.
sudo -E -u www-data php occ dav:absence:set layla 2026-05-01 2026-05-15 \
"On leave" \
"I am on leave until May 15. For urgent matters please contact my colleague."
Para establecer una ausencia con un usuario sustituto:
sudo -E -u www-data php occ dav:absence:set layla 2026-05-01 2026-05-15 \
"On leave" \
"I am on leave. Please contact fred for urgent matters." \
fred
dav:absence:get¶
Mostrar los ajustes de ausencia actuales de un usuario:
sudo -E -u www-data php occ dav:absence:get layla
Start day: 2026-05-01
End day: 2026-05-15
Short message: On leave
Message: I am on leave until May 15. For urgent matters please contact my colleague.
Replacement user: none
Replacement display name: none
Sincronización¶
dav:sync-system-addressbook¶
Sincronizar todos los usuarios con la libreta de direcciones del sistema:
sudo -E -u www-data php occ dav:sync-system-addressbook
Syncing users ...
dav:sync-birthday-calendar¶
Añadir al calendario de un usuario los cumpleaños de las libretas de direcciones compartidas:
sudo -E -u www-data php occ dav:sync-birthday-calendar layla
Start birthday calendar sync for layla
Mantenimiento¶
dav:fix-missing-caldav-changes¶
Restaurar los registros de cambios de sincronización de calendario que faltan. Si la tabla calendarchanges ha perdido datos, puede que los clientes no sincronicen correctamente. Ejecutarlo para un solo usuario u omitir el ID de usuario para corregir todos los usuarios (puede tardar en instancias grandes):
sudo -E -u www-data php occ dav:fix-missing-caldav-changes layla
sudo -E -u www-data php occ dav:fix-missing-caldav-changes
dav:retention:clean-up¶
Eliminar de la papelera de CalDAV los elementos que han superado su periodo de retención:
sudo -E -u www-data php occ dav:retention:clean-up
dav:send-event-reminders¶
Enviar las notificaciones pendientes de recordatorios de eventos de calendario. De forma predeterminada, APS Conecta Gestión envía los recordatorios mediante el trabajo en segundo plano. Para usar este comando en su lugar, cambiar primero el modo:
sudo -E -u www-data php occ config:app:set dav sendEventRemindersMode --value occ
Después, ejecutar el comando con regularidad mediante un trabajo cron dedicado para garantizar que los recordatorios se envíen a tiempo:
sudo -E -u www-data php occ dav:send-event-reminders
Consultar Calendario / CalDAV para la programación de cron recomendada.
dav:clear-contacts-photo-cache¶
Borrar todas las fotos de contactos almacenadas en caché. Es útil después de una migración o si los avatares de los contactos no se muestran correctamente:
sudo -E -u www-data php occ dav:clear-contacts-photo-cache
No cached contact photos found.
Exportar e importar calendarios¶
calendar:export¶
Exportar un calendario a un archivo o a la salida estándar:
sudo -E -u www-data php occ calendar:export layla personal --location /tmp/personal.ics
--format selecciona el formato de salida (predeterminado: ical):
ical: iCalendar (RFC 5545)xcal: iCalendar en XML (RFC 6321)jcal: iCalendar en JSON (RFC 7265)
--location establece la ruta del archivo de salida. Si se omite, la salida se escribe en la salida estándar:
sudo -E -u www-data php occ calendar:export layla personal --format xcal \
--location /tmp/personal.xcal
sudo -E -u www-data php occ calendar:export layla personal --format jcal
calendar:import¶
Importar entradas de calendario en el calendario de un usuario:
sudo -E -u www-data php occ calendar:import layla personal /tmp/personal.ics
--format selecciona el formato de entrada (predeterminado: ical). Admite los mismos valores que calendar:export. Si se omite location, lee de la entrada estándar:
sudo -E -u www-data php occ calendar:import --format xcal layla personal \
/tmp/personal.xcal
cat /tmp/personal.ics | sudo -E -u www-data php occ calendar:import layla personal
--supersede fuerza la sustitución de los objetos existentes con el mismo UID.
El comportamiento de la validación se controla con --validation:
0: sin validación1: validar y omitir las entradas no válidas2: validar y fallar ante entradas no válidas
El tratamiento de errores se controla con --errors:
0: continuar ante un error (predeterminado)1: fallar ante el primer error
Usar --show-created, --show-updated, --show-skipped o --show-errors para ver los UID de los objetos afectados después de la importación.
Desactivar la creación de eventos de ejemplo¶
Desactivar la creación automática de eventos de ejemplo para los nuevos usuarios de calendario:
sudo -E -u www-data php occ config:app:set dav create_example_event \
--value=false --type=boolean
Comandos de base de datos¶
Los comandos db gestionan el esquema de la base de datos, los índices y las conversiones de datos:
db
db:add-missing-columns add missing optional columns to the database tables
db:add-missing-indices add missing indices to the database tables
db:add-missing-primary-keys add missing primary keys to the database tables
db:convert-filecache-bigint convert the ID columns of the filecache to BigInt
db:convert-mysql-charset convert charset of MySQL/MariaDB to utf8mb4
db:convert-type convert the Nextcloud database to a different type
db:schema:expected export the expected database schema for a fresh installation
db:schema:export export the current database schema
Mantenimiento del esquema¶
db:add-missing-indices¶
Añadir a la base de datos los índices que están definidos en el esquema pero faltan en la instalación actual. Ejecutarlo después de las actualizaciones si el rendimiento ha empeorado o si lo pide la vista general de administración:
sudo -E -u www-data php occ db:add-missing-indices
Done.
Usar --dry-run para previsualizar las sentencias SQL sin ejecutarlas:
sudo -E -u www-data php occ db:add-missing-indices --dry-run
db:add-missing-columns¶
Añadir las columnas opcionales que están definidas en el esquema pero faltan en la instalación actual:
sudo -E -u www-data php occ db:add-missing-columns
Done.
Usar --dry-run para previsualizar las sentencias SQL sin ejecutarlas.
db:add-missing-primary-keys¶
Añadir las claves primarias que están definidas en el esquema pero faltan en la instalación actual:
sudo -E -u www-data php occ db:add-missing-primary-keys
Done.
Usar --dry-run para previsualizar las sentencias SQL sin ejecutarlas.
Inspección del esquema¶
db:schema:export¶
Exportar el esquema actual de la base de datos. Es útil para depurar o para compararlo con el esquema esperado:
sudo -E -u www-data php occ db:schema:export
- oc_filecache:
- columns:
- checksum:
- name: checksum
- type: string
Limitar la salida a una sola tabla:
sudo -E -u www-data php occ db:schema:export oc_filecache
Usar --sql para obtener sentencias SQL CREATE TABLE en lugar del formato estructurado predeterminado. Usar --output=json_pretty para obtener una salida legible por máquina.
db:schema:expected¶
Exportar el esquema esperado para una instalación nueva de la versión actual. Compararlo con db:schema:export para detectar divergencias causadas por actualizaciones incompletas o por cambios manuales:
sudo -E -u www-data php occ db:schema:expected
sudo -E -u www-data php occ db:schema:expected oc_filecache
Admite las mismas opciones --sql y --output que db:schema:export.
Conversiones de datos¶
db:convert-filecache-bigint¶
Convertir las columnas de ID de la tabla filecache de entero a BigInt. Es necesario en instalaciones grandes en las que los ID de archivo han superado el límite de los enteros. Este comando no es destructivo, pero puede tardar en bases de datos grandes:
sudo -E -u www-data php occ db:convert-filecache-bigint
db:convert-mysql-charset¶
Convertir todas las tablas de MySQL o MariaDB para que usen utf8mb4 (Unicode completo, emojis incluidos). Es necesario para un soporte adecuado de Unicode. Ejecutarlo una vez después de cambiar a MySQL/MariaDB o de actualizarlo:
sudo -E -u www-data php occ db:convert-mysql-charset
db:convert-type¶
Convertir la base de datos de APS Conecta Gestión de SQLite a MySQL, MariaDB o PostgreSQL. SQLite es adecuado para pruebas y configuraciones de un solo usuario, pero los servidores de producción con varios usuarios deben usar una de las otras bases de datos compatibles.
Requisitos:
La base de datos de destino y su conector PHP deben estar instalados.
Credenciales de inicio de sesión de un usuario administrador de la base de datos.
El número de puerto de la base de datos, si no es el estándar.
Este ejemplo convierte de SQLite a MySQL/MariaDB:
sudo -E -u www-data php occ db:convert-type mysql oc_dbuser 127.0.0.1 oc_database
Para un recorrido detallado, consultar Conversión del tipo de base de datos.