以mysql为例。
1.备份网站数据库
mysqldump -root(数据库用户名) -pwd(数据库密码) --default-character-set=utf8 dev(数据库名) > dev_bak.sql(保存的数据库文件格式)
可以写成sh
文件
#Funciont: Backup website and mysql database
#IMPORTANT!!!Please Setting the following Values!
######~Set MySQL UserName and password~######
MYSQL_UserName=root
MYSQL_PassWord=xxxx
######~Set MySQL Database you want to backup~######
Backup_Database_Name=ghost-blog
#####~Set date
RQ=`date +%Y%m%d`
#Values Setting END!
/usr/bin/mysqldump -u$MYSQL_UserName -p$MYSQL_PassWord $Backup_Database_Name|gzip > /opt/backup/db_$Backup_Database_Name-$RQ.gz
或者
/usr/bin/mysqldump --defaults-extra-file=/etc/my.cnf ghost-blog-new | gzip > /opt/backup/db_ghost-blog-new-$(date +%Y%m%d_%H%M%S).sql.gz
后者需要在 /etc/my.cnf
文件中: [client]
部分添加脚本(指定用户、密码):
host=localhost
user=数据库用户
password='数据库密码'
2.还原备份的数据库
mysql -root -pwd dev < dev_bak.sql
3.设置定时备份
打开crontab -e
0 3 * * * /opt/sherlock/bin/backup_db.sh
添加上面的定时脚本,每天凌晨3点进行执行备份。我们可以先执行脚本看看是否可以正常进行,如果可以正常进行在设置定时。如果我们的网站数据不大,更新频率不是太多,我们手工备份也可以,没有必要每天的都备份。
设置/修改完之后记得重启下 crond
服务
service crond restart
加入开机启动
echo "service crond restart" >> /etc/rc.d/rc.local
4.crontab
命令详解
1).命令格式:
crontab [-u user] file
crontab [-u user] [ -e | -l | -r ]
2).命令功能:
通过crontab
命令,我们可以在固定的间隔时间执行指定的系统指令或 shell script
脚本。时间间隔的单位可以是分钟、小时、日、月、周及以上的任意组合。这个命令非常设合周期性的日志分析或数据备份等工作。
3).命令参数:
-u user:用来设定某个用户的crontab服务,例如,“-u ixdba”表示设定ixdba用户的crontab服务,此参数一般有root用户来运行。
file:file是命令文件的名字,表示将file做为crontab的任务列表文件并载入crontab。如果在命令行中没有指定这个文件,crontab命令将接受标准输入(键盘)上键入的命令,并将它们载入crontab。
-e:编辑某个用户的crontab文件内容。如果不指定用户,则表示编辑当前用户的crontab文件。
-l:显示某个用户的crontab文件内容,如果不指定用户,则表示显示当前用户的crontab文件内容。
-r:从/var/spool/cron目录中删除某个用户的crontab文件,如果不指定用户,则默认删除当前用户的crontab文件。
-i:在删除用户的crontab文件时给确认提示。
4). 列出crontab文件
$ crontab -l
可以使用这种方法在$HOME
目录中对crontab
文件做一备份:
$ crontab -l > $HOME/mycron
这样,一旦不小心误删了crontab
文件,可以迅速恢复。
5). 编辑crontab文件
$ crontab -e
6).使用实例
实例1:每1分钟执行一次command
* * * * * command
实例2:每小时的第3和第15分钟执行
3,15 * * * * command
实例3:在上午8点到11点的第3和第15分钟执行
3,15 8-11 * * * command
实例4:每隔两天的上午8点到11点的第3和第15分钟执行
3,15 8-11 */2 * * command
实例5:每个星期一的上午8点到11点的第3和第15分钟执行
3,15 8-11 * * 1 command
实例6:每晚的21:30重启smb
30 21 * * * /etc/init.d/smb restart
实例7:每月1、10、22日的4 : 45重启smb
45 4 1,10,22 * * /etc/init.d/smb restart
实例8:每周六、周日的1 : 10重启smb
10 1 * * 6,0 /etc/init.d/smb restart
实例9:每天18 : 00至23 : 00之间每隔30分钟重启smb
0,30 18-23 * * * /etc/init.d/smb restart
实例10:每星期六的晚上11 : 00 pm重启smb
0 23 * * 6 /etc/init.d/smb restart
实例11:每一小时重启smb
* */1 * * * /etc/init.d/smb restart
实例12:晚上11点到早上7点之间,每隔一小时重启smb
* 23-7/1 * * * /etc/init.d/smb restart
实例13:每月的4号与每周一到周三的11点重启smb
0 11 4 * mon-wed /etc/init.d/smb restart
实例14:一月一号的4点重启smb
0 4 1 jan * /etc/init.d/smb restart
实例15:每小时执行/etc/cron.hourly目录内的脚本
01 * * * * root run-parts /etc/cron.hourly
说明:
run-parts
这个参数了,如果去掉这个参数的话,后面就可以写要运行的某个脚本名,而不是目录名了
评论区