Мне установили 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
Я искал высоко и низко в 'Сети, пытающейся найти ответ без успеха.
Решением, которое я предложил, является следующий сценарий удара:
#!/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) не работали на меня.
Для ссылки следующее НЕ работало на меня для отбрасывания базы данных.
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 и кодом сразу выше?