存档

2012年6月 的存档

linux 的网卡设置

2012年6月30日 没有评论

linux下我们经常需要配置基础环境–网卡。也是服务器及网络的基本元素。让我们来更好的认识下linux下网卡的配置。
我们拿centos系统来做为示例。其他linux系统大同小异。

配置文件一般在系统认到网卡的情况下,路径为:

/etc/sysconfig/network-scripts/ifcfg-eth0

1
2
3
4
5
6
7
8
9
10
TYPE=Ethernet       #网卡类型
DEVICE=eth0         #网卡接口名称
ONBOOT=yes          #系统启动时是否自动加载
BOOTPROTO=static    #启用地址协议 --static:静态协议 --bootp协议 --dhcp协议
IPADDR=192.168.1.11      #网卡IP地址
NETMASK=255.255.255.0    #网卡网络地址
GATEWAY=192.168.1.1      #网卡网关地址
DNS1=10.203.104.41       #网卡DNS地址
HWADDR=00:0C:29:13:5D:74 #网卡设备MAC地址
BROADCAST=192.168.1.255  #网卡广播地址

在一张网卡上绑定多个IP地址
在Linux下,可以使用ifconfig方便地绑定多个IP地址到一张网卡。例如eth0接口的原有IP地址为192.168.0.254,我们可以执行这条命令:

1
2
3
4
5
ifconfig eth1 up                         //启用网卡
ifconfig eth0:0 202.8.162.242 up         //绑定IP
ifconfig eth0:0 202.8.162.242 down       //绑定删除IP
ifconfig eth1 192.168.0.3 netmask 255.255.255.0
ifconfig eth0 add 192.168.0.253 netmask 255.255.255.0

后面的netmask可以省略,系统会根据IP地址添加默认的子网掩码。
这种方法的缺点是始终只能多绑定一个IP地址。
或者是执行以下命令:

1
2
3
ifconfig eth0:0 192.168.0.253
ifconfig eth0:1 192.168.0.252
……

就可以在一张网卡上绑定多个IP。
如果希望系统启动时自动绑定,那么可以把这些命令写到/etc/rc.d/rc.local脚本中去,也可以在/etc/sysconfig/network-scripts目录中,将ifcfg-eth0复制为ifcfg-eth0:0、ifcfg-eth0:1等,并做以下修改:

1
2
DEVICE=eth0:0[1]
IPADDR=192.168.0.253[252]

其它的保持不变。当系统启动eth0时,就会同时绑定这些IP地址。

如何修改网卡MAC地址?

首先必须关闭网卡设备,否则会报告系统忙,无法更改。
命令是:

1
/sbin/ifconfig eth0 down

修改 MAC 地址,这一步较 Windows 中的修改要简单。
命令是:

1
/sbin/ifconfig eth0 hw ether 00:AA:BB:CC:DD:EE

重新启用网卡

1
/sbin/ifconfig eht0 up

网卡的 MAC 地址更改就完成了。

AR8131 网卡驱动 for linux 安装(转)

2012年6月29日 没有评论

因客户需要,在公司库存的服务器中安装centos,库存所有机器都是华硕P5G41T-MLX主板,集成Atheros AR8131网卡,这种网卡虽然提供了Linux驱动安装包,但是居然是编译安装的,过程也很坑,一度以为无法成功,加班加点在公司找方法,还好最终解决了,看来今晚就睡在这了。。

1.安装系统,我安装的是centos5.6,定制软件时选择立即定制,把开发-开发工具勾选上。

2.确认是否能够识别到网卡,运行lspci -v,最后显示的应该是Atheros 网卡信息。

3.进入系统安装盘,搜索kernel,安装kernel-devel-2.6.18-238-el5.i686.rpm。

4.在其他机器中,打开http://www.asus.com.cn/Motherboards/Intel_Socket_775/P5G41TM_LX/#download,Linux系统,其他驱动程序,下载Linux driver,解压并在lan中找到srv文件夹,将其拷贝到U盘中,接入Linux,如果是命令行就手动挂载,如果有桌面就自动挂载。在srv目录中执行make,kcompat.h的1561行出现重定义错误,用编辑器打开kcompat.h,把1561-1565行删除或者注释掉,然后再执行make,再执行make install。

