Linux/GNU

Linux/GNU

开源系统克隆——Linux下的再生龙Clonezilla

转载:

http://hi.baidu.com/hongmuniao2/blog/item/e8f5fb7f588b170d28388aaa.html/cmtid/ed2186af83fcc2f2faed5044

2008年04月14日 星期一 17:09
1、介绍

Ghost是一个很著名的系统备份还原软件,最早的时候是一款个人软件,后来被财大气粗的赛门铁克公司收购并推出分别针对个人和企业的NortonGhost和SymentecGhost的商业版。在MS Windows下非常流行使用Ghost来备份还原系统,那么我们使用Ubuntu这样子的Linux应该用什么来备份还原系统呢?而且能和Ghost的使用一样轻松呢?原本我们应该可以考虑选择Ghost,因为Ghost是支持ext2/ext3以及Linux swap格式的,但是Ghost只有For Windows程序,只能在Windows环境下执行Ghost来备份(这一点可能不绝对,Ghost的光盘可能具备引导计算机能力并启动Ghost程序,由于没有原版Ghost,无法确认),最重要的是据传Ghost在备份还原Linux系统分区的关于Grub的处理不完善,导致Boot Loader容易出错。并且Ghost已经是商业软件,需要使用就得掏钱买了。购买具备群播还原能力的SymantecGhost那就更贵了,而且不够灵活。

我们有比Ghost更好的选择——Clonezilla,Clonezilla是什么样的软件呢。Clonezilla是一款由台湾国网中心的达人们开发的系统备份还原软件,遵守GUN授权方式的自由软件。Clonezilla可谓简约而不简单,不但具备单机备份还原能力,还具备多点还原能力,不但可以备份还原Linux系统的文件系统格式分区,配合国网中心开发的drbl-winroll还能够还原WindowsXP的同时为所还原的客户端设定用户名、密码以及随机SID。而这一切都是免费的!Clonezilla是由udpcast + Partimage + DRBL组成的,即是说Clonezilla的核心部分就是Partimage (被盾)。

Clonezilla的功能特性:

自由软件,由台湾国网中心开发。支持多种操作系统,包含Linux (ext2, ext3, reiserfs, xfs, jfs), M$ Windows (fat, ntfs)。支援GNU/Linux下的LVM2。支持群播(Multicast),配合PXE网络启动功能加上DRBL,Clonezilla具备群播能力,可用于大规模备份和恢复。客户端硬件条件满足的情况下(网络唤醒和PXE),可远端处理,无须人到客户机前操作。基于Partimage的功能(仅能处理分区)上,Clonezilla可以备份和还原分区以及整块硬盘。配合drbl-winroll,可以在还原客户端Windows XP时指定其工作组、主机名等并写入随机SID。有基于Debian的Clonezilla免安装的Clonezilla Live可用。Clonezilla比起Ghost For Linux(简称G4L)有一个很显著的优势就是Clonezilla支持的文件系统格式比G4L多以外Clonezilla只备份数据,而G4L却将整个分区都备份了(即包含空数据),所以G4L将比Clonezilla占用更多的用于存放备份镜像的空间。

根据上面资料,对于我们Ubuntu Desktop用户而言,应该选择Clonezilla Live来备份恢复系统。Clonezilla Live有两种版本,一个是光盘版,一个是USB存储设备版(闪盘、移动硬盘等USB存储设备)。我们可以酌情选择,一般推荐USB存储设备,节省资源嘛,而且节省光驱读盘能力。如果硬件条件不支持USB开机(主要是主板是否支持USB开机),那么可选择刻录Clonezilla LiveCD。

2、使用

2.1。ghost 使用参考,ghost是个商业收费软件,多数情况下,你都在用盗版
只打算更新到7.04,因为个人用的linux出问题用不着ghost, 并且ghost对linux的支持并不算理想,至少速度上就远不如clonezilla快,所以不打算对下面这个关于ghost使用的贴子进行更新:
http://forum.ubuntu.org.cn/viewtopic.php?t=37658&highlight=

2.1.1 用tar或dd备份请在论坛search keywords,也可看tar或dd的帮助文件。

2.2。clonezilla----来自台北县的GNU作品
用过ubuntu cli的朋友,一定会发现clonezilla在使用上让人感觉很亲切,一方面有繁体中文介面,另一方面是它的作业平台是debian .所以apt-get dpkg sudo 之类的命令它基本上和ubuntu相似。
用clonezilla备份linux或windows ,免费,速度很快,也很安全,支持网络多播,十几分钟可以搞定近百台电脑的还原。

