Backup to ftp linux

How to automatically upload MySQL backup to FTP on Linux

The first thing a DBA should do after deploying a database is to ensure that backups are created regularly.

But storing a backup file on the same server where the MySQL server is located would be a big mistake. Therefore, you should create a backup and put it out of the server on which MySQL is located. The simplest solution would be to transfer it to another server via FTP.

Transfer backup to FTP with BASH script

Ubuntu has an FTP client by default, although it is not particularly convenient to work with, especially in a bash script. The LFTP utility is more convenient, and you can install it with two commands.

sudo apt-get update -y sudo apt-get install -y lftp

To create a backup, compress it, transfer it to FTP and then delete files that are older than 7 days, use the following script:

#credentials to connect to mysql mysql_user=me mysql_password=1234 #credentials to connect to ftp FTPUSER=one FTPPW=1234 FTPSERVER=localhost #directory that will be created on ftp and the one that will be deleted TODAY=$(date +"%Y_%m_%d") RMDATE=$(date +"%Y_%m_%d" -d '7 days ago') TMPDIR=~/backup mysql_backup_file=$TMPDIR/backup.sql echo -n "Database dump" mysqldump -u $mysql_user -p$mysql_password --all-databases > $mysql_backup_file && echo -n "Dump compression" gzip $mysql_backup_file echo -n "Uploading files via FTP. " lftp :$@$ cd backups/ mkdir $ cd $ mput -E $/* cd .. rm -rf $ bye EOF echo "Done."

Now all that remains is to schedule the script for regular execution with cron jobs

and add the following string at the end of the file:

30 22 * * * /home/user/script/mysql_backup.sh

Please note that the above script has a significant drawback – if the launch of the script is skipped, then the old backup will not be removed, and it will remain on FTP.

The solution must be reliable

The worst thing that can happen is that when you need a backup, it turns out that the backup process broke a few months ago and you do not have one.

A script configured in a bash script can stop working for many reasons. Here are some of them:

  1. Database password has changed
  2. FTP password has changed
  3. MySQL settings have changed, which led to backup creation errors
  4. Out of disk space (not enough space to create a backup)
  5. Network changes related to FTP: FTP server moved, address changed, firewall

Therefore, a solution that makes regular backups should notify you about any such failures and be transparent so that you can check if everything is working at any time.

Читайте также:  Linux модули ядра компиляция

Any Linux issue can be solved with bash scripts, but creating a truly reliable solution can take a lot of time.

Third-party solutions

SqlBak service is an agent-based service for creating MySQL, PostgreSQL, MongoDB and SQL Server backups. The entire history of backup-related activities is displayed on a single dashboard. And if something goes wrong, the service will notify you immediately.

SqlBak also boasts many useful features:

  1. Backup transfer to various cloud storages: Dropbox, Google Drive, OneDrive, Amazon S3, Azure, Backblaze, Wasabi
  2. Backup encryption
  3. Email notifications
  4. Folder backup
  5. Automatic backup recovery to another server

To backup MySQL Server with SqlBak, you need to install a thin client on your server. The application can be installed via the standard package managers, please find more details here.

Once you install SqlBak on your server, it appears on your Dashboard page.

Now you have to set a connection to your MySQL Server database. It can be done by the following command:

sudo sqlbak --add-connection --db-type=mysql --user=root

The application is installed and the connection is set, so it’s time to create a backup job. To do this click the “Add new job” button and choose “Create job.”

Go to the “Select databases” section, and choose all the databases that you want to backup.

The next step is to choose a destination place for your backups. In the “Store backups in destinations” section, choose FTP from the list and add the appropriate settings.

Scroll down to the “Schedule backups” section and set the backup schedule you need. Note, with SqlBak on Linux you can run incremental backups as well.

If you prefer to receive the notifications if your backups were successful or failed, go to the “Send email confirmation section” section and add your email. To receive the notifications on multiple email addresses, specify them separated by a comma.

Below, at your backup job settings page, you can find other interesting and useful settings, such as: Execute After & Before Scripts, Encryption, and Backup Folder.

Another useful option when setting up a backup job is “Restore Tasks,” with which you can configure the restore process to restore the newly created file to a different database server.

You can check your settings by clicking the “Run Now” button, your backup jobs will be immediately started and displayed in the job execution log.

Источник

Backup to ftp linux

Приложение Duplicity позволяет настроить автоматическое создание инкрементальных резервных копий.

Исходные данные.

