Operaciones con ficheros (copiar, borrar) desde tarea cron no funcionan
Publicado: 16 Mar 2024, 16:34
Hola a todos.
Tengo una raspberry modelo 3A donde estoy recogiendo datos de varios sensores. Los datos los proceso con un script en python y los almaceno en un fichero datos.csv.
Quiero hacer una copia de seguridad del fichero datos.csv de forma periódica, cada 15 días. Para ello he preparado un script en php que hace lo siguiente:
- Comprime el fichero datos.csv mediante shellexec y 7z a un fichero ./ruta_copia_seg/datos_202403_001.7z. 202403 es el año y el mes y 001 es la primera copia, 002 será la segunda.
- Comprueba que la copia comprimida es correcta con 7z t ./ruta_copia_seg/datos_202403_001.7z. Para ello recojo la salida y busco la cadena "Everithing is Ok".
- Si todo va bien, borra el fichero datos.csv y copia una plantilla ./res/datos-vacio.csv a un nuevo fichero datos.csv en blanco para empezar a recoger datos.
Todo esto se hace de forma correcta si ejecuto el fichero php desde la terminal, pero, aquí está el problema, si lo hago desde una tarea cron, no funciona nada.
Tarea cron:
55 23 15,L * * sudo php /home/angel/run/opficheros.php >> /home/angel/run/opficheros.log 2 >> /home/angel/run/fallos.log
En la variable var/log/syslog obtengo el error:
Mar 16 15:51:01 raspberrypi CRON[4619]: (CRON) info (No MTA installed, discarding output)
Y el fichero fallos.log:
./ruta_copia_seg/datos_202403_002.7z comprimido correcto<br>2024-03-16 15:51:01 Hubo un error al copiar la plantilla.
Leyendo en foros, he visto que "No MTA..." es un fallo que se da cuando quieres enviar ficheros por email y se puede corregir instalando postfix, pero leo que esto instala un servidor SMTP. ¿Necesito un servidor SMTP para trabajar con ficheros en local desde una tarea cron?
Tengo una raspberry modelo 3A donde estoy recogiendo datos de varios sensores. Los datos los proceso con un script en python y los almaceno en un fichero datos.csv.
Quiero hacer una copia de seguridad del fichero datos.csv de forma periódica, cada 15 días. Para ello he preparado un script en php que hace lo siguiente:
- Comprime el fichero datos.csv mediante shellexec y 7z a un fichero ./ruta_copia_seg/datos_202403_001.7z. 202403 es el año y el mes y 001 es la primera copia, 002 será la segunda.
- Comprueba que la copia comprimida es correcta con 7z t ./ruta_copia_seg/datos_202403_001.7z. Para ello recojo la salida y busco la cadena "Everithing is Ok".
- Si todo va bien, borra el fichero datos.csv y copia una plantilla ./res/datos-vacio.csv a un nuevo fichero datos.csv en blanco para empezar a recoger datos.
Todo esto se hace de forma correcta si ejecuto el fichero php desde la terminal, pero, aquí está el problema, si lo hago desde una tarea cron, no funciona nada.
Tarea cron:
55 23 15,L * * sudo php /home/angel/run/opficheros.php >> /home/angel/run/opficheros.log 2 >> /home/angel/run/fallos.log
En la variable var/log/syslog obtengo el error:
Mar 16 15:51:01 raspberrypi CRON[4619]: (CRON) info (No MTA installed, discarding output)
Y el fichero fallos.log:
./ruta_copia_seg/datos_202403_002.7z comprimido correcto<br>2024-03-16 15:51:01 Hubo un error al copiar la plantilla.
Leyendo en foros, he visto que "No MTA..." es un fallo que se da cuando quieres enviar ficheros por email y se puede corregir instalando postfix, pero leo que esto instala un servidor SMTP. ¿Necesito un servidor SMTP para trabajar con ficheros en local desde una tarea cron?