iso光盘版的开机画面可能会让内地个别敏感的人感到不和谐..................这里为了和谐只介绍单机u盘版:

我的版本是:clonezilla-live-usb-20070323.zip
注意是后缀为zip的文件,下载地址为:
http://clonezilla.sourceforge.net/download/sourceforge/
首先要有一个分区来存放备份(类似gho的映像文件存放所在,本地硬盘移或动移盘的一个分区都可以),最好是fat32或linux专用格式。

2.2.1 配制clonezilla
接下来有用ntloader实现引导的简单方法,附件可供试用。

2007-06-30 更新
为了方便,我在附件中附上了一个配好了的clonezilla gho文件供试用:
附件使用方法:
注意: 你的主板bios要支持usb启动才可用,如果不支持,不妨尝试下在本地硬盘上去做。
1. 用ghost把这个gho文件还原到移动硬盘的第一个主分区。
2. 解压clonezilla-live-usb-????.zip到移动盘第一个主分区的根目录,解压后如果vmlinuz 和 initrd.gz 这两个文件在根目录,说明解压位置正确,否则重新解压。
3. winxp下,我的电脑上点右键-----管理------磁盘管理-----在移动硬盘的第一个主分区上右击------>设为活动的。
4. 重启电脑,用移动硬盘启动。

(刚才介绍的移动硬盘引导 ,参考了ptpt介绍的方法:
http://forum.ubuntu.org.cn/viewtopic.php?t=49380
http://forum.ubuntu.org.cn/viewtopic.php?t=41781&start=0&postdays=0&postorder=asc&highlight=bootlace
注意:用ntloader 或bootlace.com 来处理都是可以的。

menu.lst 的内容:
代码:
timeout 6
default 0

title Clonezilla live
kernel (hd0,0)/vmlinuz boot=casper vga=788 toram
initrd (hd0,0)/initrd.gz

如果引导不了,则去掉 toram参数或加上其它更安全的参数试下)

2.2.2 clonezilla使用方法:

最新版的使用可能会有所不同,主要是提示的菜单有些差异,但开机退到命令行后都可按下面使用方法的第二步去做。

1. 用移动硬盘启动,前两次对话框回车就行(第一次键盘设定,第二次是语言),第三次出现的对话空格选中exit ,tab至确定再回车, 然后选2回到command line(不管是哪种版本,都可先根据提示退到命令行然后再按下面的方法去做,只是挂你要存放备份文件的分区时要根据你的个人情况。)

2. 在命令行下:
代码:
sudo su
mount -t auto /dev/sda2 /home/partimag

这一步很重要, /dev/sda2 是我的移动硬盘的一个fat32分区,你在操作时根据自身情况来做,一般为/dev/hd?? 或/dev/sd??,它是指定用来存放备份文件的位置。20070323版中有ntfs-3g,不知为什么,在我这里不太正常。不能在图形界面上来选择挂分区,使得这个版本操作上麻烦点,希望新版可以解决。
挂好后再
代码:
ocs-sr -x

接下来可照提示去做就可完成备份工作。
还原操作与备份操作相同,也要手动挂硬盘,有可能新版这个问题解决了吧。
lisir 写道:
只是在恢复映像时,如果是一块硬盘需要在进阶设置中选择-k选项。

其它应用: 可以在clonezilla的基础上进行一些高阶应用,比如一键备份还原分区或整个硬盘等等。如果你会改cramfs ,其实实现起来非常简单

2.3。下面介绍两个gui工具,还是比较实用:
2.3.1 sbackup
代码:
sudo apt-get install sbackup

使用方法:
1. 备份
系统---系统管理----simple backup config。
不清楚就用软件默认的方式,再点backup now就开始备份了。
高阶用户也可以设定备份计划(每周,每 天等等 ),并且这种备份方式是增量备份方式。

2. 还原
系统------系统管理-----simple backup restore
再点restore后根据提示即可。
通过安装sbackup,再配合与sbackup对应的还原软件, 可以超过windwos系统还原的效果,但不能把ubuntu折腾捣鼓得过度:要能进到桌面,因为这个sbackup是个图形界面的软件
如果不能进桌面,一般
代码:
sudo dpkg-reconfigure xserver-xorg

即可

2.3.2 gnome-reset
我们也会经常会修改nautilus 和面板等 相关的配制,对如面板,nautilus的配制进行备份可以安装:
代码:
sudo apt-get install gnome-reset

安装好后,点系统------>首选项-------->备份首选项,备份好后,如果有一天想恢复成原样,则点系统------>首选项-------->恢复首选项。
这个备份工具备份内容少些,但速度快,也值得使用。

