web-dev-qa-db-fra.com

Script FTP Ubuntu pour effectuer des sauvegardes et des téléchargements sur mon serveur FTP

Tout ce que j’essaie de sauvegarder de mon répertoire d’application, de sauvegarder une base de données puis de l’envoyer à mon serveur ftp chez hetzner en utilisant le script suivant et j’obtiens quelques erreurs

les détails de mon serveur: ubuntu12-04 (dans hetzner) base de données: postgresql8.4 mon serveur ftp: hetzner Essayer de faire une sauvegarde sur le serveur ubuntu12.04 et de le copier dans ftp mon serveur

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

Quand j'essaye d'exécuter ce script avec la commande ./backupscript.sh

je reçois l'erreur suivante

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.

Comment puis-je envoyer ces fichiers par script?

et Est-ce que cela remplacera les fichiers existants pendant que j'utilise la commande put dans ftp dans ftp server sinon comment le faire? Je vous remercie

2
Mani Deep

Évitez de stocker et de transmettre des identifiants/mots de passe en texte brut.

Au lieu de cela, configurez SSH avec une autorisation par clé publique uniquement et utilisez scp ou rsync pour le transfert de fichier. Laissez également l'utilisateur postgres faire lui-même la sauvegarde via un travail cron (qui est la réponse à votre dernière question à partir de là ), voir Wiki Ubuntuusers.de sur cron .

Exemple pour un crontab postgres:

# 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

La sauvegarde de fichiers avec la fonction tar utilisée comme utilisateur Openbravo ERP ou www-data doit être aussi simple que ci-dessus.

Edit: Je recommande d’essayer zstd au lieu de xz en tant que compresseur, il a environ 20 niveaux et est presque aussi bon que le niveau xz le plus élevé à son niveau le plus élevé et toujours nettement plus rapide.

3
LiveWireBT

Vous devrez mettre un EOF à la fin de votre script.

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