Удалять все файлы .sql.gz в папке старше 30 дней:
find /var/www/backup/ -type f -mtime +30 -name '*.sql.gz' -delete
Удалять все файлы .sql.gz в папке старше 30 дней:
find /var/www/backup/ -type f -mtime +30 -name '*.sql.gz' -delete
В примере в скрипте запускается dbf
.
Только при запуске через cron ошибка:
/usr/bin/env: ruby_executable_hooks: Нет такого файла или каталога
Узнать полный путь к исполняемому файлу:
which dbf
результат:
/usr/local/rvm/gems/ruby-2.4.2/bin/dbf
в пути изменить bin на wrappers т.е.:
/usr/local/rvm/gems/ruby-2.4.2/wrappers/dbf
и в скрипте указывать этот полный путь
Используются обертки — это скрипт, который загружает правильную среду и решает вашу проблему, обертки генерируются автоматически с помощью RVM.
Автоматический перезапуск mariadb если она не активна (Script for checking mariadb status and restarting if it is inactive).
Скрипт:
#!/bin/bash STATUS=$(/bin/systemctl is-active mariadb.service); if [ $STATUS != 'active' ] then /bin/systemctl restart mariadb.service fi
Cron (каждые 5 минут)
*/5 * * * * /var/scripts/check_mariadb.sh
Скрипт (спецсимволы в паролях экранировать):
#!/bin/bash cd /var/www/backup/ #local mysqldump --opt -udbuser -pdbpassword dbname | gzip -c -9 > site.ru.sql.gz tar -czf site.ru.tar.gz ../site.ru #gdrive GDRIVE=/root/gdrive for f in *.gz do $GDRIVE list | grep $f | awk '{print $1}' | xargs -I {} sh -c "$GDRIVE delete {}" $GDRIVE upload $f done
Более простой не универсальный вариант:
#!/bin/bash #local mysqldump --opt -udbuser -pdbpassword dbname | gzip -c -9 > /var/www/backup/site.ru.sql.gz tar -czf /var/www/backup/site.ru.tar.gz /var/www/site.ru/ #gdrive /root/gdrive list | grep site.ru.sql.gz | awk '{print $1}' | xargs -I {} sh -c '/root/gdrive delete {}' /root/gdrive upload /var/www/backup/site.ru.sql.gz /root/gdrive list | grep site.ru.tar.gz | awk '{print $1}' | xargs -I {} sh -c '/root/gdrive delete {}' /root/gdrive upload /var/www/backup/site.ru.tar.gz
Информация о GDrive (установка и использование): https://github.com/prasmussen/gdrive
См. также: cron резервное копирование файлов и базы данных сайта с выгрузкой на удаленный ftp
Скрипт:
в пароле для mysql спецсимволы нужно экранировать, например \)
#!/bin/bash tar -czf /var/www/backup/site.ru.tar.gz /var/www/site.ru/ mysqldump --opt -udbuser -pdbpassword dbname | gzip -c -9 > /var/www/backup/site.ru.sql.gz lftp -c 'open -e "mput -O ftpdir/ /var/www/backup/*.gz " -u ftpuser,ftppassword ftpserver exit'
Задание cron (будет выполняться в 2:30 каждый день):
crontab -e
30 2 * * * /usr/bin/perl /var/www/backup/site.ru.sh >> /var/www/backup/site.ru.log 2>&1
https://www.frameworks.su/article/rezervnoe_kopirovanie_sayta_s_pomoshchyu_cron
См. также: Резервное копирование файлов и базы данных сайта с выгрузкой на Google Drive
В примере для открытия URL каждый день в час ночи.
0 1 * * * wget -O - http://site.com/cron.php >/dev/null 2>&1
Еще варианты:
http://stackoverflow.com/questions/13259530/using-cron-jobs-to-visit-url
Для автоматического запуска скрипта при загрузке системы в файле rc.local добавить:
internet start
Для переподключения в случае разрыва соединения в /etc/crontab
* * * * * root ping -c 1 gmail.com >> /var/log/internet/ping.log || internet restart >> /var/log/internet/restart.log
Каждую минуту будет выполнятся проверка на активность соединения и в случае его отсутствия выполняться переподключение.
Пример приведен с учетом того что
internet start
internet stop
internet restart
комманды подключения/отключения/переподключения к Интернет.