web-dev-qa-db-ja.com

バックアップを取り、FTPサーバーにアップロードするUbuntu FTPスクリプト

アプリケーションディレクトリのバックアップ、データベースのバックアップ、および次のスクリプトを使用してhetznerのftpサーバーに送信しようとしています

私のサーバーの詳細:ubuntu12-04(hetzner)データベース:postgresql8.4私のftpサーバー:hetzner ubuntu12.04サーバーでバックアップを取ろうとし、ftpで私のサーバーにコピーしようとしています

bakupscript.sh

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 in ftp in ftp serverのコマンドを使用している間、これは既存のファイルを置き換えますか?ありがとうございました

2
Mani Deep

資格情報/パスワードをプレーンテキストで保存および送信しないでください。

代わりに、公開鍵のみの許可でSSHをセットアップし、ファイル転送にscpまたはrsyncを使用します。また、postgresユーザー自身がcronjobを介してバックアップを行うようにします(これは そこからの最後の質問 に対する回答です)。 buntuusers.de cron on 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またはwww-dataユーザーとしてtarを使用してファイルをバックアップするのは、上記と同じくらい簡単です。

編集:コンプレッサーとしてxzの代わりにzstdを試すことをお勧めします。これには約20レベルがあり、最高レベルの最高xzレベルとほぼ同等であり、さらに高速です。

3
LiveWireBT

スクリプトの最後に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
1
xhuang