Я хочу запустить команду / скрипт, скажем, script.sh
с 1:00 до 2:00 в минуту. После наблюдения того, что crontab не может решить это "в секунду", я должен был пойти с "в минуту".
По сути, мой файл server.sh
занимает backup
из моего database
на сервере. Это делается тремя текстовыми файлами с именами tables
, что создает три резервных копии archives
. Эти архивы резервных копий называются как «prefixYYYYmmdd», где префикс = тяжелый / легкий / еженедельный в зависимости от типа резервной копии.
Теперь я хочу скопировать эти файлы после их сохранения на сервере. Предположим, что резервное копирование на сервере заняло 15 минут. Теперь я должен запустить скрипт copy
- client.sh
на моем локальном компьютере. Поскольку этот сценарий copy
не знает имен файлов, только что созданных сервером, он должен работать в секунду / мин в интервале, в течение которого эти файлы создаются сервером, и захватывать этот файл.
Как использовать crontab в минуту / сек в течение этого промежутка времени?
Сначала создайте задание cron, которое начнется к 1 часу ночи.
1 * * * /path_to_script/script.sh
В script.sh
#!/bin/bash
while true
do
find dir -mtime -1 -exec cp {} directory \;
TEST=`echo $(date +%H)`
if [ $TEST > 2 ]
then
exit 0
fi
sleep 1
done
Измените команду find по своему усмотрению (Чтобы найти файлы, измененные недавно используйте mtime и используйте rsync, если вы хотите вернуться с удаленной машины или просто cp / mv, если она с локальной машины)
Этот сценарий проверит наличие date
и, если его время превышает 2 часа ночи, он будет выйти автоматически.
Надеюсь, это поможет
Есть несколько подходов, которые вы могли бы использовать.
Обратите внимание, что «... сценарий копирования не знает имен только что созданных файлов ...» просто означает, что в сценарии еще нет кода. Вы сказали, что файлы с текущей датой, просто работайте с этим. например:
#!/bin/bash
FILE=$(date +"prefix%Y%m%d")
echo "The filename for today is "$FILE
Я бы использовал rsync
для такой работы. Существуют даже готовые решения . Даже во времени , обычно используемое как AFAIK для резервного копирования клиент-локальный диск, подойдет для вашего случая, если вы сможете смонтировать место назначения резервной копии через nfs / smb / ...
Делать это с помощью специального решения - это хорошо вначале, но необходимость в нем неизбежна, а специальные решения редко способны изящно адаптироваться.