超级守护进程 xinetd
chkconfig --list |grep xinetd
xinetd based services:
chargen-dgram: off
chargen-stream: off
cvs: off
daytime-dgram: off
daytime-stream: off
discard-dgram: off
discard-stream: off
echo-dgram: off
echo-stream: off
eklogin: off
ekrb5-telnet: off
gssftp: off
klogin: off
krb5-telnet: off
kshell: off
ktalk: off
rmcp: off
rsync: on
tcpmux-server: off
tftp: on
time-dgram: on
time-stream: on
守护进程分为:
stand alone --指的非xinet下的那些服务
super daemon --指的就是xinetd下的那些服务
super daemon相当于是它下面的所有服务的管理程序,在安全性上更加了一道门
以rsync服务为例
vim /etc/xinetd.d/rsync
service rsync --服务名
{
disable = yes --disable等于yes表示此服务关闭
socket_type = stream --tcp的连线机制
wait = no --不等待,可以同时进行大量连线功能
user = root --用root身份启动服务
server = /usr/bin/rsync --定义你的rsync的服务执行文件的位置
server_args = --daemon --服务参数,man rsycd可以查到这个参数,表示rsync以守护进程的方式来运行
log_on_failure = USERID --登录错误时,额外记录你的用户id
}
例子一:
实现把ssh拖管到super daemon下管理
man xinetd.conf --写法去这里找帮助
vim /etc/xinetd.d/ssh --新建一个文件,写上下面的内容
service ssh
{
disable = no
socket_type = stream
protocol = tcp
wait = no
user = root
server = /usr/sbin/sshd
server_args = -i
}
/etc/init.d/sshd stop
/etc/init.d/xinetd restart
netstat -ntlup
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 8182/xinetd --这时候查看你的端口会发现守护进程为xinetd,不是以前的sshd
例子二:
在上面例子的基础上再加上访问控制
service ssh
{
disable = no
socket_type = stream
protocol = tcp
wait = no
user = root
server = /usr/sbin/sshd
server_args = -i
only_from = 10.1.1.0/24 --允许10.1.1.0/24网段访问
no_access = 10.1.1.104 --拒绝10.1.1.104访问
}
[root@a ~]# ssh 10.1.1.35
ssh_exchange_identification: Connection closed by remote host
--被拒绝后报错如上
例三:定义只能上午10点到下午2点之间才能被ssh
service ssh
{
disable = no
socket_type = stream
protocol = tcp
wait = no
user = root
server = /usr/sbin/sshd
server_args = -i
only_from = 2.2.2.0/24
no_access = 2.2.2.35
access_times = 10:00-14:00
}
/etc/init.d/xinetd restart
例四: 把端口换成2222vim /etc/services --把ssh对应的22端口改成2222
service ssh
{
disable = no
socket_type = stream
protocol = tcp
port = 2222
wait = no
user = root
server = /usr/sbin/sshd
server_args = -i
only_from = 2.2.2.0/24
no_access = 2.2.2.35
access_times = 10:00-14:00
}
/etc/init.d/xinetd restart
例五:
介绍一个super daemon下的一个时间同步的方法
[root@li test]# vim /etc/xinetd.d/time-dgram
disable = no
[root@li test]# vim /etc/xinetd.d/time-stream
disable = no
/etc/init.d/xinetd restart
--重启后,查看tcp和udp的37端口都会开放
客户端使用 rdate -s 10.1.1.35 来同步时间
======================================================================
linux系统的备份与恢复
哪些需要备份:
/bin 存放的是系统可执行的二进制文件
/etc 存放的是配置文件
lost found 分区下才会有这个目录,存放系统出错时遗失的碎片文件
/mnt 默认的挂载目录(mount)
/opt 扩展软件包
/sbin 系统管理员可执行的二进制文件
/tmp 存放临时文件的目录
/boot 存放引导镜象的目录
initrd-2.6.18-164.el5.img vmlinuz-2.6.18-164.el5
/home 用户家目录
管理的家目录为/root
/media 默认挂载media的目录
/proc 虚拟目录 ,它记录的是当前系统的各种动态信息和状态
/selinux 高级安全管理
/usr 用户软件目录,用户装软件一般存放在此
/dev 一切设备都是文件
/dev/sda scsi U盘/dev/hda IDE
/dev/cdrom 光盘
/dev/fd0 软驱
/dev/lp 打印机
/dev/mouse 鼠标
/lib 系统使用的函数库目录,程序运行过程中,会调用一些这里的库文件
/var 主要存放执行过程中经常变化的文件,比如说:日志,邮件
/var/lib 程序执行过程中,使用的数据文件放置的目录:比如:rpm包的数据库, 的locate查找的数据库等
/var/log 系统日志和各种服务日志存放的目录
/var/run 一般用来存放程序运行的pid
/var/spool/mail 每个用户收邮件的目录
系统本身:
/etc/ --下面有/etc/passwd,/etc/fstab,/etc/initab等等重要的系统配置文件和服务配置文件
/root,/home/用户名 --各个用户的家目录,存放各个用户的文件
/var/spool/mail,/var/log/messages --邮件,系统日志信息
/usr/local,/opt/,/usr/src --用户安装的软件,扩展软件包,软件包源码
/bin/,/sbin/ --用户和管理的可执行命令
服务相关:
与服务器跑的服务相关的数据要备
不需要备的: /tmp,/mnt,/proc,/dev
备份的介质:
软盘:/dev/fd0
光盘:/dev/cdrom
硬盘:/dev/hda(b,c,...) IDE /dev/sda(b,c,...) SCSI,SATA,USB
磁带机: /dev/ht0 IDE /dev/st0 SCSI
usb接口的外接设备
备份的种类:
全备 --也可以称为镜像备份
增量差异备份 --只备份变化的
累计增量差异备份 --累计一段时间的变化数据
1 2 3 4 5 6 7
全 增 增 累 增 增 增
linux下备份的工具
cp tar
scp wget rsync
dump/restore rdump
dd
cpio
[root@li ~]# tar cvf /backup/xxxx / --exclude=/tmp --exclude=/dev --exclude=/proc --exclude=/backup
tar -N参数(了解)
tar -N '2010-05-09' -cvjf /backup/newer.tar.bz2 /test/test/
--备份比2010-05-09新的文件(也就是表示在这一天之后修改过的文件,包括20100509这天的)
tar打包备份,并按时间命令
tar cvjf /backup/`date %Y-%m-%d`.tar.bz2 /home/ --注意`符号(执行符号)是tab键上面的那个键
远程备份
scp --远程备份目录时,记得加-r参数
要实现用脚本自动scp的远程备份,注意配ssh等效性(有些场合不允许配置ssh等效性) expect自动应答脚本
rsync remote sync 远程同步 比wget要好
rsync - faster, flexible replacement for rcp
Wget - The non-interactive network down-loader.
wget http://127.0.0.1/ule07.txt --直接接url uniform resource locate(统一资源定位)
[root@li ~]# wget http://10.1.1.35/extra/flash-plugin-10.0.32.18-release.i386.rpm
[root@li ~]# wget ftp://10.1.1.35/ule/ule12.txt
# wget -m -k -np http://10.1.1.35/ule
还支持https协议
rsync 特点:
1,可以镜像保存整个目录树和文件系统
2,容易做到保存原有的权限,时间,软硬链接
3,传输效率高,使用同步算法,只比较变化的
4,支持匿名传输,方便网站镜像
rsync 参数介绍
-v verbo
-a 归档模式,递归的方式传输文件,并保持文件的属性
-l 保留软链接
-R 保留相对路径
-H 保留硬链接
-p ,-o,-g,-A 分别保留权限,属主,属组,acl等 ,但如果加了-a,这些就都包括了
-D 等于--devices --specials 表示支持b,c,s,p类型的文件
普通应用:
rsync -av /home /backup --本机上的同步,把/home目录下的内容同步到/backup目录下
rsync -av /home/ 10.1.1.218:/backup --把本地的/home目录内容,同步到远端218的/backup目录下
rsync -av 10.1.1.218:/backup/ /backup/ --把远端218的/backup目录下的内容同步到本地的/backup目录
思考:
1. 同步时保留原路径,也就是把/home同步到/backup会变成/backup/home/*再内容
-R参数解决
2.如果源目录有文件被删除了,那同步的目录是删除还是不删除,是否可以用参数来控制?
--delete
思考:能否把上面的rsync做成服务的形式,并加上一些控制功能或日志记录功能呢?
man rsyncd.conf
服务器端的配置:
1,第一步:
vim /etc/rsyncd.conf
motd file=/etc/rsyncd.welcome
[abc]
path=/test
vim /etc/rsyncd.welcome --手动建立自己定义的motd文件,并写上欢迎信息
2,第二步:
vim /etc/xinetd.d/rsync --修改服务启动脚本
service rsync
{
disable = no --yes改为no 打开rsync服务功能
socket_type = stream
wait = no
user = root
server = /usr/bin/rsync
server_args = --daemon
log_on_failure = USERID
}
第三步:
/etc/init.d/xinetd restart --重启服务
netstat -ntlup |grep 873 --服务端就会有873的端口在监听了
tcp 0 0 0.0.0.0:873 0.0.0.0:* LISTEN 4080/xinetd
客户端的操作:
# rsync -v 10.1.1.35:: --直接这样可以查看35这个服务器共享了哪些"hello today! @_@"
notes
# rsync -avlR 10.1.1.35::abc /root/Desktop/
--这样同步,是不需要密码的;注意abc为服务名,前面有两个::
例二:在上面的基础上加上一些功能
要求:
1.把日志记录到/var/log/rsyncd.log
2.共享两个module一个为notes,目录为/share/110620,另一个module为soft,目录为/share/soft,soft这个module为隐藏module
3.并时同时只能1个客户端连接进行同步这两个module
4.只能允许一个IP(实验时这个IP自定义)进行同步这两个module
5.只允许客户端使用user1用户来同步notes这个module,并且同步密码为123
motd file=/etc/rsyncd.motd
log file=/var/log/rsyncd.log
[notes]
path=/share/110620
max connections=1
lock file=/var/run/rsyncd.lock
hosts allow=172.16.232.129
auth users=user1
secrets file=/etc/rsyncd.passwd
[soft]
path=/share/soft
list=false
max connections=1
lock file=/var/run/rsyncd.lock
hosts allow=172.16.232.129
vim /etc/rsyncd.passwd --手工创建这个密码文件
user1:123 --明文
chmod 600 /etc/rsyncd.passwd --注意权限改为600,只root用户能读能写
/etc/init.d/xinetd restart
客户端上的操作
先su - user1切换到user1用户
[user1@localhost ~]$ rsync -av 10.1.1.35::www /home/user1
Password: --输入密码就可以了
rsync的补充:
sersync 这个软件 金山的一个人写的
=====================================
dump 备份
restore 恢复
dump的特点:
1,只能针对整个分区
2,能够支持绝大部分文件类型,包括设备文件,也能保留原属性
3,支持镜像备份和增量备份
4,备份时支持基本压缩
备份级别:
通过备份级别来支持增量和镜像备份
0-9级别,0代表的是全备(镜像备份),后面的数字代表递增的增量备份
1 2 3 4 5 6 7 周期
全 增 增 累 增 增 增
0 1 2 1 2 3 4 备份级别
--dump里数字级别表示备份上一次小于它的数字到这一次之间的数据(oracle里会有所不一样,oracle里的累计增量备还要加一个c标识)
[root@li ~]# dump -0u /dev/sda12 -f /backup/sda12_0.dump
--0级别全备
[root@li ~]# dd if=/dev/zero of=/quota/dump1 bs=1M count=10
--在sda12挂载的quota目录里建立一个10M大小的文件dump1
[root@li ~]# dump -1u /dev/sda12 -f /backup/sda12_1.dump
--1级别增备,可以查看备份的文件为10M,验证了增量备
[root@li ~]# dd if=/dev/zero of=/quota/dump2 bs=1M count=10
--再建立10M的文件dump2
[root@li ~]# dump -2u /dev/sda12 -f /backup/sda12_2.dump
--2级别增备,还是10M
[root@li ~]# dd if=/dev/zero of=/quota/dump3 bs=1M count=10
--再建立10M的文件dump3
[root@li ~]# dump -1u /dev/sda12 -f /backup/sda12_1_4.dump
--1级别备份,会发现30M,表示它备份了dump1,dump2,dump3这三个10M的文件,验证了它是备第一次备份的0级别到这次之间的数据;也就是累计增量备
restore -t -f sda12_0.dump --查看备份集里备份的文件用-t参数
恢复restore
1,整个分区崩溃,需要恢复,那么在这里最好重新格式化一下这个分区,再重新挂载
2,开始restore恢复
cd /恢复路径 --先cd到要恢复的路径,再一级一级恢复,不能跳级
[root@li quota]# restore -r -f /backup/sda12_0.dump
--先恢复0级别全备
[root@li quota]# restore -r -f /backup/sda12_1_4.dump
--做了累计增量备份,直接恢复累计增量的备份文件,就把dump1,dump2,dump3恢复回来了
直接从备份中提取出文件:
--如果你只需要恢复一个文件,就用下面的方式去提取
[root@li quota]# restore -x -f /backup/sda12_1_4.dump /dump2
You have not read any volumes yet.
Unless you know which volume your file(s) are on you should start
with the last volume and work towards the first.
Specify next volume # (none if no more volumes): 1
set owner/mode for '.'? [yn] y
交互性的提取出文件:
[root@li quota]# restore -i -f /backup/sda12_1_4.dump --交互性用-i参数
restore >
restore > ls
.:
aquota.group aquota.user dump1 dump2 dump3
restore > add dump1
restore > add dump3 --把备份集中的dump1,dump3加到提取列表,如果是目录的话使用 add 目录名/*
restore > ls --再次查看备份集会看到加入到提取列表文件被加了标记
.:
aquota.group aquota.user *dump1 dump2 *dump3
restore > extract --这个命令提取出来
You have not read any volumes yet.
Unless you know which volume your file(s) are on you should start
with the last volume and work towards the first.
Specify next volume # (none if no more volumes): 1
set owner/mode for '.'? [yn] n
restore > quit --退出
rdump remote dump 远程dump
先配ssh等效性
RSH=/usr/bin/ssh rdump -0u /dev/sda12 -f 172.16.232.129:/tmp/sda12_0_full.dump--把本地的/dev/sda12的数据远程dump到129的/tmp目录,远程dump要受网络的影响
===========================================================
...............
dd - convert and copy a file
dd 指定大小地拷贝一个文件,并在拷贝的同时可以进行一些转换
1,备份mbr
dd if=/dev/sda of=/backup/mbr.backup bs=1 count=512
删除mbr dd if=/dev/zero of=/dev/sda bs=1 count=512
就会发现fdisk -l 看不到分区,一重启系统就启不来了
恢复:dd if=/backup/mbr.backup of=/dev/sda
2,备份整个硬盘
dd if=/dev/sda of=/dev/sdb --把/dev/sda的数据备份到/dev/sdb
恢复:dd if=/dev/sdb of=/dev/sda
dd if=/dev/sda of=/backup/full.backup --把/dev/sda的数据备份成一个文件
恢复:dd if=/backup/full.backup of=/dev/sda
3,备份软盘
dd if=/dev/fd0 of=/backup/fd0.backup bs=1 count=1440
恢复:dd if=/backup/fd0.backup of=/dev/fd0
4,从光盘拷贝iso镜像
dd if=/dev/cdrom of=/xxx.iso
5,从内存里拷贝资料到磁盘
dd if=/dev/mem of=/backup/mem.bin
特殊应用:
6,销毁磁盘数据
dd if=/dev/urandom of=/dev/sda --随机数填充磁盘
7,修复硬盘,当硬盘长时间不使用
dd if=/dev/sda of=/dev/sda
8,raw设备(裸设备)或者lvm数据迁移等
logical volumn management 逻辑卷管理
[root@li raw]# vim /etc/udev/rules.d/50-udev.rules
KERNEL=="raw[0-9]*", NAME="raw/%k" OWNER="user1" GROUP="user1"
--后面加owner,group指定裸设备的用户和组
[root@li raw]# vim /etc/udev/rules.d/60-raw.rules
ACTION=="add", KERNEL=="sda9", RUN ="/bin/raw /dev/raw/raw1 %N"--加上这一句,表示sda9绑定到/dev/raw/raw1
[root@li dump]# raw /dev/raw/raw1 /dev/sda9
/dev/raw/raw1: bound to major 8, minor 9
[root@li dump]# ll /dev/raw
total 0
crw------- 1 user1 user1 162, 1 Mar 21 15:17 raw1
-------------------------------------------------------
cpio 能备份任何类型文件 (了解)
一般使用管道和别的命令配合(find)
find /quota/ |cpio -ov > /backup/quota.cpio --备份
cpio -iv < /backup/quota.cpio --恢复
-o 备份
-i 恢复
-v 显示