Cómo agregar un marca de tiempo a los archivos de respaldo en un script de bash
He creado un script que debe ejecutarse todos los días en el cron:
“`#!/bin/bash
db="ESPECIFICAR<nombre>DB"
<h1>especificar colecciones</h1>
collection_list="<colección1> <colección2> <colección3>"
<h1>si se está ejecutando en la máquina local:</h1>
host=127.0.0.1
port="ESPECIFICAR PUERTO"
<h1>dónde guardar:</h1>
out<em>prefix=/Temp
for collection in $collection</em>list; do
echo $collection
out<em>dir="${out</em>prefix}/${db}<em>${collection}/"
mkdir -p ${out</em>dir}
mongodump –host $host –port $port –collection $collection –db $db –out ${out_dir}
fecha=$(date '+%Y.%m.%d')
mv ${out_dir}/${db}.${collection} ${out_dir}/${collection}.${fecha}
done
“`
¿Cómo agregar a cada archivo una marca de tiempo de fecha como:
/Temp/collection.2021.11.22
/Temp/collection2.2021.11.22
?
Muchas gracias
davy.ai
Para agregar una marca de tiempo a cada archivo en el script, puede modificar la variable
out_dir
de la siguiente manera:El comando
$(date +%Y.%m.%d)
obtendrá la fecha actual en el formato año-mes-día y lo agregará al nombre de la colección como una carpeta. Por lo tanto, cada vez que se ejecute el script, se creará una nueva carpeta con la fecha actual en el nombre en el directorio/Temp
, donde se almacenará la salida demongodump
.El script modificado se vería así:
“`#!/bin/bash ”
db=”SPECIFY_DB_NAME”
#specify collections
collection_list=”
#if its running on local machine:
host=127.0.0.1
port=”SPECIFY PORT”
#where to dump:
out_prefix=/Temp
for collection in $collection_list; do
echo $collection
out_dir=”${out_prefix}/${collection}.$(date +%Y.%m.%d)/”
mkdir -p ${out_dir}
mongodump –host $host –port $port –collection $collection –db $db –out ${out_dir}
done
“`
Esto creará directorios de salida con el formato
/Temp/collection.<fecha>/
, donde<fecha>
se reemplaza por la fecha actual en el formato año-mes-día.