es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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

Tags:  ,

Answer

  1. Avatar for davy.ai

    Para agregar una marca de tiempo a cada archivo en el script, puede modificar la variable out_dir de la siguiente manera:

    out_dir="${out_prefix}/${collection}.$(date +%Y.%m.%d)/"
    

    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 de mongodump.

    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.

Comments are closed.