Tengo un sitio que requiere la capacidad de un administrador conectado para enviar una base de datos provisional a una base de datos en vivo. Lo primero que hace es volcar el sql y enviar a la base de datos de destino. Esto funciona bien, pero cuando voy a sincronizar las carpetas que contienen el material cargado, aparece un error. Esto SÓLO ocurre cuando se llama al script desde la vista, no desde la línea de comando o el shell de python. Esta es la función:Cómo sincronizar rsync a carpetas locales desde una vista Django
def copy_media(self, origin_folder, target_folder):
command_string = "rsync -a %s %s" % (origin_folder, target_folder)
return_code = subprocess.call(command_string, shell=True)
return return_code
El código de retorno es "12" cuando los errores. Mi mejor opción es que, dado que hay un retraso considerable antes de que el script termine de ejecutarse, la vista no sabe cómo esperar correctamente hasta que finalice. La otra conjetura que tuve fue que los caminos de alguna manera se arruinan desde dentro de la vista.
¿podría ser potencialmente debido a la autenticación de usuario establecida en los archivos? podrías probar la opción -o. ¿Intentó la opción -v en rsync para ver si se emiten advertencias? – Priyeshj
Lo intentaré ... ¿Alguna idea sobre la mejor manera de llamar a rsync desde una vista? – Sebastian
No use este código en producción a menos que esté muy seguro de que 'origin_folder' y' target_folder', de lo contrario, es propenso a una inyección de shell. –