Команда find
удалит любой обычный файл в каталоге /home/_backups/pokebrawl
или ниже, который старше семи дней (или, точнее, не изменялся в течение последней недели ).
Следует вероятно читать
find "$DESDIR" -mtime +6 -type f -delete
или
find "${DESDIR:?Not set correctly}" -mtime +6 -type f -delete
, так как уже существует отличная переменная, содержащая это имя каталога. Второй вариант вызовет ошибку, если DESDIR
по какой-либо причине будет пустым или неустановленным.
Я предполагаю, что это способ сохранить резервные копии только за последнюю неделю. Я бы предложил вместо этого использовать что-то вроде borgbackup
или restic
, так как они смогут хранить резервные копии намного дольше, не занимая много места (даже ежечасные резервные копии в течение года вообще не займут много места, если данные не сильно изменились ). Они выполняют дедупликацию данных и borgbackup
дополнительно поддерживают сжатие (, а также поддерживают удаленное резервное копирование и шифрование ).
Чтобы запускать скрипт каждые 24 часа (в полночь ), используйте задание cron.
Сначала введите команду crontab -e
. Это откроет редактор с текущим crontab для активного пользователя (это может быть или не быть пустым файлом ).
Затем добавьте
@daily /path/to/the/script.sh
(где path/to/the/script.sh
— путь к скрипту ).
Сохраните и выйдите из редактора.
Сценарий теперь будет вызываться в полночь, даже ночью.
Если вы хотите запускать скрипт, скажем, в 13 :30 каждый день, добавьте вместо этого следующую запись в crontab:
30 13 * * * /path/to/the/script.sh
Подробную информацию о том, как составить расписание crontab, см. в руководстве по crontab для вашей системы.(man 5 crontab
).
read
используется для захвата входных данных и присвоения их переменным. Он не производит вывод, поэтому перенаправление просто создаст пустой файл.
Вместо этого вы можете использовать командуtee
. Он принимает ввод со стандартного ввода и записывает вывод в стандартный вывод, а также в один или несколько файлов.
Используя tee
и присваивание переменной, вы можете сделать:
$ variable=$(printf "%s " $RANDOM $RANDOM $RANDOM $RANDOM | tee variable.txt)
Обратите внимание, что я использовал «%s», потому что вы просили, чтобы вывод был в одной строке.
Что дает вам:
$ echo $variable
31738 28009 6462 15565
$ cat variable.txt
31738 28009 6462 15565