Ubuntu FTP 脚本用于在我的 FTP 服务器中进行备份和上传

Ubuntu FTP 脚本用于在我的 FTP 服务器中进行备份和上传

大家好,我正在尝试备份我的应用程序目录、数据库备份,然后使用以下脚本将其发送到我在 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当我使用命令时,这会替换现有文件ftpftp 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

相关内容