我正在寻找一种方法来从多个数据库创建备份,并通过 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