5.
cd /lib/modules/KERNEL版本/kernel/drivers/net/atl1e
insmod atl1e.ko

6.此时执行ifconfig -a应该就能看到eth0了,不过暂时还不能激活,需要先配置ip和网关,下面的IP地址、网关、子网掩码都可不设,dhcp默认获取。

nano /etc/sysconfig/network-scripts/ifcfg-eth0
———————–
#网卡名称
DEVICE=eth0
#ONBOOT关键字决定开机是否自动开启该网卡
ONBOOT=yes
#如若不使用网卡MAC地址使用MACADDR关键字
MACADDR=00:50:1d:24:52:67
#子网掩码参数
NETMASK=255.255.255.0
#ip地址参数
IPADDR=192.168.1.194
#网络类型参数
TYPE=Ethernet
#网关参数
GATEWAY=192.168.1.254
———————–
然后配置DNS,激活eth0,再重启network

nano /etc/resolv.conf
———————–
nameserver 8.8.8.8
———————–
ifup eth0
service network restart OK,完工。

PS:后来遇到一个问题,执行yum update后黑屏无法进入桌面,预防办法是nano /etc/yum.conf,在[main]的最后添加exclude=kernel*

还有一个问题Device eth0 has different MAC address than expected,把/etc/sysconfig/network-scripts/ifcfg-eth0,把HWADDR=…. 这行删掉就行了.

如果激活eth0出现错误/sbin/ifup: configuration for eth0 not found.在/etc/sysconfig/networking/devices目录下存在一个ifcfg-eth0文件,则只要把这个文件拷到/etc/sysconfig/network-scripts/这个文件夹下就行了,再点激活eth0网卡时就ok了!

分类: Linux 标签: , ,

iptables:restorecon: command not found无法保存策略解决

2012年6月29日 没有评论

为客户安装了linux运行一些iptables设置时。运行保存策略时不生效。

1
2
3
service iptables save
 
iptables: Saving firewall rules to /etc/sysconfig/iptables: /etc/init.d/iptables: line 268: restorecon: command not found

解决办法:

1
yum -y install policycoreutils

然后运行命令保存iptables策略:

1
2
3
service iptables save
 
iptables: Saving firewall rules to /etc/sysconfig/iptables: [ OK ]

问题解决!

总结:由于有些简化linux系统进行了优化所以有些包没有自定义安装了。所以一般这类问题都是少rpm支持包。一般增加一下,就可以解决问题!

Nginx防盗链节省你的宽带

2012年6月25日 没有评论

根据网友文章,自己实践,介绍3种Nginx防盗链的方法,节省你的宽带
一:一般的防盗链如下:
location ~* \.(gif|jpg|png|swf|flv)$ {
valid_referers none blocked www.ingnix.com ;
if ($invalid_referer) {
rewrite ^/ http://www.ingnix.com/retrun.html;
#return 404;
}
}
第一行:gif|jpg|png|swf|flv
表示对gif、jpg、png、swf、flv后缀的文件实行防盗链
第二行: 表示对www.ingnix.com这2个来路进行判断
if{}里面内容的意思是,如果来路不是指定来路就跳转到http://www.ingnix.com/retrun.html页面,当然直接返回404也是可以的。

ps: 以上有人说第二行的 none  要去掉。我本人试过none去掉也可以正常。具体还要大家多测试一下。
二:针对图片目录防止盗链
location /images/ {
alias /data/images/;
valid_referers none blocked server_names *.xok.la xok.la ;
if ($invalid_referer) {return 403;}
}
三:使用第三方模块ngx_http_accesskey_module实现Nginx防盗链
实现方法如下:

