一个备份MySQL数据库的简单Shell脚本

适用操作系统:任何Linux或UNIX。

主脚本(用于备份mysql数据库):

该Shell脚本可以自动备份数据库。只要复制粘贴本脚本到文本编辑器中,输入数据库用户名、密码以及数据库名即可。我备份数据库使用的是mysqlump 命令。后面会对每行脚本命令进行说明。

1. 分别建立目录“backup”和“oldbackup”

1
2
#mkdir /backup
#mkdir /oldbackup

2. 现在使用你喜欢的编辑软件创建并编辑“backup.sh”

这里我用的是 vi

1
# vi /backup/backup.sh

现在把以下几行命令输入到 backup.sh 文件中:

1
2
3
4
5
6
7
8
9
#!bin/bash
cd /backup
echo “You are In Backup Directory”
mv backup* /oldbackup
echo “Old Databases are Moved to oldbackup folder”
Now=$(date +”%d-%m-%Y–%H:%M:%S”)
File=backup-$Now.sql
mysqldump –u user-name  –p ‘password’ database-name > $File
echo “Your Database Backup Successfully Completed”

脚本说明:

切记,在第8行命令中,在mysqldump命令后要输入自己的数据库用户名、密码及数据库名。

执行该脚本,首先会进入 /backup 目录,然后该脚本会把原有的旧数据库备份移动到 /oldbackup 文件夹中,接着根据系统的日期及时间生成一个文件名,在最后 mysqldump 命令会生成一个“.sql”格式的数据库备份文件。

3. 设置 backup.sh 脚本文件的可执行许可

1
# chmod +x /backup/backup.sh

4. 执行脚本

1
#./backup.sh

脚本运行结束后会得到以下输入。

1
2
3
4
5
root@Server1:/download#./backup.sh
You areinDownload Directory
Old Backup DatabaseisMoved to oldbackup folder
database backup successful completed
root@Server1:/download#

注:首次执行该脚本会有一个“no such file”的提示信息,这是由于旧备份文件还不存在。只要再次执行该脚本就没有问题了,这个问题已经不存在了。

5. 使用cron制订备份计划

使用Cron可以定时执行该脚本,备份会自动完成。使用 crontab 命令编辑cron 执行的计划任务。

#crontab –e

只要在编辑器上加入下面这一行代码保存即可。

1
013* * *  /backup/backup.sh
f1 f2 f3 f4 f5 program

 其中 f1 是表示分钟,f2 表示小时,f3 表示一个月份中的第几日,f4 表示月份,f5 表示一个星期中的第几天。program 表示要执行的程式。

本任务表示的是在每天下午1点钟把数据库备份到指定的文件夹。有关cron任务设置的详细内容可以查阅crontab手册。

linux下mv命令使用方法

1.作用
mv命令来为文件或目录改名或将文件由一个目录移入另一个目录中。该命令等同于DOS系统下的ren和move命令的组合。它的使用权限是所有用户。

2.格式
mv [options] 源文件或目录 目标文件或目录

3.[options]主要参数

-i:交互方式操作。如果mv操作将导致对已存在的目标文件的覆盖,此时系统询问是否重写,要求用户回答”y”或”n”,这样可以避免误覆盖文件。

-f:禁止交互操作。mv操作要覆盖某个已有的目标文件时不给任何指示,指定此参数后i参数将不再起作用。

4.第二个参数

当第二个参数类型是文件时,mv命令完成文件重命名,它将所给的源文件或目录重命名为给定的目标文件名。

当第二个参数是已存在的目录名称时,源文件或目录参数可以有多个,mv命令将各参数指定的源文件均移至目标目录中。在跨文件系统移动文件时,mv先拷贝,再将原有文件删除,而链至该文件的链接也将丢失。

5.应用实例

