如何从主脚本调用 ftp 脚本

如何从主脚本调用 ftp 脚本

我正在寻找一种方法来从多个数据库创建备份,并通过 crontab 作业将结果文件发送到 Debian Linux 6(Sqeeze)中的服务器,其中有名为 database1 .. database4 的数据库,应该从每个数据库创建备份并使用 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

答案1

安德鲁的评论可能很到位然而,我不鼓励任何人使用 FTP 作为传输方法,因为它在未先加密的情况下发送用户/密码

有什么令人信服的理由不使用 ssh + rsync 吗?使用无密码身份验证可以获得相同的结果,即很容易实现

你的脚本也会更安全、更简短

rsync --delete -av ${baas}${backupdate}.backup [email protected]:/root/eeva-backups

相关内容