实现方法如下:
1. 下载NginxHttpAccessKeyModule模块文件:Nginx-accesskey-2.0.3.tar.gz
2. 解压此文件后,找到nginx-accesskey-2.0.3下的config文件。编辑此文件:替换其中的”$HTTP_ACCESSKEY_MODULE”为”ngx_http_accesskey_module”;
3. 用一下参数重新编译nginx:
./configure --add-module=path/to/nginx-accesskey
4. 修改nginx的conf文件,添加以下几行:
location /download {
accesskey             on;
accesskey_hashmethod  md5;
accesskey_arg         "key";
accesskey_signature   "mypass$remote_addr";
}

其中:
accesskey为模块开关;
accesskey_hashmethod为加密方式MD5或者SHA-1;
accesskey_arg为url中的关键字参数;
accesskey_signature为加密值,此处为mypass和访问IP构成的字符串。

访问测试脚本download.php:
<?
$ipkey= md5("mypass".$_SERVER['REMOTE_ADDR']);
$output_add_key="<a href=http://www.inginx.com/download/G3200507120520LM.rar?key=".$ipkey.">download_add_key</a><br />";
$output_org_url="<a href=http://www.inginx.com/download/G3200507120520LM.rar>download_org_path</a><br />";
echo $output_add_key;
echo $output_org_url;
?>

访问第一个download_add_key链接可以正常下载,第二个链接download_org_path会返回403 Forbidden错误。

参考:
NginxHttpAccessKeyModule

远程桌面超出最大连接数解决办法

2012年6月22日 没有评论

在日常管理和维护windows服务器时,使用远程桌面管理服务器经常会遇到 超出最大允许连接数 的问题,这是因为windows服务器默认的远程连接数为2的原因。如果遇到这样的情况如何解决呢?其他很容易。用一条dos命令就可以。不过我为大家准备了个工作可以很方便的“强行”登陆破除这个限制。

下载我们为大家准备好的软件,下载地址:http://www.dnsff.com/download/3389.rar

解包后可以得到mstsc.exe、mstscax.dll和RMDSTC.exe 三个文件。

其中RMDSTC.exe是我们要使用到的“强行”登陆工具。可以直接写ip连接。输入用户密码就可以登陆了。

通过winscp管理linux文件

2012年6月19日 没有评论

WinSCP是一个支持SSH(Secure SHell)的SCP(Secure CoPy)文件传输软件。只要文件主机支持SSH协定,你就可以安心的下载、上传文件。他的操作界面是参考NC(Norton Commander)的双视窗排列方式,使用起来不会有太大的困难。在WinSCP中,一般的文件操作都没有问题,如:复制、移动、更名文件或文件夹等。

我们可以直接通过winscp对linux下的文件进行操作和管理。使用操作方式和ftp相似。

SQL Server 2005数据库镜像

2012年6月19日 没有评论

自从SQL Server 2000以来,你已经能够通过使用复制来创建一个备用的服务器、传输日志,以及备份和重新存储了——但是现在微软又引入了一个内建的工具,它可以实现自动的错误恢复。数据库镜像是SQL Server 2005的一个新特性,它允许你将一个SQL Server中的数据库内容镜像到另一个SQL Server上。它还让你可以在发生错误的时候,通过镜像数据库来进行错误恢复。

Edgewood Solutions 的Greg Robidoux 回答了我们一些SQL Server 2005中有关数据库镜像的常见问题,同时还解释了为什么你现在就应该开始测试这个内建的功能来看看它最终是否会给你的环境带来好处。

什么是数据库镜像?

Robidoux:数据库镜像是将数据库事务处理从一个SQL Server数据库移动到不同SQL Server环境中的另一个SQL Server数据库中。镜像的拷贝是一个备用的拷贝,不能直接访问;它只用在错误恢复的情况下。

因为是在SQL Server 2005中新引入的特性,这个功能只能用在,这个版本的软件中。在某种程度上说,它是复制和日志传输的混合体:你所有的事物都在事物级别(复制)上移动(日志传输)到你的数据库的一个镜像拷贝上,同时减少了你在实现日志传输或者复制的时候可能会面临的问题。

