Копирование каталога Postgres через Samba?

Мне установили Samba и Пост-ГРЭС на двух машинах.

Я могу успешно скопировать файлы от одной машины до другого, когда пользователь и группа fhe файлов являются моим пользователем входа в систему и группой для обеих машин. (То же регистрируется и пароль на обеих машинах.)

Мой целевой каталог,/mnt/pg-ralph12/, был успешно смонтирован.

mount: //192.168.29.205/pg-ralph12 mounted on /mnt/pg-ralph12


Пользователь и группа для моего каталога Postgres на моей исходной машине:

getfacl: Removing leading '/' from absolute path names
# file: var/lib/postgresql
# owner: postgres
# group: postgres
user::rwx
group::r-x
other::r-x


Для моего целевого каталога это

getfacl: Removing leading '/' from absolute path names
# file: mnt/pg-ralph12/not-main
# owner: real-owner
# group: sudo
user::rwx
group::r-x
group:postgres:rwx
mask::rwx
other::r-x
default:user::rwx
default:group::r-x
default:group:postgres:rwx
default:mask::rwx
default:other::r-x

Когда я пытаюсь выполнить rsync

sudo rsync -a /var/lib/postgresql /mnt/pg-ralph12/not-main

Я добираюсь

[sudo] password for real-estate-data-mining: 
rsync: chown "/mnt/pg-ralph12/not-main/postgresql" failed: Permission denied (13)
rsync: chown "/mnt/pg-ralph12/not-main/postgresql/9.6" failed: Permission denied (13)
rsync: chown "/mnt/pg-ralph12/not-main/postgresql/9.6/main" failed: Permission denied (13)
rsync: chown "/mnt/pg-ralph12/not-main/postgresql/9.6/main/base" failed: Permission denied (13)
etc

Я искал высоко и низко в 'Сети, пытающейся найти ответ без успеха.

0
задан 28 February 2018 в 13:33

1 ответ

Решением, которое я предложил, является следующий сценарий удара:

#!/bin/bash

# Copy/replace myDatabase from Ralph07 to Ralph12

dropdb -e -h 192.168.29.205 --no-password --if-exists -U postgres myDatabase
# createdb -e -h 192.168.29.205 --no-password -U postgres myDatabase # The database will automagically be created
pg_dump -C -h localhost --no-password -U postgres myDatabase | psql -h 192.168.29.205 --no-password -U postgres

192.168.29.205 (статический) IP-адрес целевого компьютера. Ваш IP будет, вероятно, отличаться.

Для получения - опция без паролей работать, необходимо будет отредактировать ~/.pgpass. Мой (отредактированный!) похож на следующее:

localhost:5432:*:postgres:MyPassword
192.168.29.205:5432:*:postgres:MyPassword

См., например, https://www.postgresql.org/docs/9.6/static/libpq-pgpass.html для объяснения .pgpass

Необходимо будет, вероятно, также отредактировать/etc/postgresql/9.6/main/postgresql.conf (при использовании 9.6 из Пост-ГРЭС). См. https://blog.bigbinary.com/2016/01/23/configure-postgresql-to-allow-remote-connection.html

Это решение, кажется, устойчиво. Я не испытал затруднений из-за него в короткое время, я использовал его (меньше чем день). Если я столкнусь с проблемами, то я сообщу об этом здесь.

Другие решения, которые я видел онлайн для отбрасывания базы данных (т.е. вход psql) не работали на меня.

Что _not_ работал на меня

Для ссылки следующее НЕ работало на меня для отбрасывания базы данных.

UPDATE pg_database SET datallowconn = 'false' WHERE datname = 'myDatabase';
SELECT pg_terminate_backend(pg_stat_activity.pid) FROM pg_stat_activity WHERE pg_stat_activity.datname = 'myDatabase' AND pid <> pg_backend_pid();
DROP DATABASE "myDatabase";

Я получаю ошибку "ОШИБКА: не может отбросить в настоящее время открытую базу данных"

Дальнейший вопрос:

Каково различие между dropdb и кодом сразу выше?

0
ответ дан 30 October 2019 в 08:57

Другие вопросы по тегам:

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