(1)将/usr/udt中的所有文件移到当前目录(用”.”表示)中:
$ mv /usr/udt/* .

(2)将文件test.txt重命名为wbk.txt:
$ mv test.txt wbk.txt

ubuntu下配置sendmail服务使用PHPmail

搞了好久,才最终解决问题。
方法如下,
1.安装 apache2 php5
sudo apt-get install apache2 php5-mysql libapache2-mod-php5 mysql-server
安装php5-mcrypt

sudo apt-get install php5-mcrypt
编辑php配置文件
sudo gedit /etc/php5/apache2/php.ini
在extension下面加上(任何独立一行就行)

extension=php_mcrypt.so (原来的php5-mcrypt.so无效)

保存,重启apache2
sudo /etc/init.d/apache2 restart
2.安装sendmail
sudo apt-get install sendmail
sudo apt-get install sendmail-cf
3.配置一下/etc/php5/apache2/php.ini 找到 ;sendmail_path这句,去掉注释的;然后添加sendmail启动目录
sendmail_path = /usr/sbin/sendmail -t -i
4.可以使用php mail函数发信了,如果不行,出现了
Diagnostic-Code: SMTP; 550 MI:IMF mx51,YcCowEB5qU2aq2xPLjE6BA–.489S2 1332521915 http://mail.163.com/help/help_spam_16.htm?ip=175.41.17.202&hostid=mx51&time=1332521915错误
检查/etc/hostname 文件,把里面的东西改成域名形式比如 lvxinwei.info 就行了

5个缺失的 JavaScript 数字格式化函数

以下是五个有用的JS数字格式化函数
1. 四舍五入
下面两个函数都能对浮点数进行四舍五入,保留小数点后两位。

2. 给数字添加逗号
每三位数字添加一个逗号,方便阅读

3. 类似PHP的 number_format 功能
这个函数可以添加分隔逗号或者进行四舍五入。

4. 添加序数词
给数字添加”st, nd, rd, th”等序数词。

5. 从字符串中移除非数字字符

[js]
// 四舍五入
/** 下面两个函数都能对浮点数进行四舍五入,保留小数点后两位 **/

function CurrencyFormatted(amount) {
var i = parseFloat(amount);
if(isNaN(i)) { i = 0.00; }
var minus = ”;
if(i < 0) { minus = ‘-‘; }
i = Math.abs(i);
i = parseInt((i + .005) * 100);
i = i / 100;
s = new String(i);
if(s.indexOf(‘.’) < 0) { s += ‘.00’; }
if(s.indexOf(‘.’) == (s.length – 2)) { s += ‘0’; }
s = minus + s;
return s;
}

/**
* Usage: CurrencyFormatted(12345.678);
* result: 12345.68
**/

function format_number(pnumber,decimals){
if (isNaN(pnumber)) { return 0};
if (pnumber==”) { return 0};

var snum = new String(pnumber);
var sec = snum.split(‘.’);
var whole = parseFloat(sec[0]);
var result = ”;

if(sec.length > 1){
var dec = new String(sec[1]);
dec = String(parseFloat(sec[1])/Math.pow(10,(dec.length – decimals)));
dec = String(whole + Math.round(parseFloat(dec))/Math.pow(10,decimals));
var dot = dec.indexOf(‘.’);
if(dot == -1){
dec += ‘.’;
dot = dec.indexOf(‘.’);
}
while(dec.length <= dot + decimals) { dec += ‘0’; }
result = dec;
} else{
var dot;
var dec = new String(whole);
dec += ‘.’;
dot = dec.indexOf(‘.’);
while(dec.length <= dot + decimals) { dec += ‘0’; }
result = dec;
}
return result;
}

/**
* Usage: format_number(12345.678, 2);
* result: 12345.68
**/
//给数字添加逗号
/** 每三位数字添加一个逗号,方便阅读 **/

