Meteoclimatic
Software => WeeWX => Mensaje iniciado por: sunbloquer en 29 de Diciembre de 2016, 12:05:45
-
2000 años despues.....pido ayuda, por mas que he leido y releido no logro hacer backup. Lo estoy intentando realizar sobre un NAS, desde la raspi accedo a el, creo carpetas (creo que bien) pero a la hora de ejecutar el backup algo falla
Monto el directorio
sudo mount.cifs //192.168.1.9/Volume_1/Davis /home/pi/Davis -o user=minix
pi@raspberrypi:~ $ sudo mount.cifs //192.168.1.9/Volume_1/Davis /home/pi/Davis -o user=minix
Password for minix@//192.168.1.9/Volume_1/Davis: *************
pi@raspberrypi:~ $ cd Davis
pi@raspberrypi:~/Davis $ dir
pi@raspberrypi:~/Davis $ mkdir holahola
pi@raspberrypi:~/Davis $ dir
holahola
pi@raspberrypi:~/Davis $
Digo yo que este bien ya que me deja crear sobre el....
A la hora de ejecutar un simple backup
pi@raspberrypi:~ $ sudo sh mibackup.sh
mibackup.sh: 2: cd: can't cd to /home/pi/Davis/
mibackup.sh: 12: mibackup.sh: Syntax error: end of file unexpected (expecting "then")
El script en cuestion es este, uno de muchos que probe
#!/bin/bash
cd /home/pi/Davis/
if [ -e weewx.sdb.bak ];
then
mv weewx.sdb.bak weewx.sdb.bak2
else
echo "El archivo weewx.sdb.bak no existe"
fi
sudo sqlite3 /var/lib/weewx/weewx.sdb .dump > weewx.sdb.bak
exit
Sugerencias.....Gracias
-
Estás mezclando permisos de root, no root, etc, y menos lo puedes hacer en diferentes sesiones, ya que el script tiene su propio entorno, diferente al terminal que has abierto para montar el directorio con permisos de root con sudo.
Es una mezcla que no suele funcionar.
Y ¿por qué no?
#!/bin/bash
mount.cifs //192.168.1.9/Volume_1/Davis /home/pi/Davis -o user=minix password=manoloeldelbombo
cd /home/pi/Davis/
if [ -e weewx.sdb.bak ];
then
mv weewx.sdb.bak weewx.sdb.bak2
else
echo "El archivo weewx.sdb.bak no existe"
fi
sqlite3 /var/lib/weewx/weewx.sdb .dump > weewx.sdb.bak
umount /home/pi/Davis
exit
Lo debes ejecutar con permisos de root, bien con sudo, bien mediante crontab especificando que el usuario es root
Una pregunta, ¿por que utilizas sqlite3 en lugar de hacer una copia directa del arhcivo weewx.sdb?
-
Utilizar no utilizo nada de momento :D he visto un post de una contestación tuya a otro mensaje y vamos, se puede hacer de muchas formas.....Cogí una y vamos a probar....Pero como dices debo estar mezclado cosas, como dices mi idea era hacer eso, una copia de la bbdd sin más y después veremos.
Mañana pruebo eso por lo menos ahora ya estoy más orientado. Gracias jantoni
-
Yo cambiaría
sqlite3 /var/lib/weewx/weewx.sdb .dump > weewx.sdb.bak
por un simple
cp /var/lib/weewx/weewx.sdb /home/pi/Davis/weewx.sdb.bak
-
Lo he intentado todo y mas que todo y no hay manera me aseguro primero que no este montado ya
pi@raspberrypi:~ $ sudo mount
/dev/mmcblk0p2 on / type ext4 (rw,noatime,data=ordered)
devtmpfs on /dev type devtmpfs (rw,relatime,size=218256k,nr_inodes=54564,mode=755)
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime)
proc on /proc type proc (rw,relatime)
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev)
devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000)
tmpfs on /run type tmpfs (rw,nosuid,nodev,mode=755)
tmpfs on /run/lock type tmpfs (rw,nosuid,nodev,noexec,relatime,size=5120k)
tmpfs on /sys/fs/cgroup type tmpfs (ro,nosuid,nodev,noexec,mode=755)
cgroup on /sys/fs/cgroup/systemd type cgroup (rw,nosuid,nodev,noexec,relatime,xattr,release_agent=/lib/systemd/systemd-cgroups-agent,name=systemd)
cgroup on /sys/fs/cgroup/cpu,cpuacct type cgroup (rw,nosuid,nodev,noexec,relatime,cpu,cpuacct)
cgroup on /sys/fs/cgroup/blkio type cgroup (rw,nosuid,nodev,noexec,relatime,blkio)
cgroup on /sys/fs/cgroup/memory type cgroup (rw,nosuid,nodev,noexec,relatime,memory)
cgroup on /sys/fs/cgroup/devices type cgroup (rw,nosuid,nodev,noexec,relatime,devices)
cgroup on /sys/fs/cgroup/freezer type cgroup (rw,nosuid,nodev,noexec,relatime,freezer)
cgroup on /sys/fs/cgroup/net_cls type cgroup (rw,nosuid,nodev,noexec,relatime,net_cls)
systemd-1 on /proc/sys/fs/binfmt_misc type autofs (rw,relatime,fd=22,pgrp=1,timeout=300,minproto=5,maxproto=5,direct)
debugfs on /sys/kernel/debug type debugfs (rw,relatime)
mqueue on /dev/mqueue type mqueue (rw,relatime)
configfs on /sys/kernel/config type configfs (rw,relatime)
tmpfs on /var/log type tmpfs (rw,nosuid,nodev,relatime,size=20480k)
/dev/mmcblk0p1 on /boot type vfat (rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=ascii,shortname=mixed,errors=remount-ro)
binfmt_misc on /proc/sys/fs/binfmt_misc type binfmt_misc (rw,relatime)
pi@raspberrypi:~ $ sudo sh mibackup.sh
: not found: 2: mibackup.sh:
: not found: 4: mibackup.sh:
mibackup.sh: 5: cd: can't cd to /home/pi/Davis
: not found: 6: mibackup.sh:
mibackup.sh: 19: mibackup.sh: Syntax error: end of file unexpected (expecting "then")
Obviamente sigue sin montar, el sh es
#!/bin/bash
mount.cifs -o username=minix,password=xxxxxxxxx //192.168.1.9/Volume_1/Davis /home/pi/Davis
cd /home/pi/Davis
if [ -e weewx.sdb.bak ];
then
mv weewx.sdb.bak weewx.sdb.bak2
else
echo "El archivo weewx.sdb.bak no existe"
fi
cp /var/lib/weewx/weewx.sdb /home/pi/Davis/weewx.sdb.bak
umount /home/pi/Davis
exit
Si lo monto manualmente con la linea del script con sudo, monta
//192.168.1.9/Volume_1/Davis on /home/pi/Davis type cifs (rw,relatime,vers=1.0,cache=strict,username=minix,domain=NAS-DLINK,uid=0,noforceuid,gid=0,noforcegid,addr=192.168.1.9,unix,posixpaths,serverino,mapposix,acl,rsize=1048576,wsize=1048576,actimeo=1)
Tan dificil sera pasar un archivo de un sitio a otro? me tiene hablando solo, ayer hasta soñe con ello :; :; :; :; :;
-
Esto es en lo que me he roto la cabeza de momento.....he probado con otro script
#!/bin/bash
#
# weewx backup (originally based on wview)
TODAY=`date +%Y_%m_%d`
TMPDIR="/var/tmp"
ARCHIVE_FILE=weewx.sdb
STATS_FILE=stats.sdb
ARCHIVE_DIR=/var/lib/weewx
DESTDIR=/media
# if the archive isn't present, there is a typo above
if [ ! -f $ARCHIVE_DIR/$ARCHIVE_FILE ]; then
logger "$0 exiting - srcfile not found"
exit 1
fi
# weewx v3 eliminates the stats file
if [ -f $ARCHIVE_DIR/$STATS_FILE ]; then
STATS_PRESENT=1
fi
# stash a copy to a scratch directory without stopping weewx
# we rely on the os to ensure the file we copy is intact
# (crossing fingers)
cd $ARCHIVE_DIR
cp $ARCHIVE_FILE ${TMPDIR}
if [ x$STATS_PRESENT = "x1" ]; then
cp $STATS_FILE ${TMPDIR}
fi
# now work on the stashed files to gzip them with a timestamp
# this is done since it takes some time
cd "${TMPDIR}"
gzip -c ${ARCHIVE_FILE} > $ARCHIVE_FILE.$TODAY.gz
mv $ARCHIVE_FILE.$TODAY.gz $DESTDIR
if [ x$STATS_PRESENT = "x1" ]; then
gzip -c ${STATS_FILE} > $STATS_FILE.$TODAY.gz
mv $STATS_FILE.$TODAY.gz $DESTDIR
fi
# always nice to leave positive log messages
logger "WEEWX_BACKUP - complete to $DESTDIR"
# cleanup temporary stuff
rm -f "${TMPDIR}"/$ARCHIVE_FILE.$TODAY.gz
rm -f "${TMPDIR}"/$ARCHIVE_FILE
if [ x$STATS_PRESENT = "x1" ]; then
rm -f "${TMPDIR}"/$STATS_FILE.$TODAY.gz
rm -f "${TMPDIR}"/$STATS_FILE
fi
Monte la carpeta en /media/Davis y esto es lo que pasa si corro el script
pi@raspberrypi:~ $ sudo sh weewxba.sh
mv: no se puede mover «weewx.sdb.2016_12_30.gz» a «/media/Davis»: Es un directorio
y no me escribe nada en el
pi@raspberrypi:~ $ sudo sh weewxba.sh
mv: no se puede mover «weewx.sdb.2016_12_30.gz» a «/media/Davis/»: No es un directorio
no me escribe nada en el. En cambio si dejo solo /media
pi@raspberrypi:~ $ sudo sh weewxba.sh
pi@raspberrypi:~ $ cd /media
pi@raspberrypi:/media $ dir
Davis weewx.sdb.2016_12_30.gz
Si lo escribe................yo no entiendo nada de nada
-
Pero en el script.....
¿has dado permisos de ejecución?
¿lo ejecutas con sudo?
-
Pues supongo que.....NO
Le he dado tantas vueltas a la pelota que tengo por cabeza que no le di permisos o no tenia los adecuados
pi@raspberrypi:~ $ ls -l weewxba.sh
-rw-r--r-- 1 pi pi 1334 dic 30 17:57 weewxba.sh
pi@raspberrypi:~ $ chmod +x weewxba.sh
pi@raspberrypi:~ $ ls -l weewxba.sh
-rwxr-xr-x 1 pi pi 1334 dic 30 17:57 weewxba.sh
Bueno ahora si funciona, otro pequeño error y debe ser del NAS, este muestra los registros, desmonto y monto desde la pi
Dec 30 18:24:02 CIFS: [192.168.1.7] closed the connection to service [Volume_1].
Dec 30 18:25:33 CIFS: [192.168.1.7] connected to [Volume_1] as user [pi].
Ejecuto el script como root
pi@raspberrypi:~ $ sudo sh weewxba.sh
mv: fallo al conservar el propietario de «/media/Davis/weewx.sdb.2016_12_30.gz»: Permiso denegado
pi@raspberrypi:~ $ cd /media/Davis
pi@raspberrypi:/media/Davis $ dir
weewx.sdb.2016_12_30.gz
El archivo me lo copia con ese error, molesto pero lo copia.
La cuestión es de permisos
pi@raspberrypi:/media/Davis $ ls -l
total 4194304
-rw-r--r-- 1 1004 505 71287 dic 30 18:27 weewx.sdb.2016_12_30.gz
Ese archivo se va para un usuario y grupo pues que no estan en la Pi, la cuestión seria crear ese grupo y usuario en ella?
por lo demás apla3 apla3 apla3 por la ayuda
-
Bueno, creo que encontré la solución o al menos lo apañe.
Cree un usuario y un grupo en el NAS (Dlink 320) el NAS les da un UID y GDI que obviamente no coinciden con los de la PI. En la pi cree el mismo usuario y grupo y despues les cambie el UID y GDI a los que les da el NAS.
Ahora tengo un usuario en la pi solo para los backups. Ahora me falta añadir el fstab y el cron, a ver como se tuerce el asunto.
Puede que no sea lo mas usual pero al menos funciona....... :blank:
-
Nada, a la mierda, no se que coño hice, la cosa está asi
sudo mount -t cifs //192.168.1.9/Volume_1/Davis /media/Davis -o user=userbackup
sudo sh weewxba.sh
Sin errores y se crea
sudo mount -t cifs //192.168.1.9/Volume_1/Davis /home/backup -o user=userbackup
sudo sh weewxba.sh
error
mv: fallo al conservar el propietario de «/home/backup/weewx.sdb.2016_12_30.gz»: Permiso denegado
Al reves, no me da problemas en /media/Davis y me los da en el home del usuario en cuestion.
-
Ummmmm.....
ya me imaginaba que era un 320 de DLink....o a lo sumo un 325......
Veréis, yo soy simple.....y entonces me pregunto.....el tema de la seguridad en una red doméstica es cuestionable.
De ese modo, el Samba de mi DNS320 funciona sin password, por lo que no me lia con usuarios, permisos ni leches.
Desde luego, el problema está ahí.
Ahora bien, aunque nos salimos de temática Meteoclimatic, te ahorrarás muchos quebraderos de cabeza utilizando NFS en lugar de Samba/cifs.
En casa, mis dos NAS (El DLink y el Mele A2000 que además es el servidor web de casa), están funcionando con NFS. Evidentemente, tengo habilitado Samba para dar compatibilidad a los Windows.
-
Mañana volveremos a la carga :(
-
Al final hago el backup en un usb, total, no es que vaya a manejar gran volumen de datos :D
En el script ese me falla esta linea
# always nice to leave positive log messages
logger "WEEWX_BACKUP - complete to $DESTDIR"
Acaba el backup pero no muestra ningun mensaje......
Por lo que le cambie el logger por echo, no conozco a logger pero a echo si y me lo muestra, digo yo que asi servira...
pi@raspberrypi:~ $ sudo sh backupusb.sh
WEEWX_BACKUP - Eres un monstruo, copia enviada a /media/backupusb
Vamos que al final quedaria el sh así, tambien le añadi para que desmontase y saliese, no se si esta bien, error no da
#!/bin/bash
#
# weewx backup (originally based on wview)
sudo mount /dev/sda1 /media/backupusb
TODAY=`date +%Y_%m_%d`
TMPDIR="/var/tmp"
ARCHIVE_FILE=weewx.sdb
STATS_FILE=stats.sdb
ARCHIVE_DIR=/var/lib/weewx
DESTDIR=/media/backupusb
# if the archive isn't present, there is a typo above
if [ ! -f $ARCHIVE_DIR/$ARCHIVE_FILE ]; then
echo "$0 exiting - srcfile not found"
exit 1
fi
# weewx v3 eliminates the stats file
if [ -f $ARCHIVE_DIR/$STATS_FILE ]; then
STATS_PRESENT=1
fi
# stash a copy to a scratch directory without stopping weewx
# we rely on the os to ensure the file we copy is intact
# (crossing fingers)
cd $ARCHIVE_DIR
cp $ARCHIVE_FILE ${TMPDIR}
if [ x$STATS_PRESENT = "x1" ]; then
cp $STATS_FILE ${TMPDIR}
fi
# now work on the stashed files to gzip them with a timestamp
# this is done since it takes some time
cd "${TMPDIR}"
gzip -c ${ARCHIVE_FILE} > $ARCHIVE_FILE.$TODAY.gz
mv $ARCHIVE_FILE.$TODAY.gz $DESTDIR
if [ x$STATS_PRESENT = "x1" ]; then
gzip -c ${STATS_FILE} > $STATS_FILE.$TODAY.gz
mv $STATS_FILE.$TODAY.gz $DESTDIR
fi
# always nice to leave positive log messages
echo "WEEWX_BACKUP - Eres un monstruo, copia enviada a $DESTDIR"
# cleanup temporary stuff
rm -f "${TMPDIR}"/$ARCHIVE_FILE.$TODAY.gz
rm -f "${TMPDIR}"/$ARCHIVE_FILE
if [ x$STATS_PRESENT = "x1" ]; then
rm -f "${TMPDIR}"/$STATS_FILE.$TODAY.gz
rm -f "${TMPDIR}"/$STATS_FILE
fi
sudo umount /media/backupusb
exit
*+*
-
A ver si mañana pongo mi script
Aunque creo que ya lo hice
-
Estaria bien echarle un vistazo para ver como lo tienes montado ;D
-
Como se puede ver es muy sencillo
#!/bin/bash
#
#Definimos la fecha y el nombre de la carpeta
fecha=$(date +"%Y_%m_%d")
carpeta="backup_$fecha"
#
#Se monta el disco en red
mount 192.168.0.78:/datos /mnt/nfs
#
#Vamos al directorio donde hacemos la copia
cd /mnt/nfs/weather/backup/raspi1
#
#Creamos la carpeta del dia
mkdir $carpeta
#
#Entramos en la carpeta generada
cd $carpeta
#
tar -cf var-www.tar /var/www/*
tar -cf etc-weewx.tar /etc/weewx/*
tar -cf var-lib-weewx.tar /var/lib/weewx/*
#
#Salimos del directorio
cd /
#Desmontamos el disco de red
umount /mnt/nfs
#
exit 0
Sistema:
Mele A2000+disco 2TB USB (vale una raspi, un NAS, etc, etc)
Sistema de archivos por NFS mucho más rápido que Samba/Cifs
Se ejecuta diariamente desde el cron y con permisos de root para evitar líos con los permisos.
El /etc/crontab es este
# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
# m h dom mon dow user command
17 * * * * root cd / && run-parts --report /etc/cron.hourly
25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6 * * 7 root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6 1 * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
#
# Copia de seguridad de Weewx en disco de red a las 23:57 de cada dia
57 23 * * * root /etc/weewx/backup
# Envía datos a Meteoclimatic cada 5 minutos, empezando en el minuto 1 de cada hora
1-59/5 * * * * root /root/meteoclimatic/meteoclimatic.sh
Sin complicaciones
Sin hacer comprobaciones de si tal cosa o cual cosa
Todo lo más sencillo posible.
-
Vamos a ponernos a ello :) aprovechando que las bestias duermen
-
Basándome en el script de jantoni, y dados mis pocos conocimientos, he intentado hacer uno mucho más simple, para que me haga la copia en una memoria usb. En la carpeta /etc/weewx/ he creado el fichero backup.sh con el siguiente contenido:
#!/bin/bash
#
#Se monta el disco en red
mount /dev/sda1 /media/usb
#
#Vamos al directorio donde hacemos la copia
cd /media/usb
#
cp /var/www/* /media/usb
cp /etc/weewx/* /media/usb
cp /var/lib/weewx/* media/usb
#
#Salimos del directorio
cd /
#Desmontamos el disco de red
umount /media/usb
#
exit 0
Cuando lo ejecuto con ./backup.sh obtengo la siguiente respuesta:
cp: se omite el directorio «/var/www/html»
cp: se omite el directorio «/etc/weewx/apache»
cp: no se puede crear el fichero regular «/media/usb/backup.sh»: Permiso denegado
cp: se omite el directorio «/etc/weewx/import»
cp: se omite el directorio «/etc/weewx/logrotate.d»
cp: se omite el directorio «/etc/weewx/logwatch»
cp: se omite el directorio «/etc/weewx/rsyslog.d»
cp: se omite el directorio «/etc/weewx/skins»
cp: se omite el directorio «/etc/weewx/udev»
cp: no se puede crear el fichero regular «/media/usb/weewx.conf»: Permiso denegado
cp: no se puede crear el fichero regular «/media/usb/weewx.conf.dist»: Permiso denegado
cp: el objetivo «media/usb» no es un directorio
Creo que hay bastantes cosas que estoy haciendo mal, pero no sé exactamente cuales son.
-
permisos denegados.
Usa sudo o si lo usas desde /etc/crontab, asegúrate que se ejecuta como root