| Server IP : 82.148.16.210 / Your IP : 216.73.216.19 Web Server : nginx/1.29.5 System : Linux mail.sarafai.ru 6.1.0-43-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.162-1 (2026-02-08) x86_64 User : root ( 0) PHP Version : 7.4.33 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare, MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : OFF Directory : /srv/projects/ |
Upload File : |
#!/bin/bash
if [ -n "$1" ]; then
echo "You supplied the first parameter!"
echo $1
else
echo "First parameter not supplied."
exit
fi
echo "Backup ENV3"
sudo apt install xz-utils
mkdir -p /srv/projects/backups
#DATE=`date "+%Y%m%d_%H%M"`
#tar cJvf backup_env3_$DATE.xz env3/
# Переменная для сохранения строки с датой
BACKUP_DATE=`date +%Y%m%d_%H%M%S`
# Префикс, или, говоря иначе, начало имени файла
BACKUP_PREFIX="env3"
# Количество копий, которое нужно сохранять
MAX_COPIES_COUNTER=5
# Директория, которая будет архивироваться
DIRECTORY_TO_BACKUP="/srv/projects/env3"
# Директория, в которой будут храниться бэкапы
DIRECTORY_FOR_BACKUPS="/srv/projects/backups"
# Собственно архивация
# При архивации сообщения об ошибках будут погашены
tar -cJvf ${DIRECTORY_FOR_BACKUPS}/${BACKUP_PREFIX}_${BACKUP_DATE}.tar.xz ${DIRECTORY_TO_BACKUP} 2>/dev/null
# Подсчитываем количество копий, которое сохранено в папке для хранения резервных копий
COPIES_COUNTER=`ls ${DIRECTORY_FOR_BACKUPS} | grep ${BACKUP_PREFIX} | wc -l`
# Если файлов сохранено больше, чем нам необходимо
if [ ${COPIES_COUNTER} -gt ${MAX_COPIES_COUNTER} ]
then
# Вычисляем, сколько файлов нужно удалить из папки
NEED_TO_DELETE_COUNTER=$(($(ls ${DIRECTORY_FOR_BACKUPS} | wc -l)-${MAX_COPIES_COUNTER}))
# Организуем цикл, количество циклов равно количеству файлов, которое нужно удалить
for (( i==1; i<${NEED_TO_DELETE_COUNTER}; i++ ))
do
# Сортируем список файлов, берем из него первый и удаляем
# Файлы будут отсортированы по возрастанию, соответственно
# удалится самый ранний файл
rm ${DIRECTORY_FOR_BACKUPS}/$(ls ${DIRECTORY_FOR_BACKUPS} | sort | head -n 1)
done
fi