我需要按周备份特定表的数据,然后恢复它,但不截断表。该表包含 fechaRegistro
我准备了以下脚本,但我不确定声明日期变量的方法,您能帮我一下吗?
#!/bin/bash
# VARIABLES
FECHA=$(date +"%Y%m%d")
SERVIDOR="$(hostname)"
PASSWORD='PASSWORD'
BD=ordenes
TABLA="backlogPedidos"
ARCHIVO="$SERVIDOR-${BD^^}${TABLA^^}-$FECHA.sql"
RUTA_NAS="/tmp/"
# Establecer variables para calcular el rango semanal
INICIO_SEMANA=$(date -d "last sunday - 6 days" +"%Y-%m-%d 00:00:00")
FIN_SEMANA=$(date -d "last saturday" +"%Y-%m-%d 23:59:59")
# Se generar el backup por rangoo de una semana
mysqldump --databases $BD --tables $TABLA --where="fechaRegistro BETWEEN '$INICIO_SEMANA' AND '$FIN_SEMANA'" --skip-comments --compact --single-transaction --default-character-set=UTF8 --insert-ignore --complete-insert --skip-triggers --skip-routines --no-create-info --disable-keys --set-gtid-purged=OFF -q --lock-tables=false --user=backup -p$PASSWORD > /tmp/$ARCHIVO
echo "Backup semanal generado: $ARCHIVO"
如果我们根据当前日期谈论前一周,那么要找到开始日期(星期一),使用,
上一周结束(周日)
我创建了一个例子。
根据您的需要更改/添加脚本中的变量以及转储中的命令,以下只是一个演示
该文件
/etc/db_connect.conf
包含数据库凭证,例如:在我的例子中,为脚本和数据库凭据提供适当的权限:
脚本,
执行后