Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

В PostgreSQL есть встроенный инструмент для создания резервных копий — утилита pg_dump. Утилита имеет простой синтаксис:

Code Block
languagetext
# pg_dump <параметры> <имя базы> > <файл для сохранения копии> 

...

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

Code Block
languagetext
# pg_dump -U vitrodbuser -W vitrodb > /tmp/vitrodb.dump # pg dump u postgres

...

Чтобы сэкономить место на диске, можно сразу же сжимать дамп:

Code Block
languagetext
# pg_dump -U  vitrodbuser -W vitrodb | gzip > /tmp/vitrodb.gz

...

Утилита pg_dumpall реализует резервное копирование всего экземпляра (кластера или инстанса) базы данных без указания конкретной базы данных на инстансе:

Code Block
languagetext
# pg_dumpall > /tmp/instance.bak

...

Чтобы сразу сжать резервную копию экземпляра базы данных, нужно передать вывод на архиватор gzip:

Code Block
languagetext
# pg_dumpall | gzip > /tmp/instance.tar.gz

...

Более подробное описание работы и параметров утилиты pg_dump см по ссылке.


Резервное копирование файлов

Утилита rsync

Rsync — утилита для удаленной синхронизации и копирования файлов. Одним из её преимуществ является то, что она позволяет не передавать файлы полностью, а только изменения в них, синхронизирует директории и файлы, имеет встроенный механизм сжатия.

Синтаксис утилиты в общем виде выглядит так:

Code Block
languagebash
rsync -options <source> <destination>


Где:


-options — параметры, с которыми должна выполняться утилита.

<source>— каталог или файл, который является источником.

<destination> — каталог или файл, который является приемником.


При локальном режиме работы достаточно задать каталог-источник и каталог-приемник:



Code Block
languagebash
rsync -avzhHl /path/of/source/folder /path/to/destination/folder

Заданные параметры:

-a - режим архивирования, который включает рекурсивное копирование, сохранение прав доступа, временных меток и т.д.
-v - уровень подробности вывода (verbose), позволяет видеть подробную информацию о процессе копирования.
-z - сжатие данных во время передачи.
-h - вывод размеров файлов в удобном для чтения формате (human-readable).
-H - сохранение жестких ссылок.
-l - сохранение символических ссылок.


Если копирование нужно выполнить с удаленным узлом, добавляется имя пользователя и IP-адрес или имя узла:

Code Block
languagebash
rsync -avzhHl /path/of/source/folder root@192.168.52.1:/path/to/destination/folder


Автоматическая синхронизация папок выполняется штатным способом — планировщиком заданий (cron).  Создадим скрипт:

!/bin/sh

RSYNC=/usr/bin/rsync 
SSH=/usr/bin/ssh 
KEY=/root/.ssh/id_rsa
RUSER=root
RHOST=192.168.56.1 
RPATH=/remote/dir
LPATH=/local/dir

$RSYNC -az -e "$SSH -i $KEY" $RUSER@$RHOST:$RPATH $LPATH