安全相关:

1 慎重安装来源不明的deb包或其它形式的二进制软件(安装软件尽可能用官方源或口碑不错的镜像源),安装镜像站的软件时,提示数字签名没有通过认证的软件也要慎重安装
2 上网时,准确的说是电脑接上网线时,不用root账号登陆桌面上网。
3 必要时对ubuntu进行安全相关的系统升级
4 如果还不放心,可以关闭所有对外开放端口的相关服务

做到以上几点基本无事,如果这样都不幸中招,建议去买张彩票。

取自:http://forum.ubuntu.org.cn/viewtopic.php?t=58659

开源邮件服务解决方案──iRedMail

2008-11-27 Toy Posted in Apps, ServerRSS

[作者/Zhang Huangbin]

iRedMail,中文名为”艾瑞得邮件”,由 rhms 项目更名而来。是针对 Red Hat(R) Enterprise Linux 和 CentOS 设计的邮件服务器解决方案,是在操作系统安装好后使用的一套 shell 脚本,用于快速部署一套功能完善的邮件服务器解决方案。

最新发布的 iRedMail 0.3.2-beta1 主要是基于 0.3.1 做了一些 bug 修正,完善已有组件的功能,并更新了少量软件包。

主要的改进有:

* Roundcube WebMail 现在已经搭配基于 LDAP 的方案,但用户自行修改密码和设置转发的功能暂时无法使用。设置假期自动回复的功能仍可正常使用。并且自动使用 OpenLDAP 做为全局地址簿。
* 从基于 LDAP 的方案中移除 postgrey,统一使用 Policyd v1 提供灰名单(greylist)服务。
注意:以上两个更改使得 MySQL 成为基于 LDAP 的方案中的一个必不可少的组件。
* 在 Horde WebMail 里,用户可以自定义邮件过滤规则,如果使用 OpenLDAP 存储邮件账号,则会默认使用 OpenLDAP 作为全局地址簿。
* 改进对已有 AMP (Apache, MySQL, PHP) 环境的支持。
* 默认为 MySQL 启用 SSL 支持。
* 默认使用 unix socket 方式连接 MySQL 数据库,性能更好一些。
* 首次引入 php-eaccelerator — PHP 加速器。
* 首次引入 Awstats-6.8 作为 web 和 mail 日志分析工具。
* 增加补丁用于修正 PostfixAdmin 登录页面的安全隐患。参考链接:https://sourceforge.net/mailarchive/forum.php?thread_name=49057E07.30…
* 在 logrotate 中默认使用 bzip2 对日志文件进行压缩,以得到更大的压缩比,为您节省一些磁盘空间。
* 修正 ExtMail 默认附件大小。感谢 tongds@gmail 的反馈。
* 在 Dovecot 中集成对磁盘容量告警、删除过期邮件的支持。但默认禁用。
注:用于邮箱容量告警的脚本需要自己编写,也可以从 iredmailsupport@ 邮件列表的文件下载区获得模板。
* 增强 mailgraph,现在可以正确统计 greylist 信息了。
* 软件包更新:
- ClamAV => 0.94.1。感谢 chenwei1973@gmail 的提醒。
- php-rrdtool, rrdtool => 1.2.28
- phpMyAdmin => 2.11.9.3
* 移除了几个工具脚本:
- tools/backup_mysql_db.sh:MySQL 数据库备份脚本
- tools/convert_winmail_mailbox.sh:迁移 WinMail 用户邮箱的脚本
- tools/create_mail_user_ldap.sh:批量创建 LDAP 用户的脚本
- tools/create_mail_user_mysql.sh:批量创建 MySQL 用户的脚本
- tools/get_helo_count.sh:统计 HELO 标识的脚本
- tools/migrate_extmail_mailbox.sh:迁移 ExtMail 用户的脚本
- tools/sysreport.sh:获取系统报告的脚本

项目主页:http://iredmail.googlecode.com
下载地址:http://code.google.com/p/iredmail/downloads/list

dspam 安装学习笔记

刚接触dspam一个多星期,把安装和学习的过程记录下来。不对的地方请多指教。

本文最初发表于 http://hi.baidu.com/delphiss/blog/item/24da4611395c33fac3ce79c3.html
转载请注明出处
作者:wdy

一、 安装

