У меня есть сценарий bash, созданный кем-то, кто больше не может объяснить смысл, который используется для автоматического TAR-файла папки и ее резервного копирования. На данный момент я запутался с финальной строкой:
find '/home/_backups/pokebrawl' -mtime +6 -type f -delete
Полный скрипт ниже.
#!/bin/bash
#Purpose = Backup of Important Data
#Created on 17-1-2012
#Author = Hafiz Haider
#Version 1.0
#START
TIME=$(date +"%m-%d-%Y-%T")
FILENAME=pokebrawl-$TIME.tar.gz
SRCDIR=/home/servers/brawl/world
DESDIR=/home/_backups/pokebrawl
tar -cpzf $DESDIR/$FILENAME $SRCDIR
find '/home/_backups/pokebrawl' -mtime +6 -type f -delete
#END
bash
shell-script
find
MODS Удалить аккаунт
источник
источник
Ответы:
Команда
find
удалит любой обычный файл в каталоге или под ним/home/_backups/pokebrawl
, возраст которого более семи дней (или, точнее, не изменен в течение последней недели).Стоит наверное прочитать
или
так как есть отличная переменная, уже содержащая это имя каталога. Второй вариант вызвал бы ошибку, если
DESDIR
по какой-либо причине был пуст или не установлен.Я предполагаю, что это способ сохранить резервные копии только на прошлой неделе. Я бы предложил использовать что-то вроде
borgbackup
илиrestic
вместо этого, так как они могли бы хранить резервные копии намного дольше, не занимая гораздо больше места (даже ежечасное резервное копирование в течение года не заняло бы много места вообще, если данные не сильно изменились) , Они делают дедупликацию данных иborgbackup
дополнительно поддерживают сжатие (оба поддерживают удаленное резервное копирование и шифрование тоже).Чтобы запускать скрипт каждые 24 часа (в полночь), используйте задание cron.
Сначала выполните команду
crontab -e
. Это откроет редактор с текущим crontab для активного пользователя (это может быть или не быть пустым файлом).Затем добавьте
(где
path/to/the/script.sh
путь к скрипту).Сохраните и выйдите из редактора.
Сценарий теперь будет вызываться в полночь, даже ночью.
Если вы хотите запускать скрипт, скажем, в 13:30 каждый день, добавьте в качестве записи crontab следующее:
См. Руководство crontab в вашей системе для получения подробной информации о том, как написать расписание crontab (
man 5 crontab
).источник
find
/delete
, в случае, если некоторые тупицы забывают установить$DESDIR
или установить ее на "/", или некоторые по ошибке.DESDIR
изменить иfind
команда не обновится, то не удастся очистить правильный каталог. Возможно, было бы полезно использовать${DESDIR:?Not set correctly}
или что-то подобное вместо этого.Это находит все файлы в каталоге
/home/_backups/pokebrawl
, которые не были изменены в последние+6
дни, и удаляет их. ПРИМЕЧАНИЕ:+6
приравнивается к 7 дням.Посмотрите,
man find
как работают эти переключатели:На дистрибутивах Redhat вы можете просто поместить этот скрипт в каталог,
/etc/crondaily
и он будет запускаться каждый день. Вы можете видеть, что там уже есть другие скрипты, которые вы можете использовать в качестве примеров:источник