251 views
首页 > 工作 > openSUSE下利用wget对源进行备份

openSUSE下利用wget对源进行备份

Create image的时候需要从源download package,但是用公司代理速度很慢,而且mic-image-creator还有些毛病,有时候package已经在cache里了,还是要重新retrieving一遍,遇到比较大的时候就很郁闷。就想干脆把源mirror下来好了。对openSUSE本来并不怎么熟的,平时都玩Ubuntu和Fedora,而且Ubuntu和Fedora的机子配置都高,8核i7,但是无奈openSUSE上的空间比较大,两块硬盘加起来600多G,只分别给openSUSE11.3和Fedora12划了50G,剩下的不用就浪费掉了,所以就在openSUSE的机子上用100G专门做镜像了。

首先要把用作备份的硬盘分区在开机的时候就能挂载上去, mkdir /mnt/mirror,然后ls -all /dev/disk/by-uuid

找到要做备份的硬盘分区的UUID,然后编辑 vi /etc/fstab,在最后面添加上UUID=用作镜像的硬盘分区UUID /mnt/mirror ext3 defaults 0 0

注意是defaults,不要少了s,我一开始少加了,结果就没挂载上去。而且有意思的一点是,Ubuntu和Fedora下面都是根据UUID识别分区的,当然也可以直接用/dev/sda?之类的来识别,openSUSE用的却是id来区分,这点可以在ls -all /dev/disk/by- 的时候按两下tab键看看,有by-id,by-pach,by-uuid。

添加完毕,这块硬盘就会开机的时候自动挂载了。

然后用wget -q -b -m -c -np -P /mnt/mirror –random-wait -k http://repo.meego.com/MeeGo/builds/trunk/1.1.80.11.20101221.1/

这里-q是不显示输出,-b是后天运行,-m是mirror的意思,等价于-r -N -l inf -nr,即-r递归,-N检查时间戳,比本地新才下载,-l inf递归层次无限,-nr不移走.listing文件,-c 断点续传,-np,不递归到上层目录,-P 下载目录,-random-wait 两次下载之间等待random的时间, -k 转换非相对链接为相对链接。

等下载完之后就行了。这样下载到mirro目录里,层次是/mnt/mirror/reop.meego.com/MeeGo/builds/trunk/1.1.80.11.20101221.1/下载下来的各级子目录,要想去掉repo.meego.com,可以加-nH的选项,就不建立主机名目录了。

接着安装Apache服务器,zypper install apache,openSUSE下服务默认是不会开启的 chkconfig apache2 –level 345 on 参数的具体意思看这篇,或者也可以在图形桌面环境下的yast2里开启服务。

另外openSUSE默认防火墙是开启的,而且防火墙默认关闭所有端口,所以要自己手动开放http server的端口,或者之间把防火墙关掉也行。

接着配置Apache。

发现openSUSE下Apache的配置也有点意思,Ubuntu下面是httpd.conf默认是空的,通过apach2.conf做个全局的配置,里面可以直接设置,也可以includ别的配置文件,读取sites-enable(或者 sites-available,都一样,两个是个链接)目录下的default配置,其他的都在mode-available目录下面,mode-enable下面是available目录下面已经被开启包含的配置。而openSUSE下面httpd.conf是全局配置,直接配置文件是default-server.conf,其他的都写成模块,而且我感觉优先级是模块配置文件>default-server.conf>httpd.conf,因为开启index功能的时候现在default-sever里写了,貌似会被mod_autoindex-defaults.conf覆盖掉。

编辑 vi /etc/apache2/default-server.conf 修改DocumentRoot 为/mnt/mirror/reop.meego.com,这样就会从MeeGo这个目录开始index,也就是说打开网页,是MeeGo这个目录,一层一层往下。

然后编辑下面

<Directory “/mnt/mirror/repo.meego.com>

Options Indexes FollowSymLinks MultiViews +ExecCGI

AllowOverride Limit AuthConfig

DirectoryIndex index.php index.html

Order allow,deny

allow from all

AddHandler cgi-script .cgi

AddHandler php5-script .php

</Directory>

这里我搞清楚了一件事情,就是比如要是把Directory 设置为 /mnt/mirror/repo.meego.com/MeeGo,打开就会出现 Access forbidden!的错误。这是因为DocumentRoot为/mnt/mirror/reop.meego.com,查找的时候会从这个目录开始,Directory是设置每个目录的权限, 要是只设置了DocumentRoot目录的子目录的权限,那肯定是打不开的。所以Directory那里至少要和DocumentRoot为同级目录,甚至设置成/都是可以的。

接着打开index功能,编辑 /etc/apache2/mod_autoindex-defaults.conf,IndexOptions FancyIndexing VersionSort NameWidth=* ScanHTMLTitles HTMLTable

用wget下载镜像的时候下载了很多页面文件,index.html和index.html?XXXX这些,可以在IndexIgnore添加*.htm*\?*,或者直接把页面文件删了也可以,

find ./ -name “index*” -exec rm -f {} \;

另外,想要隐藏自己服务器的操作系统和web服务器用的软件,说是可以避免有人攻击。可以修改ServerSignature,ServerTokens,grep -r ServerTokens *发现在sysconfig.d/global.conf文件里

ServerSignature off  ServerTokens Prod 但是改完重启发现还是会变回来,仔细看了下这个文件原来是由/etc/sysconfig/apache2生成的,需要把/etc/sysconfig/apache2改了,这样就会每次自动读取了。

但是我发现这样有个bug,打开网址的时候如果指定一个不存在的地址,就会显示Object not found! 404的错误,这个页面下面就写了apache服务器的…

所以要想真正隐藏自己用的软件和服务器系统类型,还是要指定一些其他的修改。

这样就完成了源的本地镜像。

create image的时候执行

find ./ -name “.*ks” -exec sed -i ‘s/repo.meego.com/127.0.0.1/g’ {} \;

把URL地址都换成本地的,这样就行了

anyShare分享到:
分类: 工作 标签: , , ,
  1. 本文目前尚无任何评论.
  1. 本文目前尚无任何 trackbacks 和 pingbacks.