下载 dspam-3.8.0.tar.gz
#./configure \
--with-dspam-home=/var/dspam \
--with-dspam-home-owner=vmail \
--with-dspam-home-group=postdrop \
--with-dspam-mode=2510 \
--with-dspam-owner=vmail \
--with-dspam-group=postfix \
--with-delivery-agent=/usr/sbin/sendmail \
--with-storage-driver=mysql_drv \
--with-mysql-includes=/usr/include/mysql \
--with-mysql-libraries=/usr/lib/mysql \
--enable-preferences-extension \
--enable-virtual-users \
--enable-daemon \
--enable-debug \
--enable-syslog \
--enable-clamav \
--with-logdir=/var/log/dspam

#make
#make install
--with-storage-driver: 存储垃圾邮件识别数据用的存储器类型,这里用了mysql,其他类型请查询安装文档。
--with-dspam-home-owner 和 --with-dspam-owner 直接用了maildrop投递邮件的用户vmail,也可以单独建一个用户。
--enable-virtual-users 启用虚拟user,与unix系统用户分离。
--with-dspam-home:存储user和一些配置信息的路径。

创建mysql的库和表。

# cd src/tools.mysql_drv
# mysql -u root -p -e "create database dspam"
# mysql -u root -p -e "grant all on dspam.* to dspam@localhost identified by 'passwd123456'"

给 mysql_objects-4.1.sql 和 virtual_users.sql 增加一行内容到最上面:
use dspam;

# mysql -u dspam -p < mysql_objects-4.1.sql
# mysql -u dspam -p < virtual_users.sql

二、配置

安装后dspam的配置文件为 /usr/local/etc/dspam.conf,修改之

TrustedDeliveryAgent    /usr/sbin/sendmail
Trust root
Trust vmail
Trust postfix

# spamAction 表示识别为垃圾邮件后的处理,quarantine:扔到隔离区,tag:给邮件Subject增加标记,deliver:直接投递
# quarantine 需要设置 QuarantineAgent
Preference "spamAction=tag"
# spamSubject tag操作的时候给邮件Subject前面增加的字符
Preference "spamSubject=SPAM"
#signatureLocation: dspam给每个识别后的邮件编个号码,将来可以用作重新训练
#'message': 把signature加在邮件正文后面,'headers':把signature加在邮件头里
Preference "signatureLocation=headers" # 'message' or 'headers'
Preference "showFactors=on"

# mysql的设置
MySQLServer             /var/lib/mysql/mysql.sock
MySQLUser               dspam
MySQLPass               passwd123456
MySQLDb                 dspam
MySQLCompress           true

启动 dspam 后台进程:
#/usr/local/bin/dspam --daemon &

三、原理

先说明一一下dspam的基本原理和一个非常重要的概念:user。

dspam刚安装完成的时候,还不能识别垃圾邮件,因为没训练它。对它的训练,就是喂给他一些邮件,并注明是垃圾邮件还是不是垃圾邮件。dspam把垃圾或非垃圾邮件的特征存储下来,以备后面识别使用。

当dspam开始上岗工作的时候,它从标准输入里读取邮件内容,根据之前识别的数据和一些算法来确定邮件是否是spam,然后根据配置文件进行下一步的操作(给邮件打标记或扔到隔离区等)。

现在问题来了,如果一个用户总是把某些邮件训练为垃圾邮件,而另外一些用户不认为是垃圾邮件,就会造成识别混乱。所以dspam在训练或识别的时 候,都需要加一个参数 user ,通过 不同的 user 参数,把不用的用户的特征数据分开。设置 --enable-virtual-users后, user 参数只是一个字符符号,可以任意来取,不和系统账号或邮件账号必然对应。

下面的问题:怎么设定user?

基本的就两种方式:
1. 每个邮箱账号对应一个训练和识别user,user的名字可以设置成邮箱账号(user@domain.com),每个用户自己训练dspam识别垃圾邮件。
2. 系统使用一个全局固定的user,由管理员来训练识别垃圾邮件,这个全局user来为所有的邮箱账号服务。

上面的方案各有利弊。
方案1优点是用户自己训练邮件,不会造成有异议识别,缺点就是每个用户得自己亲自来训练。如果用户账号数目很多,n多的user管理也是个麻烦事。
方案2的优点是用户不必自己训练了,由管理员代劳,但可能会造成误识别。比如管理员认为某邮件是垃圾邮件,而一些用户则认为不是。

如果确定使用方案1,可以加上参数 --enable-domain-scale,这样user的数据可以存储为 $HOME/data/domain.com/user,否则就是 $HOME/data/user。

本文后面用是方案2。

四、训练识别

比如我们手头有个垃圾邮件的样本: spam01.eml,可以这样训练它

cat spam01.eml | /usr/local/bin/dspam --mode=teft --source=corpus --class=spam --feature=noise --user mydspam

