大家好,我正在尝试备份我的应用程序目录、数据库备份,然后使用以下脚本将其发送到我在 hetzner 的 ftp 服务器,但我遇到了一些错误
我的服务器详细信息:ubuntu12-04(在 hetzner 中)数据库:postgresql8.4 我的 ftp 服务器:hetzner 尝试在 ubuntu12.04 服务器上进行备份并在 ftp 中复制我的服务器
备份脚本
site=ftp://u***.your-backup.de
username=u***
passwd=*******************
backupdir=/opt/openbravo-erp
filenameob="openbravo-erp.tar.gz"
echo "Creating a ob backup file $filenameob of $backupdir."
# Make a tar gzipped backup file
tar -cvzf /home/hetznerftp/"$filenameob" "$backupdir"
echo "creating a db backup file $filenamedb of ob database."
export PGPASSWORD="*my db password*"
backup_dir="/home/manideep/hetzner/"
#String to append to the name of the backup files
pg_dump -h localhost -U tad openbravo -Fc $i > $backup_dir$i\rajedb.backup
#login into ftp server
ftp -in <<EOF
open $ftp_site
user $username $passwd
bin
put /home/manideep/hetzner$filenameob
put /home/manideep/hetznerftp/pgdump.backup
close
bye
当我尝试通过命令执行该脚本时./backupscript.sh
我收到以下错误
Creating a backup file openbravo-erp.tar.gz of /opt/openbravo-erp.
creating a db backup file of ob database.
./hetznerbkup.sh: line 28: warning: here-document at line 21 delimited by end-of-file (wanted `EOF')
(to) usage: open host-name [port]
Not connected.
Not connected.
Not connected.
Not connected.
我如何通过脚本发送这些文件?
put
当我使用命令时,这会替换现有文件ftp
吗ftp server
?如果不是,我该怎么做?谢谢
答案1
请避免以纯文本形式存储和传输凭据/密码。
而是设置仅使用公钥授权的 SSH,并使用 scp 或 rsync 进行文件传输。还可以让用户postgres
自己通过 cronjob 进行备份(这是您最后一个问题), 看Ubuntuusers.de Wiki 上的 cron。
postgres crontab 的示例:
# Shell variable for cron
SHELL=/bin/bash
# PATH variable for cron
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
# Backup some database from sunday to friday, compress with xz, hash with md5, delete obsolete backups after 40 days
0 3 * * SUN-FRI dump="some-database-$(date +\%Y\%m\%d-\%H\%M)-daily.sql"; cd /var/backups/postgres; pg_dump -Fc -Z0 some-database | xz -6 > ${dump}.xz; md5deep -kl ${dump}.xz > ${dump}.xz.md5; find -name "some-database*daily.sql.xz*" -mtime +40 -delete
作为您的 Openbravo ERP 或用户,使用 tar 备份文件www-data
应该与上述一样简单。
编辑:我建议尝试使用 zstd 而不是 xz 作为压缩器,它有大约 20 个级别,并且几乎与最高级别上的最高 xz 级别一样好,但速度仍然明显更快。
答案2
您需要在脚本末尾放置一个 EOF。
ftp -in <<EOF
open $ftp_site
user $username $passwd
bin
put /home/manideep/hetzner$filenameob
put /home/manideep/hetznerftp/pgdump.backup
close
bye
EOF