今天主要研究了利用SSH备份数据,说实话,第一次接触这个东西还真是陌生啊,全是命令行操作,虽然以前做HACKER的时候没少接触,但是用到正经地方还是第一次的说。

记录一下吧,备忘:

1、压缩及解压缩:
解压缩
tar命令.tar, .tar.gz等文件的解压
使用方法如下:
tar [参数列表] [文件名]参数列表:
-c 生成新的备份,并同时覆盖旧的备份文件
-x 从备份文件中解压缩
-t 列出备份文件内的文件目录
-v 显示所有被操作文件列表
-f 在指定位置生成备份
-u 将不存在于备份中的文件,或将已经被更改的文件加入该备份中。举例说明:
tar cvf filename.tar /*制作备份*/
tar cvf tarfile.tar ./filename /*将filename的文件备份到tarfile.tar里面*/
tar tvf filename.tar /*列出tar文档的内容*/
tar xvf filename.tar /*从tar文档中导出文件*/
tar zxpvf filename.tar.gz /*从tar.gz文档中导出文件*/
tar zxvf filename.tar.gz /*同上*/
tar xvf tarfile.tar ./filename /*导出tar文件中的单个文件*/
unzip命令unzip filenema.zip 

实例应用:
压缩命令:

zip -r 目录名 文件名
tar -zcvf  /var/bak/www.tar.gz /var/www/
tar -jcvf  /var/bak/www.tar.bz2 /var/www/ (推荐使用,压缩率高)
解压命令:
对于 tar.gz格式用 tar -xzf www.tar.gz
对于 tar.bz2格式用 tar -xjf www.tar.bz2
对于 zip 格式用 unzip  www.zip

推荐使用bz2格式的,压缩率高,在windows下用winrar或者7zip都可以正常使用。压缩比和速度都是一流的

2、备份数据库并发到指定邮箱

Dreamhost提供强大的shell,可以方便的安全的进行对远程主机的操作.经过测试终于实现了数据库自动定时备份,然后发送到指定的邮箱,其实很简单就可以实现.
第一步:编写shell脚本代码,这个代码网上流传甚广,直接用就可以了,代码如下:

第一种方法
#!/bin/bash
DATE=$(date +%Y%m%d)
HOST=9458398.cn
USER=root
PASS=123456
DB=wordpress
EMAIL=”XX@XX.com
TIL=”$DB($DATE)”
mysqldump –pt -u $USER -p$PASS $DB -h $HOST > backup.sql
gzip backup.sql
mv backup.sql.gz $TIL.gz | mutt $EMAIL -s$TIL -a $TIL.gz
第二种方法
mysqldump –opt -uUSER -pPASS -h 9458398.cn –all-databases > /home/web/backups/all.sql
tar zcf /mnt/local/home/web/backups/mysql.tar.gz /mnt/local/home/web/backups/all.sql
mutt 52@9458398.cn -a /mnt/local/home/web/backups/all.sql -s “MySQL Backup”
rm -r /mnt/local/home/web/backups/all.sql
rm -r /mnt/local/home/web/backups/mysql.tar.gz
第三种方法
#!/bin/bash
cd /home/username/backups/ #username改为你登录ssh时用的用户名
mkdir mysql
suffix=$(date +%y%m%d)
mysqldump –opt -uUser -pPass -h mysqlA.domain.com db_nameA > mysql/db_nameA.$suffix.sql #User为数据库用户名,pass为数据库用户密码,mysqlA.domain.com为数据库地址,db_nameA为数据库名,请根据你的情况修改。
tar zcf archives/mysql_backup.$suffix.tar.gz mysql/*
rm -r mysql/
mutt you@domain.com -a /home/username/backups/archives/mysql_backup.$suffix.tar -s “MySQL Backup” #you@domain.com修改为你准备用于收取备份压缩包的邮箱。
把上述脚本保存成任意文件名,比如说auto(注意上传后给auto owner 运行权限)
上传选用二进制方式上传,不然容易出错,或者直接在远程主机上用vim写。

保存后,上传到backups文件夹中。
在putty中运行

dos2unix ~/backups/auto
chmod 755 ~/backups/auto

第二步:利用crontab设定定时任务
所谓定时任务就是让主机在指定的时间执行你设定的脚本或者程序,这里就设定刚才的执行脚本。至于crontab命令网上可以查到详细说明,或者直接man crontab.
常用的crontab命令:
crontab -l 显示所有现存cron job.
crontab -r 删除当前cron jobs.
crontab -e 编辑当前 “crontab file”. DH推荐使用nano

34 12 * * * /home/user/wpautobackup

第一个数字是每小时的第几分钟,
第二个数字是每天的第几小时,
第三个数字是每月的第几天,
第四个数字是每年的第几月,
第五个数字是每周的第几天.

使用方式例如:
12 * * * * : 表示每小时的第12分钟.
12,34 * * * * : 表示每小时的第12及第34分钟两次
*/15 */2 * * *: 表示0:00, 0:15, 0:30, 0:45, 2:00, 2:15, 2:30, …
43 18 * * 7: 表示每个周日的6:43pm运行命令行.

在DreamHost下使用nano编辑完文件后,使用ctrl+o保存,ctrl+x退出编辑。

然后就等着邮箱收备份打包好的数据吧。万一数据出了问题,每天备份也不怕了