复制包括大量的移动部分,并且如果你的数据库计划经常改变的话,要保证你的复制运行得流畅也是困难重重。对于日志传输,为了保证同步,同样需要实现很多的处理,例如创建备份、拷贝备份,以及备份重存。如果有一个进程崩溃了,整个处理过程就崩溃了。

数据库镜像的工作方式是什么?

Robidoux :要进行数据库镜像所需的最小需求包括了两个不同的SQL Server运行环境。主服务器被称为“基本的”,第二个服务器被称作“镜像的”。基本数据库就是你实际用着的数据库,镜像数据库就是你的数据库的备用拷贝。当事务写入你的基本服务器的时候,他们也同样被传送到并写入你的镜像数据库中。

除了基本和镜像之外,你还可以引入另一个可选的组件,名为“证人”。证人数据库是第三个SQL Server 2005运行实例,它是在判断什么时候进行错误恢复的时候,用于基本和镜像之间内部交流。只有当你想实现自动错误恢复的时候用到这个选项。它实现了2比1投票的能力,当我的一个组件不可达,并因此需要进行错误恢复的时候。证人服务器只有在你想实现自动错误恢复的时候才需要用到。

实现的方式是什么?

Robidoux :数据库镜像提供了三种实现的方式。根据你想要用什么方式来进行错误恢复处理来进行选择。

高可用性:这个操作模式选项允许你在两台服务器上同步事务写入,并支持自动错误恢复。要使用这个选项,你必须还要使用一个证人服务器。

高保护:这个选项可以让你在两台服务器上同步事物写入,但是错误恢复是手工的。因为自动的错误恢复不是这个选项的一部分,所以也不会用到证人服务器。

高性能:这个选项不关心两台服务器上的写入是否是同步的,因此在性能上有所提高。当使用这个选项的时候,你只能假设镜像服务器上的所有事情都是成功完成。这个选项只允许手工的错误恢复,因此不会用到证人服务器。

时刻记住将你的数据自动恢复到第二个拷贝才是数据库镜像的真正好处。因此,大多数的实现可能都是使用的高可达性方式。其他的选项仍然提供了内建的错误恢复过程,但是前提是你在发生错误的时候对进行自动的错误恢复怀有极大的兴趣。

数据库镜像可以工作在哪几个版本上?

Robidoux :数据库镜像只能在标准版、开发版和企业版的SQL Server 2005中找到。基本服务器和镜像服务器的SQL Server运行实例都需要是这几个版本。证人服务器可以运行在任何版本的SQL Server上。此外,还有其他的一些特性是SQL Server的开发版和企业版上特有的,但是标准版具有最基本的功能。

总结

现如今,SQL Server 2005的数据库镜像已经关掉了,但是所有的功能仍然存在。数据库镜像可以通过使用检索标志来打开——但是微软现在并不支持这个功能了,所以不要在你的产品环境中运行它。数据库镜像将会在本年年末完全实现并被支持。

要打开这个特性并开始你的测试,你可以看看以前的专家知识解答。微软正在寻找额外的反馈,所以你可以看看它是否可以作为你的SQL Server环境的候选。

——–目前有一个SQL服务器,业务多了常出现拥堵。
看到SQL2005支持镜像服务。
但是我不是为了故障转移,我希望对数据库的更改操作去访问主服务器。让所有的查询操作直接访问镜像服务器。 不知道是否可以实现?SQL允许直接查询镜像服务不?
访问程序可以作修改的。 不一定非要用SQL自己的自动转移。 可以再程序里强制访问镜像服务器或者主服务器。

如何有效防止phpddos发包

2012年6月18日 没有评论

最近一段时间以来经常发现vps的客户出现发大量udp攻击包,照成网络带宽堵塞。协助客户查了一下原因是有的网站出现的代码漏洞黑客上传了php的udp发包代码。

如何有效的对此类事件的防护及处理呢?

我们可以看到php的upd代码发包过程是由于利用了php的fsockopen函数漏洞进行的。

那我们可以这样限制一下php的代码函数:

下面是两种常用的禁用fsockopen的方法。
1、修改php.ini,将 disable_functions = 后加入 fsockopen
2、修改php.ini,将 allow_url_fopen = On 改为 allow_url_fopen = Off