--class=spam 表示训练识别垃圾邮件,训练识别非垃圾邮件则用参数 --class=innocent
--source=corpus 与 --source=error 对应的设置
--user mydspam 训练的user,dspam会自动创建。

dspam提供了一个批量训练邮件的命令:

dspam_train [username] [spam_dir] [nonspam_dir]

username 是训练用的user,spam_dir 和 nonspam_dir 是垃圾邮件和非垃圾邮件存储的目录。目录下每个邮件一个文件。

五、postfix的配置

修改master.cf 加上:

dspam   unix    -       n       n       -       10      pipe
flags=Rhqu user=vmail argv=/usr/local/bin/dspam --deliver=innocent --user mydspam -i -f $sender -- $recipient

dspam就是用来识别处理垃圾邮件的transport,
--user mydspam 是识别邮件的user。如果采用方案1,那么有可能就是 --user $user 或 --user $recipient。
--deliver=innocent 表示对非垃圾邮件进行投递。
-f $sender -- $recipient 告诉dspam发信人和收信人地址。

交给dspam的邮件,dspam先根据 user 参数取出之前训练产生的特征数据进行识别,识别后会调用 /usr/sbin/sendmail 再送给postfix,postfix则会交给maildrop等mda将邮件投入邮箱。

main.cf 需要增加:
dspam_destination_recipient_limit = 1

下面一个问题:在哪个环节让postfix来识别处理垃圾邮件?

postfix灵活的结构可以设置在n个地方进行垃圾邮件的过滤,比如 给smtpd 增加参数:-o content_filter=dspam: 等等,这里用下面的一种方式。

修改 main.cf:
smtpd_client_restrictions =
permit_sasl_authenticated,
permit_mynetworks,
check_client_access pcre:/etc/postfix/dspam_filter_access

check_client_access 将根据smtp客户端host和ip进行过滤判别。
permit_sasl_authenticated permit_mynetworks 避免了对SMPT用户认证通过的和mynetworks的客户端的垃圾邮件识别。

# vi /etc/postfix/dspam_filter_access
/./     FILTER dspam:dspam

/./ 是个正则表达式,表示匹配所有主机和ip。

通过maillog可以看到dspam的工作情况。
dspam会给经手的邮件头部加上自己的信息。
X-DSPAM-Result: Spam 表示此封邮件为 spam
X-DSPAM-Result: Innocent 表示此封邮件为 nonspam

六、配置DSPAM Web Control

DSPAM Web Control 的功能是让dspam的user设置个人参数,查看识别邮件记录,还可以重新训练识别错误的邮件。
Web Control的用户通过Apache的HTTP Auth来登录,所以要把dspam user加到AuthUserFile里。
(前面提到的方案1在这里会有很大的问题)

#mkdir /var/www/cgi-bin/dspam
#cp -R webui/cgi-bin/* /var/www/cgi-bin/dspam/
#cp webui/htdocs/base.css /var/www/htdocs/
#cp webui/htdocs/dspam-logo-small.gif /var/www/htdocs/
#chown -R vmail.vmail /var/www/cgi-bin/dspam/

base.css 和 dspam-logo-small.gif 拷贝到apache的 DocumentRoot

创建apache http auth 用户
#/usr/local/apache2/bin/htpasswd -c /usr/local/apache2/dspam.pass mydspam

设置管理员用户名:
echo “mydspam” > /var/www/cgi-bin/dspam/admins
修改 Apache httpd.conf
<Directory "/var/www/cgi-bin/dspam">
Options ExecCGI
Options -Indexes
DirectoryIndex dspam.cgi
AllowOverride All
Order deny,allow
Deny from all
AuthType Basic
AuthName "DSPAM Control Center"
AuthUserFile /usr/local/apache2/dspam.pass
Require valid-user
Satisfy Any
</Directory>

ScriptAlias /dspam /var/www/cgi-bin/dspam

Web Control 生成图形需要用到Perl的几个图形模块: GD::Graph::bars, GD, GD::Graph, GD::Text::Align,请安装。

修改 /var/www/cgi-bin/dspam/configure.pl

$CONFIG{'DSPAM_HOME'}   = "/var/dspam";
$CONFIG{'DSPAM_BIN'}    = "/usr/local/bin";
$CONFIG{'LOCAL_DOMAIN'} = "yourdomain.com";

#下面两个根据编译参数修改
#$CONFIG{'LARGE_SCALE'} = 0;
#$CONFIG{'DOMAIN_SCALE'} = 0;
打开网页 http://host/dspam/dspam.cgi , 输入用户名口令登录。