Traceroute Repeate! X в качестве размера MTU

В настоящее время я использую PostgreSQL , и я делаю что-то, что очень похоже на то, что вы хотите достичь, так что это мой сценарий резервного копирования:

#!/bin/bash
#
#------------------------------------------------------------------------------
# Editable parameters:
#
## Filesystem Location to place backups.
BACKUP_DIR="/path/to/backup/folder"
## The user used to connect to postgres instance
USER="postgres"
PWD="pwd_in_plaintext_is_not_a_"
## Just the date string that will be appended to the backup files name
BACKUP_DATE="$(date +'%d_%m_%Y_%H_%M_%S')"
## Numbers of days you want to keep copie of your databases
NUMBER_OF_DAYS=7
## Uncomment following line if you want to overwrite the whole folder each time
#rm -rf ${BACKUP_DIR}/backupFulldb-*
#
#------------------------------------------------------------------------------
# don't change anything below this line

# Vacumm al databases before begin to backup
vacuumdb --all -U ${USER}

DATABASES=`psql -U ${USER} -l -t | cut -d'|' -f1 | sed -e 's/ //g' -e '/^$/d'`
for i in ${DATABASES}; do
  if [ "$i" != "template0" ] && [ "$i" != "template1" ]; then
    echo Dumping $i to ${BACKUP_DIR}
    pg_dump -U ${USER} --column-inserts $i | gzip -c >  ${BACKUP_DIR}/backupFulldb-$i-${BACKUP_DATE}.out.gz
  fi
done
find ${BACKUP_DIR} -type f -prune -mtime +${NUMBER_OF_DAYS} -exec rm -f {} \;

Вам просто нужен запрос, в котором перечислены все базы данных в вашем экземпляре mysql и замените его массивом DATABASES . Читая этот пост и этот , я полагаю, вы могли бы, например. сделайте следующее:

while read line
do 
    DATABASES+=("$line")
done < <(mysql -u${USER} -p${PWD} INFORMATION_SCHEMA -e "SELECT SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA")

И обязательно исправьте имена баз данных, которые вы хотите исключить:

if [ "$i" != "mysql" ] && [ "$i" != "information_schema" ]; then

0
07.09.2018, 13:12
1 ответ

Если в каждой строке есть одно слово, awkпоместит это слово в$1("первое поле" ). Затем вы можете извлечь его оттуда и поместить в переменную, если хотите, с помощью var = $1. Несмотря на это, вы можете выполнять любые строковые операции, которые пожелаете, работая с$1(или var, если вы присвоили значение этой переменной ).

Например, предположим, что каждое слово выглядит как word=otherthing, а мы хотим вывести толькоotherthing:

awk '{ split($1, a, "="); print a[2] }' infile

или короче,

awk -F '=' '{ print $2 }' infile

$2— это второе поле в каждой строке, а с -F '='мы говорим awk, что поля ограничены =.

Вы не упомянули, что вам нужно сделать, поэтому я не буду приводить больше примеров.

Вы также можете написать это как скрипт, который пользователь может вызвать напрямую:

#!/usr/bin/awk -f

BEGIN { FS = "=" }

{ print $2 }

Это будет сохранено в текстовом файле, сделано исполняемым (с помощью chmod +x script.awk), а затем пользователь сможет вызвать его с помощью

./script.awk infile

... предполагая, что строка#!-указывает на ваш двоичный файл awk.

2
28.01.2020, 02:42

Теги

Похожие вопросы