{"id":76992,"date":"2024-11-04T09:03:07","date_gmt":"2024-11-04T08:03:07","guid":{"rendered":"https:\/\/kinsta.com\/es\/?p=76992&#038;preview=true&#038;preview_id=76992"},"modified":"2024-12-10T15:23:37","modified_gmt":"2024-12-10T14:23:37","slug":"programar-copias-seguridad-multiples-sitios-con-api","status":"publish","type":"post","link":"https:\/\/kinsta.com\/es\/blog\/programar-copias-seguridad-multiples-sitios-con-api\/","title":{"rendered":"Programar copias de seguridad para varios sitios con la API de Kinsta"},"content":{"rendered":"<p>Para las <a href=\"https:\/\/kinsta.com\/es\/blog\/wordpress-agencia\/\">agencias de WordPress<\/a> que gestionan sitios web de varios clientes, es esencial contar con una s\u00f3lida <a href=\"https:\/\/kinsta.com\/es\/blog\/caracteristicas-copias-de-seguridad-kinsta\/\">estrategia de copias de seguridad<\/a>. En caso de interrupci\u00f3n inesperada, fallo de un plugin o error humano, las copias de seguridad garantizan que los datos puedan restaurarse r\u00e1pidamente, minimizando el tiempo de inactividad y reduciendo el riesgo para el cliente.<\/p>\n<p>En Kinsta, entendemos el papel fundamental que desempe\u00f1an las copias de seguridad, por eso ofrecemos <a href=\"https:\/\/kinsta.com\/es\/docs\/alojamiento-wordpress\/copias-de-seguridad-wordpress\/\">seis opciones de copia de seguridad<\/a>: autom\u00e1tica diaria, opcional cada hora (y cada seis horas), manual, generada por el sistema, descargable y copias de seguridad externas enviadas directamente a Amazon S3 o Google Cloud Storage.<\/p>\n<p>Aunque gestionar estas copias de seguridad es sencilla a trav\u00e9s del panel <a href=\"https:\/\/kinsta.com\/es\/mykinsta\/\">MyKinsta<\/a>, la <a href=\"https:\/\/kinsta.com\/es\/docs\/api-kinsta\/\">API de Kinsta<\/a> ofrece grandes posibilidades para automatizar procesos repetitivos.<\/p>\n<p>Imagina simplemente escribir un comando en Slack o configurar un cron job para activar copias de seguridad de todos tus sitios de WordPress en tu cuenta de agencia Kinsta sin tener que navegar de forma manual por decenas o incluso cientos de paneles de control de sitios.<\/p>\n<p>Esta flexibilidad es una de las muchas ventajas de utilizar un alojamiento que prioriza las necesidades de sus clientes proporcion\u00e1ndoles las herramientas para crear soluciones personalizadas que les ahorren tiempo.<\/p>\n<p>Esta gu\u00eda explica c\u00f3mo aprovechar la API de Kinsta para automatizar las copias de seguridad de varios sitios. Tanto si te integras con tu stack preferido, como si utilizas herramientas como Slack o estableces programaciones automatizadas, esta gu\u00eda te proporciona los conocimientos necesarios para agilizar tu proceso de copia de seguridad y mejorar tu flujo de trabajo.<\/p>\n<aside role=\"note\" class=\"wp-block-kinsta-notice is-style-info\">\n            <h3>Info<\/h3>\n        <p>Si no est\u00e1s familiarizado con los distintos endpoints de copia de seguridad disponibles a trav\u00e9s de la API de Kinsta, aseg\u00farate de consultar nuestra gu\u00eda detallada sobre <a href=\"https:\/\/kinsta.com\/es\/blog\/copias-de-seguridad-wordpress-con-api-kinsta\/\">Gesti\u00f3n de copias de seguridad de WordPress en Slack con la API de Kinsta<\/a>. En ella se explica c\u00f3mo utilizar eficazmente los distintos endpoints de copia de seguridad.<\/p>\n<\/aside>\n\n<div><\/div><kinsta-auto-toc heading=\"Table of Contents\" exclude=\"last\" list-style=\"arrow\" selector=\"h2\" count-number=\"-1\"><\/kinsta-auto-toc>\n<h2>Implementar copias de seguridad para todos los sitios y para sitios seleccionados<\/h2>\n<p>Antes de sumergirte en la programaci\u00f3n, es importante que primero entiendas c\u00f3mo activar copias de seguridad para todos los sitios de tu cuenta Kinsta y c\u00f3mo seleccionar sitios o entornos espec\u00edficos utilizando la API Kinsta.<\/p>\n<p>Una vez que tengamos la base para crear copias de seguridad, podemos integrar f\u00e1cilmente la programaci\u00f3n para automatizar el proceso.<\/p>\n<h3>Activar copias de seguridad para todos los sitios de una cuenta de Kinsta<\/h3>\n<p>Como ocurre con todas las API, no siempre hay un endpoint para hacer todo lo que necesitas \u2014 a menudo tienes que combinar varios \u2014 para lograr el resultado deseado.<\/p>\n<p>La API Kinsta no es diferente. Aunque hay endpoints espec\u00edficos para gestionar las copias de seguridad, estos endpoints requieren ciertos par\u00e1metros, como los ID de entorno, que obtienes haciendo peticiones adicionales a otros endpoints.<\/p>\n<p>Por ejemplo, para activar una copia de seguridad manual de un sitio, necesitas el ID de entorno de ese entorno concreto. Para obtener el ID del entorno, primero necesitas el ID del sitio. Esto significa que debes hacer varias llamadas a la API: una para obtener el ID del sitio, otra para recuperar el ID del entorno y, por \u00faltimo, una solicitud para activar la copia de seguridad.<\/p>\n<aside role=\"note\" class=\"wp-block-kinsta-notice is-style-info\">\n            <h3>Info<\/h3>\n        <p>Aunque los ejemplos de esta gu\u00eda se basan en <a href=\"https:\/\/kinsta.com\/es\/blog\/que-es-javascript\/\">JavaScript<\/a>, la l\u00f3gica puede aplicarse f\u00e1cilmente a otros <a href=\"https:\/\/kinsta.com\/es\/blog\/mejor-lenguaje-de-programacion-para-aprender\/\">lenguajes de programaci\u00f3n<\/a>, como <a href=\"https:\/\/kinsta.com\/es\/blog\/instalar-python\/\">Python<\/a>, en funci\u00f3n de tus preferencias.<\/p>\n<p>Si es la primera vez que utilizas la API de Kinsta, debes crear una clave de API. Consulta <a href=\"https:\/\/kinsta.com\/es\/blog\/kinsta-api-key\/\">esta gu\u00eda sobre c\u00f3mo crear y utilizar la clave API de Kinsta<\/a> para empezar.<\/p>\n<\/aside>\n\n<h4>Paso 1: Recuperar todos los sitios WordPress con la API de Kinsta<\/h4>\n<p>El primer paso es recuperar una lista de todos los sitios asociados a tu cuenta de Kinsta. La API de Kinsta proporciona un endpoint para obtener estos datos, que incluyen IDs de sitios, nombres y otros detalles relevantes. Utilizando el endpoint <code>GET \/sites<\/code>, puedes obtener una lista de todos los sitios bajo la cuenta de tu empresa.<\/p>\n<p>Aqu\u00ed tienes un ejemplo usando Node.js y <a href=\"https:\/\/kinsta.com\/es\/blog\/javascript-peticion-http\/#4-how-to-make-an-http-request-in-javascript-using-the-fetch-api\">Fetch API<\/a>:<\/p>\n<pre><code class=\"language-js\">require('dotenv').config();\n\nconst KINSTA_API_URL = 'https:\/\/api.kinsta.com\/v2';\nconst API_KEY = process.env.KINSTA_API_KEY;\n\nasync function getAllSites() {\n    const response = await fetch(`${KINSTA_API_URL}\/sites`, {\n        headers: {\n            Authorization: `Bearer ${API_KEY}`\n        }\n    });\n    const data = await response.json();\n    return data.company.sites; \/\/ Returns array of all sites\n}<\/code><\/pre>\n<p>Esta funci\u00f3n devuelve un array de todos los sitios de tu cuenta. Cada sitio contiene informaci\u00f3n como su ID, nombre y entorno(s).<\/p>\n<h4>Paso 2: Obt\u00e9n los ID de entorno de cada sitio de WordPress<\/h4>\n<p>Cada sitio puede tener varios entornos (como producci\u00f3n o staging), y las copias de seguridad se activan por entorno. Para recuperar los ID de entorno de cada sitio, haz otra llamada a la API al endpoint <code>GET \/sites\/{site_id}\/environments<\/code>.<\/p>\n<p>Aqu\u00ed tienes una funci\u00f3n de ejemplo que recupera los entornos de un sitio espec\u00edfico:<\/p>\n<pre><code class=\"language-js\">async function getSiteEnvironments(siteId) {\n    const response = await fetch(`${KINSTA_API_URL}\/sites\/${siteId}\/environments`, {\n        headers: {\n            Authorization: `Bearer ${API_KEY}`\n        }\n    });\n    const data = await response.json();\n    return data.site.environments;\n}<\/code><\/pre>\n<h4>Paso 3: Activar copias de seguridad para cada entorno<\/h4>\n<p>Una vez que tengas los ID de entorno, puedes activar copias de seguridad para cada entorno utilizando el endpoint <code>POST \/sites\/environments\/{env_id}\/manual-backups<\/code>. La API te permite crear una copia de seguridad manual proporcionando un ID de entorno y una etiqueta opcional para identificar la copia de seguridad.<\/p>\n<p>A continuaci\u00f3n se explica c\u00f3mo activar una copia de seguridad para un entorno determinado:<\/p>\n<pre><code class=\"language-js\">async function createBackup(environmentId, tag) {\n    const response = await fetch(`${KINSTA_API_URL}\/sites\/environments\/${environmentId}\/manual-backups`, {\n        method: 'POST',\n        headers: {\n            Authorization: `Bearer ${API_KEY}`,\n            'Content-Type': 'application\/json'\n        },\n        body: JSON.stringify({ tag })\n    });\n\n    if (response.ok) {\n        console.log(`Backup created for environment ${environmentId} with tag: ${tag}`);\n    } else {\n        console.error(`Failed to create backup for environment ${environmentId}`);\n    }\n}<\/code><\/pre>\n<p>Esta funci\u00f3n activa una copia de seguridad manual para el ID de entorno dado. Tambi\u00e9n puedes etiquetar la copia de seguridad para identificarla m\u00e1s f\u00e1cilmente.<\/p>\n<h4>Paso 4: Automatizar las copias de seguridad de todos los centros<\/h4>\n<p>Ahora que tienes funciones para obtener todos los sitios, recuperar los ID de entorno y activar las copias de seguridad, puedes combinarlas para crear un script que automatice las copias de seguridad de todos los sitios de tu cuenta de Kinsta.<\/p>\n<p>As\u00ed es como puedes unirlo todo:<\/p>\n<pre><code class=\"language-js\">async function backupAllSites() {\n    const sites = await getAllSites();\n\n    for (const site of sites) {\n        const environments = await getSiteEnvironments(site.id);\n\n        for (const environment of environments) {\n            await createBackup(environment.id, `Backup-${new Date().toISOString()}`);\n        }\n    }\n\n    console.log('Backups for all sites have been triggered.');\n}<\/code><\/pre>\n<p>Esta funci\u00f3n recorre todos los sitios, recupera sus entornos y activa las copias de seguridad de cada entorno con una etiqueta con fecha y hora.<\/p>\n<p>Ahora, cuando ejecutes <code>backupAllSites()<\/code>, se activar\u00e1 una copia de seguridad para cada entorno de tu cuenta Kinsta.<\/p>\n<h4>Ejemplo de comando Slack<\/h4>\n<p>Puedes integrar este proceso de copia de seguridad en un comando Slack para facilitar a\u00fan m\u00e1s la gesti\u00f3n. Con la <a href=\"https:\/\/kinsta.com\/es\/blog\/construir-slackbot-para-gestion-de-sitios\/\">configuraci\u00f3n de una aplicaci\u00f3n Slack<\/a>, los usuarios pueden activar copias de seguridad en todos los sitios con un \u00fanico comando como <code>\/backup_all_sites<\/code>.<\/p>\n<p>Aqu\u00ed tienes un ejemplo r\u00e1pido de c\u00f3mo podr\u00eda funcionar:<\/p>\n<pre><code class=\"language-js\">app.command('\/backup_all_sites', async ({ ack, say }) =&gt; {\n    await ack();\n    await backupAllSites();\n    say('Backups for all sites have been triggered.');\n});<\/code><\/pre>\n<h3>Activar copias de seguridad de sitios seleccionados utilizando IDs de entornos<\/h3>\n<p>En algunos casos, puede que quieras activar copias de seguridad s\u00f3lo para sitios o entornos espec\u00edficos, en lugar de para todos los sitios de tu cuenta Kinsta. Esto puede ser \u00fatil si te interesa hacer copias de seguridad s\u00f3lo de entornos de producci\u00f3n o de determinados sitios de alta prioridad.<\/p>\n<p>Utilizando la API de Kinsta, podemos automatizar las copias de seguridad de entornos seleccionados pasando un array de IDs de entornos. Veamos c\u00f3mo hacerlo.<\/p>\n<h4>Paso 1: Pasar IDs de entornos<\/h4>\n<p>Cuando quieras activar las copias de seguridad de los sitios seleccionados, necesitar\u00e1s los IDs de entorno de esos sitios. Puedes codificar estos IDs, recuperarlos de la API de Kinsta o pasarlos din\u00e1micamente (por ejemplo, a trav\u00e9s de un argumento de la l\u00ednea de comandos, un comando de Slack, etc.).<\/p>\n<p>Aqu\u00ed tienes una funci\u00f3n que acepta un array de IDs de entorno y activa copias de seguridad para cada uno de ellos:<\/p>\n<pre><code class=\"language-js\">async function backupSelectedEnvironments(environmentIds, tag) {\n    for (const envId of environmentIds) {\n        await createBackup(envId, tag);\n    }\n}<\/code><\/pre>\n<p>La funci\u00f3n anterior recibe un array de identificadores de entorno de los que quieres hacer una copia de seguridad (<code>environmentIds<\/code>). La funci\u00f3n <code>createBackup(envId, tag)<\/code> activa la copia de seguridad de cada entorno del array mediante la funci\u00f3n <code>createBackup()<\/code> (explicada en el Paso 2).<\/p>\n<h4>Paso 2: Activar la copia de seguridad<\/h4>\n<p>Para activar la copia de seguridad real de cada entorno, utiliza el endpoint<code>POST \/sites\/environments\/{env_id}\/manual-backups<\/code> de la API de Kinsta, como hicimos para todos los sitios. As\u00ed es como funciona:<\/p>\n<pre><code class=\"language-js\">async function createBackup(environmentId, tag) {\n    const response = await fetch(`${KINSTA_API_URL}\/sites\/environments\/${environmentId}\/manual-backups`, {\n        method: 'POST',\n        headers: {\n            Authorization: `Bearer ${API_KEY}`,\n            'Content-Type': 'application\/json'\n        },\n        body: JSON.stringify({ tag })\n    });\n\n    if (response.ok) {\n        console.log(`Backup created for environment ${environmentId} with tag: ${tag}`);\n    } else {\n        console.error(`Failed to create backup for environment ${environmentId}: ${response.statusText}`);\n    }\n}<\/code><\/pre>\n<h4>Paso 3: Ejecutar las copias de seguridad de los entornos seleccionados<\/h4>\n<p>Ahora que tenemos funciones para activar copias de seguridad y manejar m\u00faltiples entornos, podemos combinarlas para hacer copias de seguridad de entornos espec\u00edficos. Este ejemplo supone que ya tenemos los IDs de los entornos de los que queremos hacer copias de seguridad.<\/p>\n<pre><code class=\"language-js\">const selectedEnvironments = ['12345', '67890']; \/\/ Replace with actual environment IDs\nbackupSelectedEnvironments(selectedEnvironments, 'Manual Backup');<\/code><\/pre>\n<p>En este caso<\/p>\n<ul>\n<li>El array <code>selectedEnvironments<\/code> contiene los ID de entorno de los que quieres hacer una copia de seguridad.<\/li>\n<li>La funci\u00f3n <code>backupSelectedEnvironments()<\/code> recorre cada ID y activa la copia de seguridad con la etiqueta \u00abCopia de seguridad manual\u00bb.<\/li>\n<\/ul>\n<h4>Ejemplo de comando Slack<\/h4>\n<p>Si utilizas una aplicaci\u00f3n Slack o una interfaz de l\u00ednea de comandos, tambi\u00e9n puedes permitir que los usuarios especifiquen de qu\u00e9 entornos quieren hacer una copia de seguridad.<\/p>\n<p>A continuaci\u00f3n te explicamos c\u00f3mo podr\u00edas implementar esto en una aplicaci\u00f3n Slack:<\/p>\n<pre><code class=\"language-js\">app.command('\/backup_selected_envs', async ({ command, ack, say }) =&gt; {\n    await ack();\n    const [tag, ...envIds] = command.text.split(' ');  \/\/ First part is the tag, rest are env IDs\n    await backupSelectedEnvironments(envIds, tag);\n    say(`Backups triggered for selected environments with tag ${tag}.`);\n});<\/code><\/pre>\n<p>El usuario introduce un comando como <code>\/backup_selected_envs Backup-Tag 12345 67890<\/code>, donde <code>Backup-Tag<\/code> es la etiqueta, y <code>12345, 67890<\/code> son los IDs de los entornos.<\/p>\n<p>El texto del comando se divide y los IDs de los entornos se pasan a la funci\u00f3n <code>backupSelectedEnvironments()<\/code>.<\/p>\n<p>Tras activar las copias de seguridad, la aplicaci\u00f3n responde al usuario confirmando la copia de seguridad.<\/p>\n<h2>Programar copias de seguridad para tus sitios de WordPress<\/h2>\n<p>Uno de los aspectos m\u00e1s potentes de la automatizaci\u00f3n es la posibilidad de programar tareas en momentos concretos sin intervenci\u00f3n manual.<\/p>\n<p>Ahora que hemos visto c\u00f3mo activar las copias de seguridad de todos los sitios y de los sitios seleccionados, el siguiente paso es automatizar estos procesos a\u00f1adiendo la programaci\u00f3n.<\/p>\n<p>Tanto si quieres programar las copias de seguridad localmente, en una plataforma alojada como Kinsta, o din\u00e1micamente a trav\u00e9s de Slack, hay varias formas de hacerlo.<\/p>\n<h3>Comprender las expresiones cron<\/h3>\n<p>Antes de explorar los distintos enfoques para programar copias de seguridad, es importante comprender las expresiones cron, que se utilizan para especificar el momento de las tareas programadas en distintas plataformas y herramientas.<\/p>\n<p>Las expresiones cron definen cu\u00e1ndo debe ejecutarse una tarea. Se utilizan en muchas bibliotecas y servicios de programaci\u00f3n, como <a href=\"https:\/\/www.npmjs.com\/package\/node-cron\" target=\"_blank\" rel=\"noopener noreferrer\">node-cron<\/a>, <a href=\"https:\/\/www.npmjs.com\/package\/node-schedule\" target=\"_blank\" rel=\"noopener noreferrer\">node-schedule<\/a>, e incluso en tareas cron del servidor, como las disponibles en la plataforma de <a href=\"https:\/\/sevalla.com\/application-hosting\/\">Alojamiento de Aplicaciones de Kinsta<\/a>.<\/p>\n<p>Las expresiones cron constan de cinco campos, cada uno de los cuales controla un aspecto espec\u00edfico de cu\u00e1ndo debe ejecutarse la tarea. Una expresi\u00f3n cron t\u00edpica tiene este aspecto<\/p>\n<pre><code class=\"language-js\">* * * * *\n| | | | |\n| | | | \u2514\u2500\u2500\u2500 Day of the week (0 - 7) (Sunday to Saturday, 0 and 7 represent Sunday)\n| | | \u2514\u2500\u2500\u2500\u2500\u2500\u2500 Month (1 - 12)\n| | \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 Day of the month (1 - 31)\n| \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 Hour (0 - 23)\n\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 Minute (0 - 59)<\/code><\/pre>\n<p>Vamos a desglosar lo que representa cada campo:<\/p>\n<ul>\n<li><strong>Minute<\/strong>: El minuto de la hora en que debe ejecutarse la tarea (0 &#8211; 59).<\/li>\n<li><strong>Hour<\/strong>: La hora del d\u00eda en que debe ejecutarse la tarea (0 &#8211; 23).<\/li>\n<li><strong>Day of the month<\/strong>:\u00a0El d\u00eda concreto del mes en que debe ejecutarse la tarea (1 &#8211; 31).<\/li>\n<li><strong>Month<\/strong>: El mes del a\u00f1o para ejecutar la tarea (1 &#8211; 12).<\/li>\n<li><strong>Day of the week<\/strong>: El d\u00eda concreto de la semana para ejecutar la tarea (0 &#8211; 7, donde 0 y 7 representan el domingo).<\/li>\n<\/ul>\n<p>Puedes utilizar valores espec\u00edficos, caracteres comod\u00edn (<code>*<\/code>) o rangos en cada campo para definir la programaci\u00f3n.<\/p>\n<p>Ejemplos de expresiones cron:<\/p>\n<ul>\n<li><code>0 0 * * *<\/code>: Todos los d\u00edas a medianoche (00:00)<\/li>\n<li><code>0 3 * * 1<\/code>: Todos los lunes a las 3 de la madrugada<\/li>\n<li><code>*\/10 * * * *<\/code>: Cada 10 minutos<\/li>\n<li><code>0 9-18 * * *<\/code>: Cada hora entre las 9 h y las 18 h.<\/li>\n<\/ul>\n<p>Con una s\u00f3lida comprensi\u00f3n de las expresiones cron, ahora podemos pasar a los distintos m\u00e9todos para programar copias de seguridad de tus sitios de WordPress utilizando la API de Kinsta.<\/p>\n<h3>M\u00e9todo 1: Programar localmente con node-cron<\/h3>\n<p>El paquete <a href=\"https:\/\/www.npmjs.com\/package\/node-cron\" target=\"_blank\" rel=\"noopener noreferrer\">node-cron<\/a> de Node.js puede ejecutar tareas programadas basadas en una sintaxis similar a cron. Es ideal para ejecutar tareas automatizadas en aplicaciones Node.js locales o independientes, y es una opci\u00f3n popular para programar copias de seguridad, enviar correos electr\u00f3nicos o ejecutar otras tareas recurrentes.<\/p>\n<p>En node-cron, defines una tarea (como tu funci\u00f3n de copia de seguridad) y utilizas una expresi\u00f3n cron para especificar cu\u00e1ndo debe ejecutarse la tarea. La expresi\u00f3n cron consta de cinco campos que definen el minuto, la hora, el d\u00eda del mes, el mes y el d\u00eda de la semana en que debe ejecutarse la tarea.<\/p>\n<p>Primero, instala node-cron en tu proyecto:<\/p>\n<pre><code class=\"language-bash\">npm install node-cron<\/code><\/pre>\n<p>Supongamos que quieres programar una copia de seguridad diaria de todos los sitios a medianoche utilizando node-cron. As\u00ed es como puedes hacerlo:<\/p>\n<pre><code class=\"language-js\">const cron = require('node-cron');\nconst { backupAllSites } = require('.\/app');  \/\/ Import the backup function\n\n\/\/ Schedule to run backups for all sites at midnight every day\ncron.schedule('0 0 * * *', () =&gt; {\n  console.log('Running scheduled backup for all sites at midnight...');\n  backupAllSites();\n});<\/code><\/pre>\n<p>Del mismo modo, si quieres hacer una copia de seguridad de entornos seleccionados todos los d\u00edas a las 2 de la madrugada, podr\u00edas programarlo as\u00ed:<\/p>\n<pre><code class=\"language-js\">cron.schedule('0 2 * * *', () =&gt; {\n  const environmentIds = ['env12345', 'env67890']; \/\/ Specific environments to back up\n  console.log('Running scheduled backup for selected environments...');\n  backupSelectedEnvironments(environmentIds, 'Scheduled Backup');\n});<\/code><\/pre>\n<h3>M\u00e9todo 2: Utilizar cron jobs en el alojamiento en la nube (como Kinsta)<\/h3>\n<p>Cuando despliegues tu aplicaci\u00f3n Node.js en una plataforma como la de Kinsta, puedes aprovechar la funcionalidad de <a href=\"https:\/\/docs.sevalla.com\/applications\/processes#cron-job-process\">cron job<\/a> integrada en la plataforma para programar tareas como las copias de seguridad. Sin embargo, la configuraci\u00f3n de cron job en entornos en la nube requiere una estructura ligeramente diferente a la de las herramientas de programaci\u00f3n locales como node-cron.<\/p>\n<p>Cuando despliegas tu aplicaci\u00f3n en Kinsta, debe tener un proceso web en ejecuci\u00f3n (aunque no est\u00e9 sirviendo tr\u00e1fico web).<\/p>\n<p>Para asegurarte de que tu proyecto se ejecuta correctamente y no llama autom\u00e1ticamente a funciones de copia de seguridad, puedes crear un archivo que ejecute un servidor web simple. Este archivo act\u00faa como un proceso web \u00abficticio\u00bb, mientras que los cron jobs se encargan de la l\u00f3gica de la copia de seguridad.<\/p>\n<p>Puedes a\u00f1adir este c\u00f3digo:<\/p>\n<pre><code class=\"language-js\">require('http').createServer((req, res) =&gt; {\n    res.writeHead(302, { Location: 'https:\/\/www.google.com' });\n    res.end();\n}).listen(process.env.PORT);<\/code><\/pre>\n<p>De esta forma, puedes configurar el comando script para distinguir entre el proceso web (<code>start<\/code>) y el proceso de cron job (<code>cron<\/code>).<\/p>\n<pre><code class=\"language-js\">  \"scripts\": {\n    \"start\": \"node index.js\",  \/\/ Web process\n    \"cron\": \"node app.js\"  \/\/ Cron job process\n  },<\/code><\/pre>\n<p>Por \u00faltimo, configura el cron job en Kinsta para que llame a tu funci\u00f3n de copia de seguridad a la hora especificada. Mediante la configuraci\u00f3n del cron job, puedes definir el comando para ejecutar la copia de seguridad.<\/p>\n<p>En la pesta\u00f1a <strong>Procesos <\/strong>de las aplicaciones del panel de MyKinsta, establece el comando para el proceso web:<\/p>\n<pre><code class=\"language-bash\">npm run start<\/code><\/pre>\n<p>Y configura el comando del cron job como:<\/p>\n<pre><code class=\"language-bash\">npm run cron<\/code><\/pre>\n<p>Para ejecutar el cron job a una hora determinada (todos los d\u00edas a las 11:30 a.m.), establece la expresi\u00f3n cron de la siguiente manera:<\/p>\n<pre><code class=\"language-bash\">30 11 * * *<\/code><\/pre>\n<p>Este comando activar\u00e1 la funci\u00f3n <code>backupAllSites()<\/code> todos los d\u00edas a las 11:30 de la ma\u00f1ana.<\/p>\n<figure style=\"width: 1001px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2024\/10\/cron-job-app-hosting.png\" alt=\"Configurar un cron job en el Alojamiento de Aplicaciones de Kinsta.\" width=\"1001\" height=\"471\"><figcaption class=\"wp-caption-text\">Configurar un cron job en el Alojamiento de Aplicaciones de Kinsta.<\/figcaption><\/figure>\n<h3>M\u00e9todo 3: Programaci\u00f3n con node-schedule<\/h3>\n<p>Otra biblioteca de Node.js, <a href=\"https:\/\/www.npmjs.com\/package\/node-schedule\" target=\"_blank\" rel=\"noopener noreferrer\">node-schedule<\/a>, puede programar tareas utilizando el formato cron y tambi\u00e9n admite programaciones m\u00e1s complejas.<\/p>\n<p>Aqu\u00ed tienes un ejemplo que permite a los usuarios programar copias de seguridad a trav\u00e9s de Slack utilizando el formato cron de node-schedule:<\/p>\n<pre><code class=\"language-js\">const schedule = require('node-schedule');\nconst { backupAllSites } = require('.\/app');\n\n\/\/ Slack command to schedule backups dynamically\napp.command('\/schedule_backup', async ({ command, ack, say }) =&gt; {\n    await ack();\n\n    \/\/ Extract hour and minute from the command (expects HH:MM format)\n    const [hour, minute] = command.text.split(':');\n\n    \/\/ Validate input\n    if (!hour || !minute) {\n        say('Please specify the time in HH:MM format.');\n        return;\n    }\n\n    \/\/ Schedule the backup using node-schedule's cron-like format\n    const job = schedule.scheduleJob(`${minute} ${hour} * * *`, () =&gt; {\n        console.log(`Running scheduled backup at ${hour}:${minute}`);\n        backupAllSites();  \/\/ This triggers the backup for all sites\n    });\n\n    say(`Backup scheduled at ${hour}:${minute} successfully.`);\n});<\/code><\/pre>\n<p>Por ejemplo, un usuario podr\u00eda ejecutar el siguiente comando de Slack para programar una copia de seguridad para las 11:30 de la noche:<\/p>\n<pre><code class=\"language-bash\">\/schedule_backup 23:30<\/code><\/pre>\n<p>Despu\u00e9s de ejecutar este comando, la copia de seguridad se programar\u00e1 para que se ejecute a las 11:30 p.m. todos los d\u00edas. La respuesta de Slack podr\u00eda ser la siguiente:<\/p>\n<pre><code class=\"language-bash\">Backup scheduled at 23:30 successfully.<\/code><\/pre>\n<p>Este enfoque permite a los usuarios programar copias de seguridad din\u00e1micamente desde Slack, simplemente especificando la hora sin necesidad de interactuar con el servidor o el c\u00f3digo de la aplicaci\u00f3n. Es una forma flexible y potente de gestionar tareas programadas, como las copias de seguridad, de forma sencilla para el usuario.<\/p>\n<aside role=\"note\" class=\"wp-block-kinsta-notice is-style-info\">\n            <h3>Info<\/h3>\n        <p>Si gestionas tu equipo a trav\u00e9s de Slack, puedes clonar nuestro <a href=\"https:\/\/github.com\/kinsta\/SlackBot-Kinsta-API\" target=\"_blank\" rel=\"noopener noreferrer\">proyecto Slackbot<\/a>, que se integra con la API de Kinsta para gestionar diversas operaciones. Simplemente ajusta las <a href=\"https:\/\/github.com\/kinsta\/SlackBot-Kinsta-API?tab=readme-ov-file#environment-variables\" target=\"_blank\" rel=\"noopener noreferrer\">variables de entorno<\/a> para reflejar tus secretos de la API de Kinsta y Slack, y estar\u00e1s listo para empezar. Para instrucciones detalladas de configuraci\u00f3n y comandos disponibles, consulta el <a href=\"https:\/\/github.com\/kinsta\/SlackBot-Kinsta-API\/blob\/main\/README.md\" target=\"_blank\" rel=\"noopener noreferrer\">archivo README<\/a>.<\/p>\n<\/aside>\n\n<h2>Resumen<\/h2>\n<p>Programar copias de seguridad en varios sitios de WordPress es muy \u00fatil para las agencias que gestionan numerosos sitios web de clientes. Automatizar estas copias de seguridad no s\u00f3lo ahorra tiempo, sino que tambi\u00e9n garantiza la coherencia, reduce el riesgo de error humano y proporciona tranquilidad.<\/p>\n<p><em>\u00bfBeneficiar\u00eda esta soluci\u00f3n a tu agencia? Nos encantar\u00eda conocer tu opini\u00f3n. Comp\u00e1rtelas en la secci\u00f3n de comentarios m\u00e1s abajo<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Para las agencias de WordPress que gestionan sitios web de varios clientes, es esencial contar con una s\u00f3lida estrategia de copias de seguridad. En caso de &#8230;<\/p>\n","protected":false},"author":287,"featured_media":76993,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_kinsta_gated_content":false,"_kinsta_gated_content_redirect":"","footnotes":""},"tags":[],"topic":[1391,1270,1302],"class_list":["post-76992","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","topic-agencia","topic-api","topic-servicios-kinsta"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v24.6 (Yoast SEO v24.6) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Programar copias de seguridad para varios sitios con la API de Kinsta<\/title>\n<meta name=\"description\" content=\"Esta gu\u00eda aborda varios m\u00e9todos, como node-cron, cron jobs basados en la nube para agilizar la gesti\u00f3n de las copias de seguridad de las agencias.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/kinsta.com\/es\/blog\/programar-copias-seguridad-multiples-sitios-con-api\/\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Programar copias de seguridad para varios sitios con la API de Kinsta\" \/>\n<meta property=\"og:description\" content=\"Esta gu\u00eda aborda varios m\u00e9todos, como node-cron, cron jobs basados en la nube para agilizar la gesti\u00f3n de las copias de seguridad de las agencias.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/kinsta.com\/es\/blog\/programar-copias-seguridad-multiples-sitios-con-api\/\" \/>\n<meta property=\"og:site_name\" content=\"Kinsta\u00ae\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/kinsta.es\/\" \/>\n<meta property=\"article:published_time\" content=\"2024-11-04T08:03:07+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-12-10T14:23:37+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2024\/11\/schedule-backup-for-multiple-sites-with-kinsta-API.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1470\" \/>\n\t<meta property=\"og:image:height\" content=\"735\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Joel Olawanle\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:description\" content=\"Esta gu\u00eda aborda varios m\u00e9todos, como node-cron, cron jobs basados en la nube para agilizar la gesti\u00f3n de las copias de seguridad de las agencias.\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2024\/11\/schedule-backup-for-multiple-sites-with-kinsta-API-1024x512.png\" \/>\n<meta name=\"twitter:creator\" content=\"@olawanle_joel\" \/>\n<meta name=\"twitter:site\" content=\"@Kinsta_ES\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Joel Olawanle\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tiempo de lectura\" \/>\n\t<meta name=\"twitter:data2\" content=\"16 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/kinsta.com\/es\/blog\/programar-copias-seguridad-multiples-sitios-con-api\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/es\/blog\/programar-copias-seguridad-multiples-sitios-con-api\/\"},\"author\":{\"name\":\"Joel Olawanle\",\"@id\":\"https:\/\/kinsta.com\/es\/#\/schema\/person\/efa7de30245ca15be5ce1dcacff89c07\"},\"headline\":\"Programar copias de seguridad para varios sitios con la API de Kinsta\",\"datePublished\":\"2024-11-04T08:03:07+00:00\",\"dateModified\":\"2024-12-10T14:23:37+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/kinsta.com\/es\/blog\/programar-copias-seguridad-multiples-sitios-con-api\/\"},\"wordCount\":2653,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/es\/#organization\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/es\/blog\/programar-copias-seguridad-multiples-sitios-con-api\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2024\/11\/schedule-backup-for-multiple-sites-with-kinsta-API.png\",\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/kinsta.com\/es\/blog\/programar-copias-seguridad-multiples-sitios-con-api\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/kinsta.com\/es\/blog\/programar-copias-seguridad-multiples-sitios-con-api\/\",\"url\":\"https:\/\/kinsta.com\/es\/blog\/programar-copias-seguridad-multiples-sitios-con-api\/\",\"name\":\"Programar copias de seguridad para varios sitios con la API de Kinsta\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/es\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/kinsta.com\/es\/blog\/programar-copias-seguridad-multiples-sitios-con-api\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/es\/blog\/programar-copias-seguridad-multiples-sitios-con-api\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2024\/11\/schedule-backup-for-multiple-sites-with-kinsta-API.png\",\"datePublished\":\"2024-11-04T08:03:07+00:00\",\"dateModified\":\"2024-12-10T14:23:37+00:00\",\"description\":\"Esta gu\u00eda aborda varios m\u00e9todos, como node-cron, cron jobs basados en la nube para agilizar la gesti\u00f3n de las copias de seguridad de las agencias.\",\"breadcrumb\":{\"@id\":\"https:\/\/kinsta.com\/es\/blog\/programar-copias-seguridad-multiples-sitios-con-api\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/kinsta.com\/es\/blog\/programar-copias-seguridad-multiples-sitios-con-api\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/kinsta.com\/es\/blog\/programar-copias-seguridad-multiples-sitios-con-api\/#primaryimage\",\"url\":\"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2024\/11\/schedule-backup-for-multiple-sites-with-kinsta-API.png\",\"contentUrl\":\"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2024\/11\/schedule-backup-for-multiple-sites-with-kinsta-API.png\",\"width\":1470,\"height\":735},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/kinsta.com\/es\/blog\/programar-copias-seguridad-multiples-sitios-con-api\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/kinsta.com\/es\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"API\",\"item\":\"https:\/\/kinsta.com\/es\/secciones\/api\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Programar copias de seguridad para varios sitios con la API de Kinsta\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/kinsta.com\/es\/#website\",\"url\":\"https:\/\/kinsta.com\/es\/\",\"name\":\"Kinsta\u00ae\",\"description\":\"Soluciones de alojamiento premium, r\u00e1pidas y seguras\",\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/es\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/kinsta.com\/es\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/kinsta.com\/es\/#organization\",\"name\":\"Kinsta\",\"url\":\"https:\/\/kinsta.com\/es\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/kinsta.com\/es\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2023\/12\/kinsta-logo.jpeg\",\"contentUrl\":\"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2023\/12\/kinsta-logo.jpeg\",\"width\":500,\"height\":500,\"caption\":\"Kinsta\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/es\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/kinsta.es\/\",\"https:\/\/x.com\/Kinsta_ES\",\"https:\/\/www.instagram.com\/kinstahosting\/\",\"https:\/\/www.linkedin.com\/company\/kinsta\/\",\"https:\/\/www.pinterest.com\/kinstahosting\/\",\"https:\/\/www.youtube.com\/c\/Kinsta\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/kinsta.com\/es\/#\/schema\/person\/efa7de30245ca15be5ce1dcacff89c07\",\"name\":\"Joel Olawanle\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/kinsta.com\/es\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/051bf577ce2c837846a1db9eef184758?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/051bf577ce2c837846a1db9eef184758?s=96&d=mm&r=g\",\"caption\":\"Joel Olawanle\"},\"description\":\"Joel is a Frontend developer working at Kinsta as a Technical Editor. He is a passionate teacher with love for open source and has written over 300 technical articles majorly around JavaScript and it's frameworks.\",\"sameAs\":[\"https:\/\/joelolawanle.com\/\",\"https:\/\/www.linkedin.com\/in\/olawanlejoel\/\",\"https:\/\/x.com\/olawanle_joel\",\"https:\/\/www.youtube.com\/@joelolawanle\"],\"gender\":\"male\",\"knowsAbout\":[\"JavaScript\",\"React\",\"Next.js\"],\"knowsLanguage\":[\"English\"],\"jobTitle\":\"Technical Editor\",\"worksFor\":\"Kinsta\",\"url\":\"https:\/\/kinsta.com\/es\/blog\/author\/joelolawanle\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Programar copias de seguridad para varios sitios con la API de Kinsta","description":"Esta gu\u00eda aborda varios m\u00e9todos, como node-cron, cron jobs basados en la nube para agilizar la gesti\u00f3n de las copias de seguridad de las agencias.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/kinsta.com\/es\/blog\/programar-copias-seguridad-multiples-sitios-con-api\/","og_locale":"es_ES","og_type":"article","og_title":"Programar copias de seguridad para varios sitios con la API de Kinsta","og_description":"Esta gu\u00eda aborda varios m\u00e9todos, como node-cron, cron jobs basados en la nube para agilizar la gesti\u00f3n de las copias de seguridad de las agencias.","og_url":"https:\/\/kinsta.com\/es\/blog\/programar-copias-seguridad-multiples-sitios-con-api\/","og_site_name":"Kinsta\u00ae","article_publisher":"https:\/\/www.facebook.com\/kinsta.es\/","article_published_time":"2024-11-04T08:03:07+00:00","article_modified_time":"2024-12-10T14:23:37+00:00","og_image":[{"width":1470,"height":735,"url":"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2024\/11\/schedule-backup-for-multiple-sites-with-kinsta-API.png","type":"image\/png"}],"author":"Joel Olawanle","twitter_card":"summary_large_image","twitter_description":"Esta gu\u00eda aborda varios m\u00e9todos, como node-cron, cron jobs basados en la nube para agilizar la gesti\u00f3n de las copias de seguridad de las agencias.","twitter_image":"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2024\/11\/schedule-backup-for-multiple-sites-with-kinsta-API-1024x512.png","twitter_creator":"@olawanle_joel","twitter_site":"@Kinsta_ES","twitter_misc":{"Escrito por":"Joel Olawanle","Tiempo de lectura":"16 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/kinsta.com\/es\/blog\/programar-copias-seguridad-multiples-sitios-con-api\/#article","isPartOf":{"@id":"https:\/\/kinsta.com\/es\/blog\/programar-copias-seguridad-multiples-sitios-con-api\/"},"author":{"name":"Joel Olawanle","@id":"https:\/\/kinsta.com\/es\/#\/schema\/person\/efa7de30245ca15be5ce1dcacff89c07"},"headline":"Programar copias de seguridad para varios sitios con la API de Kinsta","datePublished":"2024-11-04T08:03:07+00:00","dateModified":"2024-12-10T14:23:37+00:00","mainEntityOfPage":{"@id":"https:\/\/kinsta.com\/es\/blog\/programar-copias-seguridad-multiples-sitios-con-api\/"},"wordCount":2653,"commentCount":0,"publisher":{"@id":"https:\/\/kinsta.com\/es\/#organization"},"image":{"@id":"https:\/\/kinsta.com\/es\/blog\/programar-copias-seguridad-multiples-sitios-con-api\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2024\/11\/schedule-backup-for-multiple-sites-with-kinsta-API.png","inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/kinsta.com\/es\/blog\/programar-copias-seguridad-multiples-sitios-con-api\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/kinsta.com\/es\/blog\/programar-copias-seguridad-multiples-sitios-con-api\/","url":"https:\/\/kinsta.com\/es\/blog\/programar-copias-seguridad-multiples-sitios-con-api\/","name":"Programar copias de seguridad para varios sitios con la API de Kinsta","isPartOf":{"@id":"https:\/\/kinsta.com\/es\/#website"},"primaryImageOfPage":{"@id":"https:\/\/kinsta.com\/es\/blog\/programar-copias-seguridad-multiples-sitios-con-api\/#primaryimage"},"image":{"@id":"https:\/\/kinsta.com\/es\/blog\/programar-copias-seguridad-multiples-sitios-con-api\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2024\/11\/schedule-backup-for-multiple-sites-with-kinsta-API.png","datePublished":"2024-11-04T08:03:07+00:00","dateModified":"2024-12-10T14:23:37+00:00","description":"Esta gu\u00eda aborda varios m\u00e9todos, como node-cron, cron jobs basados en la nube para agilizar la gesti\u00f3n de las copias de seguridad de las agencias.","breadcrumb":{"@id":"https:\/\/kinsta.com\/es\/blog\/programar-copias-seguridad-multiples-sitios-con-api\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/kinsta.com\/es\/blog\/programar-copias-seguridad-multiples-sitios-con-api\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/kinsta.com\/es\/blog\/programar-copias-seguridad-multiples-sitios-con-api\/#primaryimage","url":"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2024\/11\/schedule-backup-for-multiple-sites-with-kinsta-API.png","contentUrl":"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2024\/11\/schedule-backup-for-multiple-sites-with-kinsta-API.png","width":1470,"height":735},{"@type":"BreadcrumbList","@id":"https:\/\/kinsta.com\/es\/blog\/programar-copias-seguridad-multiples-sitios-con-api\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/kinsta.com\/es\/"},{"@type":"ListItem","position":2,"name":"API","item":"https:\/\/kinsta.com\/es\/secciones\/api\/"},{"@type":"ListItem","position":3,"name":"Programar copias de seguridad para varios sitios con la API de Kinsta"}]},{"@type":"WebSite","@id":"https:\/\/kinsta.com\/es\/#website","url":"https:\/\/kinsta.com\/es\/","name":"Kinsta\u00ae","description":"Soluciones de alojamiento premium, r\u00e1pidas y seguras","publisher":{"@id":"https:\/\/kinsta.com\/es\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/kinsta.com\/es\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":"Organization","@id":"https:\/\/kinsta.com\/es\/#organization","name":"Kinsta","url":"https:\/\/kinsta.com\/es\/","logo":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/kinsta.com\/es\/#\/schema\/logo\/image\/","url":"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2023\/12\/kinsta-logo.jpeg","contentUrl":"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2023\/12\/kinsta-logo.jpeg","width":500,"height":500,"caption":"Kinsta"},"image":{"@id":"https:\/\/kinsta.com\/es\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/kinsta.es\/","https:\/\/x.com\/Kinsta_ES","https:\/\/www.instagram.com\/kinstahosting\/","https:\/\/www.linkedin.com\/company\/kinsta\/","https:\/\/www.pinterest.com\/kinstahosting\/","https:\/\/www.youtube.com\/c\/Kinsta"]},{"@type":"Person","@id":"https:\/\/kinsta.com\/es\/#\/schema\/person\/efa7de30245ca15be5ce1dcacff89c07","name":"Joel Olawanle","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/kinsta.com\/es\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/051bf577ce2c837846a1db9eef184758?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/051bf577ce2c837846a1db9eef184758?s=96&d=mm&r=g","caption":"Joel Olawanle"},"description":"Joel is a Frontend developer working at Kinsta as a Technical Editor. He is a passionate teacher with love for open source and has written over 300 technical articles majorly around JavaScript and it's frameworks.","sameAs":["https:\/\/joelolawanle.com\/","https:\/\/www.linkedin.com\/in\/olawanlejoel\/","https:\/\/x.com\/olawanle_joel","https:\/\/www.youtube.com\/@joelolawanle"],"gender":"male","knowsAbout":["JavaScript","React","Next.js"],"knowsLanguage":["English"],"jobTitle":"Technical Editor","worksFor":"Kinsta","url":"https:\/\/kinsta.com\/es\/blog\/author\/joelolawanle\/"}]}},"acf":[],"_links":{"self":[{"href":"https:\/\/kinsta.com\/es\/wp-json\/wp\/v2\/posts\/76992","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kinsta.com\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kinsta.com\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kinsta.com\/es\/wp-json\/wp\/v2\/users\/287"}],"replies":[{"embeddable":true,"href":"https:\/\/kinsta.com\/es\/wp-json\/wp\/v2\/comments?post=76992"}],"version-history":[{"count":8,"href":"https:\/\/kinsta.com\/es\/wp-json\/wp\/v2\/posts\/76992\/revisions"}],"predecessor-version":[{"id":77019,"href":"https:\/\/kinsta.com\/es\/wp-json\/wp\/v2\/posts\/76992\/revisions\/77019"}],"alternate":[{"embeddable":true,"hreflang":"en","title":"English","href":"https:\/\/kinsta.com\/es\/wp-json\/kinsta\/v1\/posts\/76992\/translations\/en"},{"embeddable":true,"hreflang":"it","title":"Italian","href":"https:\/\/kinsta.com\/es\/wp-json\/kinsta\/v1\/posts\/76992\/translations\/it"},{"embeddable":true,"hreflang":"pt","title":"Portuguese","href":"https:\/\/kinsta.com\/es\/wp-json\/kinsta\/v1\/posts\/76992\/translations\/pt"},{"embeddable":true,"hreflang":"fr","title":"French","href":"https:\/\/kinsta.com\/es\/wp-json\/kinsta\/v1\/posts\/76992\/translations\/fr"},{"embeddable":true,"hreflang":"de","title":"German","href":"https:\/\/kinsta.com\/es\/wp-json\/kinsta\/v1\/posts\/76992\/translations\/de"},{"embeddable":true,"hreflang":"ja","title":"Japanese","href":"https:\/\/kinsta.com\/es\/wp-json\/kinsta\/v1\/posts\/76992\/translations\/jp"},{"embeddable":true,"hreflang":"nl","title":"Dutch","href":"https:\/\/kinsta.com\/es\/wp-json\/kinsta\/v1\/posts\/76992\/translations\/nl"},{"embeddable":true,"hreflang":"es","title":"Spanish","href":"https:\/\/kinsta.com\/es\/wp-json\/kinsta\/v1\/posts\/76992\/translations\/es"},{"href":"https:\/\/kinsta.com\/es\/wp-json\/kinsta\/v1\/posts\/76992\/tree"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kinsta.com\/es\/wp-json\/wp\/v2\/media\/76993"}],"wp:attachment":[{"href":"https:\/\/kinsta.com\/es\/wp-json\/wp\/v2\/media?parent=76992"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kinsta.com\/es\/wp-json\/wp\/v2\/tags?post=76992"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/kinsta.com\/es\/wp-json\/wp\/v2\/topic?post=76992"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}