一般可以写成这样:

disable_functions = popen,exec,passthru,system,fsockopen,pfsockopen

然后我们在对机器对外发udp包进行限制。windows 我已经为大家写好了规则。大家可以直接通过服务器的本地安全策略进行导入。可以有效的限制udp发包。

下载: phpddos.ipsec

Linux系统下可使用iptables防火墙进行限制udp发包,如下:

1
2
3
4
5
6
7
8
9
iptables -F
 
iptables -A OUTPUT -p udp -j DROP
 
iptables -I OUTPUT -p udp --dport 53 -d 168.95.1.1 -j ACCEPT
 
service iptables save
 
service iptables restart

注:168.95.1.1 为你linux服务器的dns。如果不知道可以用以下代码查dns

1
DNSIP=`cat /etc/resolv.conf |grep nameserver |awk 'NR==1{print $2 }'`

Linux各版本的本地root密码破解方法

2012年6月18日 没有评论

Linux各版本的本地root密码破解方法

(一)RedHat/CentOS/Fedora 系统密码破解

1.在grub选项菜单按E进入编辑模式
2.编辑kernel 那行最后加上S (或者Single)
3.按B,启动到single-user mode
4.进入后执行下列命令
# mount -t proc proc /proc
# mount -o remount,rw /
#passwd
#sync
#reboot

(二)Debian linux 系统密码破解

1.在grub选项菜单’Debian GNU/Linux,…(recovery mode)’,按e进入编辑模式
2.编辑kernel那行最后面的 ro single 改成 rw single init=/bin/bash,按b执行重启
3.进入后执行下列命令
root@(none)#mount -a
root@(none)#passwd root
root@(none)#reboot

(三)Freebsd 系统密码破解

1.开机进入引导菜单
2.选择每项(按4)进入单用户模式
3.进入之后输入一列命令
root@#mount -a
root@#fsck -y
root@#passwd(修改密码命令)
root@#root(要破解密码的用户名)
Enter new unix password:
root@#init 6 (重启)

(四)Solaris 系统密码破解

1.在grub选项菜中选择solaris failasfe 项
2.系统提示Do you wish to have it mounted read-write on /a ?[y,n,?] 选择y
3.就进入单用户模式
4.输入下列命令:passwd
root@#init 6 (重启)

(五)NetBsd 系统密码破解

1.开机:当出现提示符号并开始倒数五秒时, 键入以下指令:
> boot -s (进入单用户模式命令)
2.在以下的提示符号中
Enter pathname of shell or RETURN for sh:
按下 Enter。
3.键入以下指令:
# mount -a
# fsck -y
4.使用 passwd 更改 root 的密码。
5.使用 exit 指令进入多人模式。

(六)SUSE 系统密码破解

1.重新启动机器,在出现grub引导界面后,在启动linux的选项里加上init=/bin/bash,通过给内核传递init=/bin/bash参数使得OS在运行login程序之前运行bash,出现命令行。
2.稍等片刻出现(none)#:命令行。
3.这时输入mount -n / -o remount,rw 表示将根文件系统重新mount为可读写,有了读写权限后就可以通过passwd命令修改密码了。
4.这时输入passwd命令就可以重置密码了
5.修改完成后记得用mount -n / -o remount,ro将根文件系统置为原来的状态。

linux常用命令使用汇总

2012年6月18日 没有评论

linux打包压缩命令

