linux12-xinetd,系統備份與恢復

←手機掃碼閱讀     火星人 @ 2014-03-08 , reply:0

超級守護進程 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


例四: 把埠換成2222


vim /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 顯示

本文出自 「linuxart」 博客,請務必保留此出處http://linuxart.blog.51cto.com/686203/843954





[火星人 ] linux12-xinetd,系統備份與恢復已經有413次圍觀

http://coctec.com/docs/linux/show-post-45751.html