이 Bash를 이용한 크론 같은 행동은 매우 순진 구현은 다음과 같습니다
description "cron-like naive backup service"
author "Reut Sharabani"
stop on [016] or backup-stop
start on backup-start or filesystem
# restart for 20 times, every 5 seconds, if crashes
respawn
respawn limit 20 5
script
# actual backup
logger "starting backup"
# folder to back-up to
BKP_FOLDER="/home/XXXX/YYYY/backups"
# backups log file
LOG_FILE="/home/XXXX/YYYY/backups.log"
# logger "entering backup loop"
while true
do
# verify log file exists
if [ ! -e "$LOG_FILE" ]
then
logger "log file for backup service did not exist, creating one in "$LOG_FILE
echo "Backup logs: " > $LOG_FILE
fi
# verify destination folder exist
if [ ! -d "$BKP_FOLDER" ]
then
logger "Backup service folder did not exist, creating it in "$BKP_FOLDER
mkdir $BKP_FOLDER
fi
# logger "checking last backup"
# generate current backup, makes backups daily
# (if we changed to +%M-%d-%m-%y it'd be per minute...)
current_bkp="`date +%d-%m-%Y`"
# generate last backed-up file
last_bkp=`tail -1 $LOG_FILE`
# check if this file wasn't already backed-up
logger "checking $current_bkp against last status: $last_bkp"
if [ "$last_bkp" = "$current_bkp finished" ]
then
logger "date $current_bkp already backed up!"
# check for existing backup every hour
sleep 600
else
# make sure a backup process isn't currently working!
# a backup process is any process zipping into XXXX for the matter...
if [ "`pgrep -f 'zip.*XXXX'`" = '' ]
then
# no process is running, back things up
echo "$current_bkp started" >> $LOG_FILE
logger $current_bkp" is being backed up..."
# zip all folders in this list, array definition
# does not work in upstart for some reason...
zip -r $BKP_FOLDER"/"$current_bkp".zip" '/home/.../CENSORED' '/home/.../CENSORED' '/home/.../CENSORED'
echo "$current_bkp finished" >> $LOG_FILE
logger "date $current_bkp backed up!"
else
# backup process is still running, do nothing
logger "Backup stopped because process $BKP_PROC was already backing up things..."
logger "process info:"
logger "`ps aux | grep $BKP_PROC | grep zip`"
fi
fi
done
end script
이 예는 당 일이지만, 쉽게 당신이 date
명령을 사용하여 원하는 단위로 변경할 수 있습니다.
관련 대기 시간을 사용해야합니다. 나는 나의 필요를 위해 충분히 정확한 매일 백업을 위해 10 분을 사용했다. (자정 이후 몇 분 후에 백업을 시작해야한다.)
는 내가 처음 사용했습니다 (하지만 개별 백업의 역사를 유지하려는 때문에 우편보다 내 요구에 적합)
행운을 빕니다 무엇 인 rsync를 사용할 수 있습니다 잊지 마세요! :-)
신생 동력이란 무엇입니까? Crontab에는 재부팅 후 실행될 수있는 옵션이 있습니다. 이를 위해,'@reboot/usr/bin/node ... '를 사용하십시오. – fedorqui
cron 대신 Upstart를 사용하여 일정에 따라 작업을 실행하고 싶습니다. – inetbug
cron을 사용할 때 잘못된 점이 있습니까? Upstart는 이벤트 기반 init 데몬이며 특정 이벤트 *에서 특정 작업 시간에 작업을 실행하지 않습니다. – Braiam