tar命令
[root@linux ~]# tar [-cxtzjvfpPN] 文件与目录 ….
参数:
-c :建立一个压缩文件的参数指令(create 的意思);
-x :解开一个压缩文件的参数指令!
-t :查看 tarfile 里面的文件!
特别注意,在参数的下达中, c/x/t 仅能存在一个!不可同时存在!
因为不可能同时压缩与解压缩。
-z :是否同时具有 gzip 的属性?亦即是否需要用 gzip 压缩?
-j :是否同时具有 bzip2 的属性?亦即是否需要用 bzip2 压缩?
-v :压缩的过程中显示文件!这个常用,但不建议用在背景执行过程!
-f :使用档名,请留意,在 f 之后要立即接档名喔!不要再加参数!
例如使用『 tar -zcvfP tfile sfile』就是错误的写法,要写成
『 tar -zcvPf tfile sfile』才对喔!
-p :使用原文件的原来属性(属性不会依据使用者而变)
-P :可以使用绝对路径来压缩!
-N :比后面接的日期(yyyy/mm/dd)还要新的才会被打包进新建的文件中!
–exclude FILE:在压缩的过程中,不要将 FILE 打包!
范例:
范例一:将整个 /etc 目录下的文件全部打包成为 /tmp/etc.tar
[root@linux ~]# tar -cvf /tmp/etc.tar /etc <==仅打包,不压缩!
[root@linux ~]# tar -zcvf /tmp/etc.tar.gz /etc <==打包后,以 gzip 压缩
[root@linux ~]# tar -jcvf /tmp/etc.tar.bz2 /etc <==打包后,以 bzip2 压缩
# 特别注意,在参数 f 之后的文件档名是自己取的,我们习惯上都用 .tar 来作为辨识。
# 如果加 z 参数,则以 .tar.gz 或 .tgz 来代表 gzip 压缩过的 tar file ~
# 如果加 j 参数,则以 .tar.bz2 来作为附档名啊~
# 上述指令在执行的时候,会显示一个警告讯息:
# 『tar: Removing leading `/’ from member names』那是关於绝对路径的特殊设定。
范例二:查阅上述 /tmp/etc.tar.gz 文件内有哪些文件?
[root@linux ~]# tar -ztvf /tmp/etc.tar.gz
# 由於我们使用 gzip 压缩,所以要查阅该 tar file 内的文件时,
# 就得要加上 z 这个参数了!这很重要的!
范例三:将 /tmp/etc.tar.gz 文件解压缩在 /usr/local/src 底下
[root@linux ~]# cd /usr/local/src
[root@linux src]# tar -zxvf /tmp/etc.tar.gz
# 在预设的情况下,我们可以将压缩档在任何地方解开的!以这个范例来说,
# 我先将工作目录变换到 /usr/local/src 底下,并且解开 /tmp/etc.tar.gz ,
# 则解开的目录会在 /usr/local/src/etc 呢!另外,如果您进入 /usr/local/src/etc
# 则会发现,该目录下的文件属性与 /etc/ 可能会有所不同喔!
范例四:在 /tmp 底下,我只想要将 /tmp/etc.tar.gz 内的 etc/passwd 解开而已
[root@linux ~]# cd /tmp
[root@linux tmp]# tar -zxvf /tmp/etc.tar.gz etc/passwd
# 我可以透过 tar -ztvf 来查阅 tarfile 内的文件名称,如果单只要一个文件,
# 就可以透过这个方式来下达!注意到! etc.tar.gz 内的根目录 / 是被拿掉了!
范例五:将 /etc/ 内的所有文件备份下来,并且保存其权限!
[root@linux ~]# tar -zxvpf /tmp/etc.tar.gz /etc
# 这个 -p 的属性是很重要的,尤其是当您要保留原本文件的属性时!
范例六:在 /home 当中,比 2005/06/01 新的文件才备份
[root@linux ~]# tar -N ’2005/06/01′ -zcvf home.tar.gz /home
范例七:我要备份 /home, /etc ,但不要 /home/dmtsai
[root@linux ~]# tar –exclude /home/dmtsai -zcvf myfile.tar.gz /home/* /etc
范例八:将 /etc/ 打包后直接解开在 /tmp 底下,而不产生文件!
[root@linux ~]# cd /tmp
[root@linux tmp]# tar -cvf – /etc | tar -xvf -
# 这个动作有点像是 cp -r /etc /tmp 啦~依旧是有其有用途的!
# 要注意的地方在於输出档变成 – 而输入档也变成 – ,又有一个 | 存在~
# 这分别代表 standard output, standard input 与管线命令啦!
# 这部分我们会在 Bash shell 时,再次提到这个指令跟大家再解释啰!

 

