Q:

Удаленное копирование дампа pg и импорт

Добрый день. Нужна помощь в реализации не сложной операции.
Есть 2 сервера.
На одном из них лежат бекапы базы PG. Нужно с другого сервера копировать последний дамп по scp и делать импорт в базу. После этого удалять дамп.
Накатал скрипт который будет это делать. Нужно поправить.
#!/bin/sh

SFTP_SERVER="1.2.3.4"
SFTP_PORT="222"
SFTP_USER="myuser"
SFTP_KEY="./id_rsa"
DB="mydatabase"
BACK_PATH="/backups/postgresql"
NAME="вот тут нужно чтобы find находил последний измененный файл и подставлял его имя"

scp -P $SFTP_PORT -i $SFTP_KEY ./$NAME.gz $SFTP_USER@$SFTP_SERVER:$BACK_PATH

gzip -d $NAME.gz
psql -h localhost -p 5432 -U postgres -d mydatabase -f $NAME

rm -f $NAME

echo "`echo $NAME` done" >> ./backup.log

A:

если я правильно понял, postgresql работает на той же машине, где будет запускаться скрипт. а с машины 1.2.3.4 надо получать файлы и «скармливать» их этому локальному postgresql-ю. 
тогда я — за простоту:
#!/bin/sh

SFTP_SERVER="1.2.3.4"
SFTP_PORT="222"
SFTP_USER="myuser"
SFTP_KEY="id_rsa"
DB="mydatabase"
BACK_PATH="/backups/postgresql"

# получаем текущий список файлов с суффиксом '.gz' и сохраняем в list.new
ssh -p $SFTP_PORT -i $SFTP_KEY $SFTP_USER@$SFTP_SERVER ls $BACK_PATH/*.gz > list.new
# при первом запуске этого файла не будет, поэтому надо его создать
touch list.old
# находим уникальные для нового файла строки
comm -2 -3 list.new list.old | while read f; do
  # получаем этот файл и отправляем его программе psql
  ssh -p $SFTP_PORT -i $SFTP_KEY $SFTP_USER@$SFTP_SERVER cat $f | \
  gunzip | psql -h localhost -p 5432 -U postgres -d $DB -f -
  echo "$f done" >> backup.log
done
# сохраняем список для последующих запусков
mv list.new list.old