FTP-сервер: rc-ftp-01.activeby.net

Имя пользователя: user

Пароль пользователя: password

Каталог, для которого создаём резервную копию: /home/bitrix/www

Установка Duplicity

Для систем семейства RedHat:

Для систем семейства Debian:

Создание резервной копии.

Будет рассматриваться создание резервной копии без шифрования. Для начала необходимо инициализировать служебные переменные:

В переменной FTP_PASSWORD сохраняется пароль FTP-пользователя. В нашей слочае — это password.

Далее необходимо запустить приложение duplicity с нужными ключами:

Читайте также:  Red hat linux gcc

duplicity —no-encryption —full-if-older-than 2D —exclude /home/bitrix/www/bitrix/backup —exclude /home/bitrix/www/bitrix/cache —exclude /home/bitrix/www/bitrix/managed_cache /home/bitrix/www ftp://user@rc-ftp-01.activeby.net/www

—no-encryptionотменяет шифрование;

—full-if-older-than 2D — создавать полную резервную копию каждые два дня (необходимо для системной очистки);

—excludeисключает каталог или файл из резервной копии;

/home/bitrix/wwwкаталог, для которого создаём резервную копию;

ftp://протокол передачи данных;

userимя FTP-пользователя;

rc-ftp-01.activeby.netFTP-сервер;

/wwwкаталог в домашней директории пользователя на FTP-сервере для хранения резервных копий.

В конце выполняем очистку служебных переменных:

Удаление резервных копий.

remove-older-thanкоманда на удаление резервных копий;

4Dпериод; в данном примере удаляются копии старше 4 дней;

—forceудалять без подтверждения;

Удаление будет срабатывать только в случае, когда на границе заданного периода будет полная копия. В противном случае получим предупреждение:

Which can’t be deleted because newer sets depend on them.

No old backup sets found, nothing deleted.

«Не может быть удален, потому что новые элементы зависят от него. Старые резервные копии не найдены, ничего не удалено»

Автоматическое создание резервной копии с уведомлением по почте.

Для реализации потребуется установить почтовый клиент Mutt, написать небольшой скрипт и настроить расписание его выполнение в планировщике Cron.

Установка Mutt.

Для систем семейства RedHat:

Для систем семейства Debian:

Написание скрипта

Затем откроем его любым редактором, например, nano:

duplicity —no-encryption —full-if-older-than 2D —exclude /home/bitrix/www/bitrix/backup —exclude /home/bitrix/www/bitrix/cache —exclude /home/bitrix/www/bitrix/managed_cache /home/bitrix/www ftp://user@rc-ftp-01.activeby.net/www >> $LOG

duplicity remove-older-than 4D —force ftp://user@rc-ftp-01.activeby.net/www >> $LOG # Удаляем старые копии

STAT=`duplicity collection-status ftp://user@rc-ftp-01.activeby.net/www` # Статистика по имеющимся резервным копиям

# а вложением будет лог их удаления и создания
echo -e «Backup completed. The result is attached to the letter. \n Current status: \n $STAT» | mutt $MAIL -a $LOG -s «Backup site — $(date +%Y%m%d)»

Настройка расписания выполнения.

Открывает расписание текущего пользователя для редактирования:

/root/create-backup.shпуть к созданному скрипту .

После сохранения проверим, чтобы изменения в расписание записались:

Восстановление из резервной копии.

Для начала инициализируем служебные переменные:

В переменной FTP_PASSWORD сохраняется пароль FTP-пользователя. В нашей слочае — это password.

Далее необходимо запустить приложение duplicity с нужными ключами:

restoreкоманда на восстановление;

—no-encryptionне использовать шифрование;

-tаргумент для указания даты резервной копии;

4Dзначение аргумента -t , означающее, что необходимо восстановть копию четырёх-дневной давности;

/home/bitrix/wwwкуда необходимо восстановить (с заменой существующих данных).

Если решение вопроса найти не удалось, Вы можете отправить нам заявку:

Источник

Backup VDS and Dedicated Servers (Linux)

Below are two editions of the script for organizing data backup (backup) with VDS Linux. Both versions once a week, on Sundays, create a complete copy of all data and the MySQL database, and in the rest — only incremental archives. To run automatically, add a line like the following to the cron job manager:

10 0 * /root/bin/backup.sh >/dev/null 2>&1

For the scripts to work, the amount of free disk space in the system must exceed the size of the copied data. ободного места на диске в системе превышал размер копируемых данных.