gzip, zcat 命令
[root@linux ~]# gzip [-cdt#] 档名
[root@linux ~]# zcat 档名.gz
参数:
-c :将压缩的资料输出到萤幕上,可透过资料流重导向来处理;
-d :解压缩的参数;
-t :可以用来检验一个压缩档的一致性~看看文件有无错误;
-# :压缩等级,-1 最快,但是压缩比最差、-9 最慢,但是压缩比最好!预设是 -6 ~
范例:
范例一:将 /etc/man.config 複制到 /tmp ,并且以 gzip 压缩
[root@linux ~]# cd /tmp
[root@linux tmp]# cp /etc/man.config .
[root@linux tmp]# gzip man.config
# 此时 man.config 会变成 man.config.gz !
范例二:将范例一的文件内容读出来!
[root@linux tmp]# zcat man.config.gz
# 此时萤幕上会显示 man.config.gz 解压缩之后的文件内容!!
范例三:将范例一的文件解压缩
[root@linux tmp]# gzip -d man.config.gz
范例四:将范例三解开的 man.config 用最佳的压缩比压缩,并保留原本的文件
[root@linux tmp]# gzip -9 -c man.config > man.config.gz

 

bzip2, bzcat 命令
[root@linux ~]# bzip2 [-cdz] 档名
[root@linux ~]# bzcat 档名.bz2
参数:
-c :将压缩的过程产生的资料输出到萤幕上!
-d :解压缩的参数
-z :压缩的参数
-# :与 gzip 同样的,都是在计算压缩比的参数, -9 最佳, -1 最快!
范例:
范例一:将刚刚的 /tmp/man.config 以 bzip2 压缩
[root@linux tmp]# bzip2 -z man.config
# 此时 man.config 会变成 man.config.bz2 !
范例二:将范例一的文件内容读出来!
[root@linux tmp]# bzcat man.config.bz2
# 此时萤幕上会显示 man.config.bz2 解压缩之后的文件内容!!
范例三:将范例一的文件解压缩
[root@linux tmp]# bzip2 -d man.config.bz2
范例四:将范例三解开的 man.config 用最佳的压缩比压缩,并保留原本的文件
[root@linux tmp]# bzip2 -9 -c man.config > man.config.bz2

 

compress 命令
[root@linux ~]# compress [-dcr] 文件或目录
参数:
-d :用来解压缩的参数
-r :可以连同目录下的文件也同时给予压缩呢!
-c :将压缩资料输出成为 standard output (输出到萤幕)
范例:
范例一:将 /etc/man.config 複制到 /tmp ,并加以压缩
[root@linux ~]# cd /tmp
[root@linux tmp]# cp /etc/man.config .
[root@linux tmp]# compress man.config
[root@linux tmp]# ls -l
-rw-r–r– 1 root root 2605 Jul 27 11:43 man.config.Z
范例二:将刚刚的压缩档解开
[root@linux tmp]# compress -d man.config.Z
范例三:将 man.config 压缩成另外一个文件来备份
[root@linux tmp]# compress -c man.config > man.config.back.Z
[root@linux tmp]# ll man.config*
-rw-r–r– 1 root root 4506 Jul 27 11:43 man.config
-rw-r–r– 1 root root 2605 Jul 27 11:46 man.config.back.Z
# 这个 -c 的参数比较有趣!他会将压缩过程的资料输出到萤幕上,而不是写入成为
# file.Z 文件。所以,我们可以透过资料流重导向的方法将资料输出成为另一个档名。
# 关於资料流重导向,我们会在 bash shell 当中详细谈论的啦!

 

