es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Sincronización automática entre dos unidades compartidas de Google Drive.

Pregunta:
Tengo dos Google Shared Drives (Team Drives), digamos Movies y MoviesBackup. Necesito hacer una copia de seguridad de todo lo que suba a Movies en MoviesBackup. Para esto, necesito una sincronización unidireccional de Movies a MoviesBackup, una vez al día.

Lo que he intentado:
Conozco Rclone, y he utilizado su Interfaz de Línea de Comandos para sincronizar entre dos Shared Drives. Tal vez si se puede utilizar Rclone desde Google AppScript, podría configurar un disparador diario. Pero parece que no encuentro una forma de hacerlo.

Se agradecerán otras soluciones que funcionen.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Hay varias soluciones posibles para lograr la sincronización unidireccional entre dos Google Shared Drives:

    1. Usando Rclone desde Google Apps Script: Dado que ya has utilizado Rclone CLI, puedes intentar utilizarlo desde Google Apps Script llamando a su interfaz de línea de comandos utilizando la clase Shell. Puedes crear una función de Google Apps Script que ejecute el comando Rclone para sincronizar los dos Shared Drives, luego configurar un desencadenador diario utilizando el servicio Triggers. Así es como puede verse el script:
      function syncMoviesToBackup() {
       // Reemplaza con tu comando Rclone
       var command = 'rclone sync "Movies:" "MoviesBackup:"';
      
       var shell = new ActiveXObject('WScript.Shell');
       shell.Run(command, 0, true);
      }
      
      // Configura el desencadenador diario
      ScriptApp.newTrigger('syncMoviesToBackup')
             .timeBased()
             .atHour(0) // Cambia a la hora deseada
             .everyDays(1)
             .create();
      

      Ten en cuenta que esta solución puede requerir habilidades de programación avanzadas y acceso a herramientas de línea de comandos.

    2. Usando la API de Google Drive: Otra solución es utilizar la API de Google Drive para monitorear los cambios en el Shared Drive Movies, luego copiar o mover los nuevos archivos a MoviesBackup. Puedes crear una función de Google Apps Script que escanee periódicamente el Shared Drive Movies en busca de nuevos archivos, luego los copie o mueva a MoviesBackup utilizando el servicio DriveApp. Así es como puede verse el script:

      function backupMoviesToBackup() {
       var sourceFolderName = 'Movies';
       var targetFolderName = 'MoviesBackup';
      
       // Obtén las carpetas de origen y destino
       var sourceFolder = DriveApp.getFoldersByName(sourceFolderName).next();
       var targetFolder = DriveApp.getFoldersByName(targetFolderName).next();
      
       // Obtén los archivos en la carpeta de origen que no se han copiado o movido a la carpeta de destino
       var files = sourceFolder.getFiles();
       while (files.hasNext()) {
         var file = files.next();
         var targetFile = targetFolder.getFilesByName(file.getName()).nextOr(null);
         if (!targetFile) {
           // Copia o mueve el archivo a la carpeta de destino
           var fileCopy = file.makeCopy(file.getName(), targetFolder);
           // Elimina la siguiente línea para copiar en lugar de mover
           file.setTrashed(true);
         }
       }
      }
      
      // Configura el desencadenador diario
      ScriptApp.newTrigger('backupMoviesToBackup')
             .timeBased()
             .atHour(0) // Cambia a la hora deseada
             .everyDays(1)
             .create();
      

      Esta solución puede requerir algunas modificaciones para adaptarse a tus necesidades específicas, como manejar archivos duplicados e implementar la gestión de errores.

    3. Usando un servicio de terceros: Por último, puedes considerar el uso de un servicio de copia de seguridad en la nube de terceros que admita Google Shared Drives. Esta solución requiere configurar una cuenta con el servicio y configurar las opciones de copia de seguridad, pero puede proporcionar características adicionales como versionado y programación. Algunos ejemplos de tales servicios son Backblaze, CloudBerry y Spinbackup.

      Esta solución puede generar costos adicionales y puede no ser adecuada para datos sensibles.

Comments are closed.