Назад | Перейти на главную страницу

Как вызвать ftp-скрипт из основного скрипта

Я ищу способ создавать резервные копии из нескольких баз данных и отправлять файлы результатов на сервер в Debian Linux 6 (Sqeeze) из задания crontab Существуют базы данных с именем database1 .. database4 Резервное копирование из каждой базы данных shoudl, созданной и отправленной с помощью ftp

Я пробовал сценарий ниже, но сценарий send.sh не завершается автоматически: он должен завершаться клавиатурой. Как исправить ? Как сделать скрипт короче?

Скрипт crontab:

#!/bin/sh
PGUSER=postgres
PGPASSWORD=mymass
export PGUSER PGPASSWORD
backupdir=/root/mybackups
backupdate=$(date +%u)

baas=database1
export baas backupdate
fail=${backupdir}/${baas}${backupdate}.backup
pg_dump -U postgres ${baas} -f ${fail}
./saada.sh

baas=database2
export baas backupdate
fail=${backupdir}/${baas}${backupdate}.backup
pg_dump -U postgres ${baas} -f ${fail}
./saada.sh

baas=database3
export baas backupdate
fail=${backupdir}/${baas}${backupdate}.backup
pg_dump -U postgres ${baas} -f ${fail}
./saada.sh

baas=database4
export baas backupdate
fail=${backupdir}/${baas}${backupdate}.backup
pg_dump -U postgres ${baas} -f ${fail}
./saada.sh

отправка, которая не завершается с saada.sh,

#!/bin/sh
/usr/bin/ftp -inp <<EOF
open mybackupsite.com
user backupuser  pass
bin
lcd /root/eeva-backups
delete "${baas}*.backup"
put "${baas}${backupdate}.backup"
bye

#reset PGUSER and PGPASSWORD
#PGUSER=""
#PGPASSWORD=""
#export PGUSER PGPASSWORD
#End

#exit 0
EOF

Комментарий Андрея наверно на месте однако я не рекомендую никому использовать FTP в качестве метода передачи, потому что он отправляет пользователя / пароль без предварительного шифрования

Есть ли веские причины не использовать ssh + rsync? Вы бы достигли того же результата с аутентификацией без пароля, которая легко достижимый

Ваш сценарий был бы безопаснее и короче

rsync --delete -av ${baas}${backupdate}.backup user@server.domain.com:/root/eeva-backups