dd 命令
[root@linux ~]# dd if=”input_file” of=”outptu_file” bs=”block_size” \
count=”number”
参数:
if :就是 input file 啰~也可以是装置喔!
of :就是 output file 喔~也可以是装置;
bs :规划的一个 block 的大小,如果没有设定时,预设是 512 bytes
count:多少个 bs 的意思。
范例:
范例一:将 /etc/passwd 备份到 /tmp/passwd.back 当中
[root@linux ~]# dd if=/etc/passwd of=/tmp/passwd.back
3+1 records in
3+1 records out
[root@linux ~]# ll /etc/passwd /tmp/passwd.back
-rw-r–r– 1 root root 1746 Aug 25 14:16 /etc/passwd
-rw-r–r– 1 root root 1746 Aug 29 16:57 /tmp/passwd.back
# 仔细的看一下,我的 /etc/passwd 文件大小为 1746 bytes,因为我没有设定 bs ,
# 所以预设是 512 bytes 为一个单位,因此,上面那个 3+1 表示有 3 个完整的
# 512 bytes,以及未满 512 bytes 的另一个 block 的意思啦!
# 事实上,感觉好像是 cp 这个指令啦~
范例二:备份 /dev/hda 的 MBR
[root@linux ~]# dd if=/dev/hda of=/tmp/mbr.back bs=512 count=1
1+0 records in
1+0 records out
# 这就得好好瞭解一下啰~我们知道整颗硬盘的 MBR 为 512 bytes,
# 就是放在硬盘的第一个 sector 啦,因此,我可以利用这个方式来将
# MBR 内的所有资料都纪录下来,真的很厉害吧! ^_^
范例三:将整个 /dev/hda1 partition 备份下来。
[root@linux ~]# dd if=/dev/hda1 of=/some/path/filenaem
# 这个指令很厉害啊!将整个 partition 的内容全部备份下来~
# 后面接的 of 必须要不是在 /dev/hda1 的目录内啊~否则,怎么读也读不完~
# 这个动作是很有效用的,如果改天你必须要完整的将整个 partition 的内容填回去,
# 则可以利用 dd if=/some/file of=/dev/hda1 来将资料写入到硬盘当中。
# 如果想要整个硬盘备份的话,就类似 Norton 的 ghost 软体一般,
# 由 disk 到 disk ,嘿嘿~利用 dd 就可以啦~厉害厉害!

 

cpio 命令
[root@linux ~]# cpio -covB > [file|device] <==备份
[root@linux ~]# cpio -icduv < [file|device] <==还原
参数:
-o :将资料 copy 输出到文件或装置上
-i :将资料自文件或装置 copy 出来系统当中
-t :查看 cpio 建立的文件或装置的内容
-c :一种较新的 portable format 方式储存
-v :让储存的过程中文件名称可以在萤幕上显示
-B :让预设的 Blocks 可以增加至 5120 bytes ,预设是 512 bytes !
这样的好处是可以让大文件的储存速度加快(请参考 i-nodes 的观念)
-d :自动建立目录!由於 cpio 的内容可能不是在同一个目录内,
如此的话在反备份的过程会有问题! 这个时候加上 -d 的话,
就可以自动的将需要的目录建立起来了!
-u :自动的将较新的文件覆盖较旧的文件!
范例:
范例一:将所有系统上的资料通通写入磁带机内!
[root@linux ~]# find / -print | cpio -covB > /dev/st0
# 一般来说,使用 SCSI 介面的磁带机,代号是 /dev/st0 喔!
范例二:检查磁带机上面有什么文件?
[root@linux ~]# cpio -icdvt < /dev/st0
[root@linux ~]# cpio -icdvt < /dev/st0 > /tmp/content
# 第一个动作当中,会将磁带机内的档名列出到萤幕上面,而我们可以透过第二个动作,
# 将所有的档名通通纪录到 /tmp/content 文件去!
范例三:将磁带上的资料还原回来~
[root@linux ~]# cpio -icduv < /dev/st0
# 一般来说,使用 SCSI 介面的磁带机,代号是 /dev/st0 喔!
范例四:将 /etc 底下的所有『文件』都备份到 /root/etc.cpio 中!
[root@linux ~]# find /etc -type f | cpio -o > /root/etc.cpio
# 这样就能够备份啰~您也可以将资料以 cpio -i < /root/etc.cpio
# 来将资料捉出来!!!!