Написал быстренько bash-скрипт по бэкапу директории + mysql на FTP сервер.
Отличительной особенностью является то, что скрипт не создает локальных файлов, а сразу через пайпы пишет на ftp. Бывает крайне полезно, когда места впритык.
Софт используется стандартный: tar, curl, gzip, mysqldump(опционально).
#!/bin/bash FTP_USER=user FTP_PASS=pass FTP_HOST=192.168.0.1 FTP_PORT=21 FTP_PATH= MYSQL_USER=root MYSQL_PASS=pass MYSQL_DB=$2 BACKUP_DIR=$1 stat $BACKUP_DIR > /dev/null 2>&1 ISEXISTS=$? if [ $ISEXISTS != 0 ]; then echo "File or directory not found" exit 1 fi # Backup files tar czf - $BACKUP_DIR | curl -s -T - ftp://${FTP_USER}:${FTP_PASS}@${FTP_HOST}:${FTP_PORT}/${FTP_PATH}`basename $BACKUP_DIR`-`date +%Y.%m.%d_%H-%M`.tar.gz echo "[`date +'%Y.%m.%d %H:%M'`] Directory was uploaded" # Backup db if [ -z "$MYSQL_DB" ]; then echo "[`date +'%Y.%m.%d %H:%M'`] DB not set" echo "#####" exit 0 fi mysqldump -u${MYSQL_USER} -p${MYSQL_PASS} ${MYSQL_DB} | gzip - | curl -s -T - ftp://${FTP_USER}:${FTP_PASS}@${FTP_HOST}:${FTP_PORT}/${FTP_PATH}${MYSQL_DB}-`date +%Y.%m.%d_%H-%M`.sql.gz echo "[`date +'%Y.%m.%d %H:%M'`] DB was uploaded" echo "#####"
Все учетки специально были прописаны в скрипте, а не передаются в параметрах, чтобы можно было повесить этот скрипт в cron и не парится за раскрытие данных в процессах.
Скрипт крайне примитивен, не имеет никаких опций, запускается простой компандой:
$ ./backup.sh /var/www/mysite mysitedb
Т.е. название скрипта, полный путь до каталога, который резервируем и опционально база данных, если ее не указать, просто не будет сниматься дамп.
Скрипт никаких проверок и ротаций не делает. Только минимализм, только хардкор.
Проверялся мною на Debian 8, но думаю будет идти без проблем практически на любой unix-like системе.
No comments
RSS / trackback