Читайте также:  Linux показать подключенные устройства

Backup to FTP server

Initially assign values to several variables. DIRS — space-separated list of directories for backup. MUSER and MPASS — MySQL DBMS administrator data for the connection. FTPU and FTPP — user data for connecting to the FTP server. FTPS is the name of the FTP server. EMAILID — email address to which error reports will be sent. For correct operation, the ncftp client must be installed on the system:
#!/bin/sh

### System Setup ###
DIRS=»/etc /home /var/www»
BACKUP=/tmp/backup.$$
NOW=$(date +»%d-%m-%Y»)
INCFILE=»/root/tar-inc-backup.dat»
DAY=$(date +»%a»)
FULLBACKUP=»Sun»

### MySQL Setup ###
MUSER=»root»
MPASS=»password»
MHOST=»localhost»
MYSQL=»$(which mysql)»
MYSQLDUMP=»$(which mysqldump)»
GZIP=»$(which gzip)»

### FTP server Setup ###
FTPD=»/backup/incremental»
FTPU=»user»
FTPP=»password»
FTPS=»ftp1.sim-networks.com»
NCFTP=»$(which ncftpput)»

### Other stuff ###
EMAILID=»user@yourdomain.com»

### Start Backup for file system ###
[ ! -d $BACKUP ] && mkdir -p $BACKUP || :

### See if we want to make a full backup ###
if [ «$DAY» == «$FULLBACKUP» ]; then
FTPD=»/backup/full»
FILE=»fs-full-$NOW.tar.gz»
tar -zcvf $BACKUP/$FILE $DIRS
else
i=$(date +»%Hh%Mm%Ss»)
FILE=»fs-i-$NOW-$i.tar.gz»
tar -g $INCFILE -zcvf $BACKUP/$FILE $DIRS
fi

### Start MySQL Backup ###
# Get all databases name
DBS=»$($MYSQL -u $MUSER -h $MHOST -p$MPASS -Bse ‘show databases’)»
for db in $DBS
do
FILE=$BACKUP/mysql-$db.$NOW-$(date +»%T»).gz
$MYSQLDUMP -u $MUSER -h $MHOST -p$MPASS $db | $GZIP -9 > $FILE
done

### Dump backup using FTP ###
#Start FTP backup using ncftp
ncftp -u»$FTPU» -p»$FTPP» $FTPS mkdir $FTPD
mkdir $FTPD/$NOW
cd $FTPD/$NOW
lcd $BACKUP
mput
quit
EOF

### Find out if ftp backup failed or not ###
if [ «$?» == «0» ]; then
rm -f $BACKUP/
else
T=/tmp/backup.fail
echo «Date: $(date)»>$T
echo «Hostname: $(hostname)» >>$T
echo «Backup failed» >>$T
mail -s «BACKUP FAILED» «$EMAILID» rm -f $T
fi

Источник

How do I back up via FTP and rsync?

I am new to these backup things. I have try Backuppc and rsnashot. Backuppc was cool, with web frontend. My probleam: I don’t have any backup servers I just have server and ftp-disk. I wanted to backup my server to ftp-disk, but I’m not sure how to do it? Can I use rsync?

5 Answers 5

Another solution, if you have lftp:

lftp -e "mirror -R src_local_folder dest_folder_on_ftp_server; exit" -u ftp_user[,ftp_pass] ftp_server 

you can mount the ftp resource as a local

curlftpfs [user@]host:[dir] mountpoint [options] 

and use rsync as to local directories

rsync works over ssh, but not over FTP. Full discussion here:

(Short answer in case serverfault ever goes down: you can’t. Try lftp .)

Little script for that that can be useful, mirror a local directory to distant with given configuration @ beginning of script

#!/bin/bash #@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ # # DESCRIPTION: Mirrors local site and remote site #@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ FTP_HOST=aFtpHost.org FTP_USER=YourUserHere FTP_PWD=yourPasswdHere LOCAL_SOURCE_PATH=/home/myName/locations/music/$ #param 1 from script for example REMOTE_DEST_PATH=/htdocs/aDirectory EXCLUDE_FILES_LIST=".svn empty anotherDirectory" # Construct excludes for exclude in $; do EXCLUDES="-x $ $" done # -R, --reverse reverse mirror (put files) # mirror -e #--delete delete files not present at remote site lftp ftp://$:$@$ -e "mirror $ -R $ $ ; quit" 

Источник

Оцените статью
Adblock
detector