function CommaFormatted(amount) {
var delimiter = ","; // replace comma if desired
amount = new String(amount);
var a = amount.split(‘.’,2)
var d = a[1];
var i = parseInt(a[0]);
if(isNaN(i)) { return ”; }
var minus = ”;
if(i < 0) { minus = ‘-‘; }
i = Math.abs(i);
var n = new String(i);
var a = [];
while(n.length > 3)
{
var nn = n.substr(n.length-3);
a.unshift(nn);
n = n.substr(0,n.length-3);
}
if(n.length > 0) { a.unshift(n); }
n = a.join(delimiter);
if(d.length < 1) { amount = n; }
else { amount = n + ‘.’ + d; }
amount = minus + amount;
return amount;
}

/**
* Usage: CommaFormatted(12345678);
* result: 12,345,678
**/

function addCommas(nStr) {
nStr += ”;
var x = nStr.split(‘.’);
var x1 = x[0];
var x2 = x.length >; 1 ? ‘.’ + x[1] : ”;
var rgx = /(d+)(d{3})/;

while (rgx.test(x1)) {
x1 = x1.replace(rgx, ‘$1’ + ‘,’ + ‘$2’);
}

return x1 + x2;
}

/**
* Usage: addCommas(12345678);
* result: 12,345,678
**/
//类似PHP的 number_format 功能
/** 这个函数可以添加分隔逗号或者进行四舍五入。 **/

function number_format (number, decimals, dec_point, thousands_sep) {

number = (number + ”).replace(/[^0-9+-Ee.]/g, ”);
var n = !isFinite(+number) ? 0 : +number,
prec = !isFinite(+decimals) ? 0 : Math.abs(decimals),
sep = (typeof thousands_sep === ‘undefined’) ? ‘,’ : thousands_sep,
dec = (typeof dec_point === ‘undefined’) ? ‘.’ : dec_point,
s = ”,
toFixedFix = function (n, prec) {
var k = Math.pow(10, prec);
return ” + Math.round(n * k) / k;
};
// Fix for IE parseFloat(0.55).toFixed(0) = 0;
s = (prec ? toFixedFix(n, prec) : ” + Math.round(n)).split(‘.’);
if (s[0].length > 3) {
s[0] = s[0].replace(/B(?=(?:d{3})+(?!d))/g, sep);
}
if ((s[1] || ”).length < prec) {
s[1] = s[1] || ”;
s[1] += new Array(prec – s[1].length + 1).join(‘0’);
}
return s.join(dec);
}

/**
* Usage: number_format(123456.789, 2, ‘.’, ‘,’);
* result: 123,456.79
**/
//添加序数词
/** 给数字添加"st, nd, rd, th"等序数词。 **/

Number.prototype.toOrdinal = function() {
var n = this % 100;
var suffix = [‘th’, ‘st’, ‘nd’, ‘rd’, ‘th’];
var ord = n < 21 ? (n < 4 ? suffix[n] : suffix[0]) : (n % 10 > 4 ? suffix[0] : suffix[n % 10]);
return this + ord;
}

/*
* Usage:
* var myNumOld = 23
* var myNumNew = myNumOld.toOrdinal()
* Result: 23rd
*/
[/js]

Debug 总结之二

1.采用框架MVC分离时注意相对路径和绝对路径,位于如果和smarty模板文件位于同一目录且被包含,那么此文件的相对路径和包含文件相同,但是包含文件路径并不是你所看到的路径,有可能是在根目录下的runtime临时文件夹中,切记这一点,所以在模板中最好用绝对路径。

2.SQL语句,我们在插入一个varchar类型的变量时不能忘了原来的单引号,例如以下的语法是错误的

[php]

$sql=" insert into table_test values(".$value.")";

[/php]

正确的写法为

[php]

$sql=" insert into table_test values(‘".$value."’)";

[/php]

3.在调试ajax时为了看到server端的运行状态,可以采用以下两种方式:

(1)把运行结果写入一个文件

(2)把运行结果通过ajax返回

4.在使用Jquery时注意看开发文档,看返回的数据结构和配置文档,不能瞎搞,一般采用json格式返回。