2012年2月6日 星期一
Drupal 備份與轉移
備份壓縮,相對路徑的範例:
tar -jpcv -f sites.tar.bz2 -C ~/public_html sites (壓縮public_html/sites之下的資料)
解壓縮則是:
tar -jpxv -f sites.tar.bz2 -C ~/public_html/twtcsl (不用放sites,會解成sites這個目錄)
MySQL:
備份
mysqldump -u 使用者 -p 資料庫> drupal.sql
還原
mysql -u 使用者 -p 資料庫 < drupal.sql
改sites/default/settings.php這個檔
$db_url = mysql://xxxx:xxxx@localhost/drupal';
clean_url 的問題。參考:http://drupal.org/node/367616
簡單說就是用回複雜的方式,要登入就是 網址?q=user 然後不管跳到哪頁都要加?q=,把clean_url先改掉,或是主機直接設定好就行。
主機設定clean_url的方式:http://drupal.org/node/15365
2012年2月2日 星期四
Linux全系統的備份與還原(系統轉移)
摘自Ubuntu的WIKI
1.以最高權限執行
sudo su -
2.切換到根目錄
cd /
3.使用tar指令
就是中間加上排除的部分而己,記得產生的備份檔一定要排除 ,否則就沒完沒了了!
tar的參數
c - 新建一個備份文檔
v - 詳細模式, tar程式將在屏幕上實時輸出所有信息。
p - 保存許可,並應用到所有文件。
z - 採用‘gzip’壓縮備份文件,以減小備份文件體積。
應排除的目錄
/proc、/lost+found、/sys、/mnt、/media
另外額外分割區的東東也可以看看要不要加入
4.到新的機器還原
看到這裡突然覺得,也可以利用這種方式來拷貝系統,否則替老師桌機
一台一台的灌Linux還是很累人的。
我的想法是將(a)做好的樣版機,(b)依上述步驟1-3備份成檔案後燒到DVD上
(c)再配合LiveCD開機將要安裝的機器(d)作好硬碟分割並格式化
(e)再將備份檔解到 /分割區內並建好排除的目錄
(f)再chroot 到新的分割區
(g)執行grub-install /dev/sda (或grub-install /dev/hda )將磁區資訊寫到MBR
1.以最高權限執行
sudo su -
2.切換到根目錄
cd /
3.使用tar指令
tar -cvpzf /路徑至備份檔.tgz 備份目錄
tar -cvpzf /路徑至備份檔.tgz --exclude=排除目錄1 --exclude=排除目錄2 --exclude= /路徑至備份檔.tgz (產生的備份檔當然要排除) /
備份目錄
例子:
tar -cvpzf /backup.tgz --exclude=/proc --exclude=/lost+found \
--exclude=/backup.tgz --exclude=/mnt --exclude=/sys /
分析:
tar -cvpzf
/backup.tgz --exclude=/proc --exclude=/lost+found
--exclude=/backup.tgz --exclude=/mnt --exclude=/sys
/
就是中間加上排除的部分而己,記得產生的備份檔一定要排除 ,否則就沒完沒了了!
tar的參數
c - 新建一個備份文檔
v - 詳細模式, tar程式將在屏幕上實時輸出所有信息。
p - 保存許可,並應用到所有文件。
z - 採用‘gzip’壓縮備份文件,以減小備份文件體積。
應排除的目錄
/proc、/lost+found、/sys、/mnt、/media
另外額外分割區的東東也可以看看要不要加入
4.到新的機器還原
tar -xvpzf /backup.tgz -C /
mkdir /proc /lost+found /mnt
/sys看到這裡突然覺得,也可以利用這種方式來拷貝系統,否則替老師桌機
一台一台的灌Linux還是很累人的。
我的想法是將(a)做好的樣版機,(b)依上述步驟1-3備份成檔案後燒到DVD上
(c)再配合LiveCD開機將要安裝的機器(d)作好硬碟分割並格式化
(e)再將備份檔解到 /分割區內並建好排除的目錄
(f)再chroot 到新的分割區
(g)執行grub-install /dev/sda (或grub-install /dev/hda )將磁區資訊寫到MBR
系統異常關機修復方式 FSCK(慎用)
首先先開機進入 Single Mode ,以 FreeBSD 6 為例,開機選單按 4 即可進入 Single Mode
接下來進去後先按一下 Enter ,以我的系統為例,輸入下列指令
接下來進去後先按一下 Enter ,以我的系統為例,輸入下列指令
# mount -a
# df
/dev/da0s1a 10154158 70668 9271158 1% /
devfs 1 1 0 100% /dev
/dev/da1s1d 2055518950 1106617646 784459788 59% /home
/dev/da0s1e 10154158 1037240 8304586 11% /tmp
/dev/da0s1f 80729226 30448924 43821964 41% /usr
/dev/da0s1d 81245672 800846 73945174 1% /var
先確認有哪些目錄後,就一個一個 umont 做 fsck 修復的動作,修復完再 mount 回來 # df
/dev/da0s1a 10154158 70668 9271158 1% /
devfs 1 1 0 100% /dev
/dev/da1s1d 2055518950 1106617646 784459788 59% /home
/dev/da0s1e 10154158 1037240 8304586 11% /tmp
/dev/da0s1f 80729226 30448924 43821964 41% /usr
/dev/da0s1d 81245672 800846 73945174 1% /var
# umount /home
# fsck -y /home
# mount /home
若一開始連 / 都 mount 不起來的話,記得要先 fsck 根目錄才行唷!
# fsck -y /home
# mount /home
用 du 將目錄中的總容量算出來
原始文章連結:http://phorum.study-area.org/viewtopic.php?t=16977
怎麼用 du 將目錄中所有目錄的總容量算出來?
要算的是目錄中各個子目錄分別的容量,指令可以這樣下...
#du -cSh /path/*
如果不懂的話...可以 man du ...用底下的方式..更一目了然囉...
#du -h --max-depth=2 /path/*
--max-depth=N
print the total for a directory (or file, with --all) only if it
is N or fewer levels below the command line argument;
--max-depth=0 is the same as --summarize
du -f
怎麼用 du 將目錄中所有目錄的總容量算出來?
要算的是目錄中各個子目錄分別的容量,指令可以這樣下...
#du -cSh /path/*
如果不懂的話...可以 man du ...用底下的方式..更一目了然囉...
#du -h --max-depth=2 /path/*
--max-depth=N
print the total for a directory (or file, with --all) only if it
is N or fewer levels below the command line argument;
--max-depth=0 is the same as --summarize
du -f
SSH 安全設制
大部份的 ssh daemon 設定檔都是放在 /etc/ssh/sshd_config, 於 ssh 本身來說, 它自己就是一個安裝的遠端登入機制, 在您傳送的任何一筆資料都給予加密, 讓資料傳送之間更為安全. 但是政策上的考量, 安全的規劃上, 有些原本的條件可能太過於開放, 所以在此提供一些小技巧, 來達到更符合客制化的 ssh 環境.
以下的修改檔都是在 /etc/ssh/sshd_config, 而在修改完之後請重新啟動 sshd:
[root@rhel
ssh]# service sshd restart Stopping sshd: [ OK ] Starting sshd: [ OK ] [root@rhel ssh]# |
預設 sshd 是聆聽 port 22 的連接埠, 如果要更改請使用 Port 參數, Port 語法後面接著要讓 sshd 聆聽的連接埠口, 如果要一次聆聽多個, 那麼就再使用 Port 指定其它的連接埠, 以下會讓 sshd 重新聆聽 22 和 1234 的 Port.
Port 22 Port 1234 |
[root@rhel ssh]# netstat -ntulp | egrep '(sshd)|(PID)'
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:1234 0.0.0.0:* LISTEN 9769/sshd
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 9769/sshd
[root@rhel ssh]#
|
root 是個強而有力的帳號, 管理習慣上, 應該要避免使用 root 直接登入, 這樣可以養成使用一般權限登入的習慣, 另一個好處也是可以避免被使用字典攻擊 (即使用 root 帳號為主, 不斷猜測密碼). 下面的方法會讓 root 無法使用 ssh 登入.
PermitRootLogin no |
預設 sshd 是聆聽所有的 IP 位置 (0.0.0.0), 也包含 127.0.0.1 的本機 loop back IP, 如果要指定 sshd 只聆聽某個特定的 IP 時, 使用 ListenAddress 就可以達成, 大部份會這麼做的原因可能是在一台 Linux Getway 的主機上限制只有某些網段的 IP 才可以使用 sshd 登入. 下面的示範會讓主機聆聽 11.22.33.44 和 192.168.1.1 的介面 (不包含 127.0.0.1)
ListenAddress 11.22.33.44 ListenAddress 192.168.1.1 |
[root@siva ssh]# netstat -ntulp | egrep '(sshd)|(PID)'
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 11.22.33.44:6211 0.0.0.0:* LISTEN 9839/sshd
tcp 0 0 192.168.1.1:6211 0.0.0.0:* LISTEN 9839/sshd
tcp 0 0 11.22.33.44:22 0.0.0.0:* LISTEN 9839/sshd
tcp 0 0 192.168.1.1:22 0.0.0.0:* LISTEN 9839/sshd
[root@siva ssh]#
|
Tar 指令詳解
備份程式:tar Function Options tarFiles [SomeFile?]
SourceFiles?
備份一個子目錄:tar cvfBackup.tar /Direcory
分片備份:tar cvfMBackup.tar /Direcory
=====================================================================
常用參數:
例如:
也可以同時備份多個目錄,將要打包的清單(以空白分隔)接在最後面即可。下面的例子將 /etc , /usr/local/etc 打包在 etc.tar 中:
咦~好奇的人可能會想到 FreeBSD 的 packages 檔名好像叫 *.tgz 或 *.tbz,和 tar , gzip , bzip 有沒有關啊?有興趣可以找個 FreeBSD 的 package ,用 tar 來打開包裝看看哦!!
另外,比較一下這兩個同樣是備份 /usr/local/etc 的指令有何不同?
例如:
如果備份時有用 gzip 壓縮過則可以加上 -z :
將 /home/backup/etc.tgz 中的東西在目前所在的目錄解開:
假設我想把 /usr 中所有的東西複製到 /mnt/usr 中,就執行底下的指令:
假設 /home 是一個單獨的分割區 (/dev/ad0s1h),而 /backup 是一個空間夠大的目錄,我們可以執行:
參數說明:
例如想把 /home dump 完的備份 ( /backup/home.dump ) 還原到 /mnt/new (/dev/ad1s1e) 這個 partition 中,如果 /dev/ad1s1e 已經格式化好,而且已經 mount 到 /mnt/new ,就可以執行以下指令:
如果只想還原備份中的部份檔案怎麼辦呢?
restore 提供 -i 的參數來進行交談式的還原,我們可以利用這個方法來指定要還原的部份,例如,只想由 /home 的備份檔 home.dump 中還原 /home/gsyan , /home/students 的資料,我們可以執行:
例如:想要將 /home (/dev/ad0s1h) 上的所有資料備份到新硬碟上的 partition (/dev/ad2s1h),執行:
假設現在想把名為 mail 上掛在 /home 的這個 partition 異地備份至名為 bkserver 主機上的 /backup 目錄 ,我們可以進行以下程序來備份。
接著輸入 bk 的登入密碼,如果成功登入就完成連線測試,輸入 exit 登出,準備進行登入用金鑰的製作。
先確認已經在本機 ( mail ) 上用執行 dump 指令的 root 帳號登入哦!然後由 root 執行:
執行完會在 /root/.ssh 中產生 id_dsa 和 id_dsa.pub ,後面那個就是我們要放在 bkserver 裡 bk 帳號下的金鑰。
接著我們要把 /root/.ssh/id_dsa.pub 複製到遠端主機 (bkserver) 裡備份專用帳號 (bk) 個人目錄的.ssh/authorized_keys 中。
如果 bkserver 的 ~bk/.ssh/authorized_keys 不存在,我們直接把前面在 mail 上 root 帳號產生的 id_dsa.pub 上傳過去即可,在 mail 上以 root 執行:
如果 authorized_keys 早已存在,我們可以先將 id_dsa.pub 傳到 bkserver 上,然後再將 id_dsa.pub 中的內容貼到 ~bk/.ssh/authorized_keys 新的一行。
如果前面的步驟完成了,我們在 mail 以 root 執行 ssh bk@bkserver 應該就可以不用輸入密碼遠端登入囉!
例如:
如果想省一些空間則可以順便用 gzip 壓縮後再傳給 bkserver,指令改為:
- 將許多檔案包裝成一個檔案,並保留檔案權限、目錄結構、完整的符號連結和實體連結等相關訊息。
- 而在解開檔案時,會將原本時的目錄解開在目前的目錄底下。若要只解開部份檔案時,必須要加上在備份檔中該檔案的完整路徑。
- 一般的做法是:先將許多檔案用 tar 打包成一個檔案,再用 gzip 壓縮成FileName?.tar.gz。
- 如果將 tar Files 以 - 代替,表示輸出入至標準輸出入。如:
- tar cvf -SourceFiles?| gzip -9 > tarFile.tar.gz
- gunzip -9ctarFile.tar.gz| tar xvf -
- Function:
- c : 建立新的備份檔。
- x : 將備份檔解開。
- t : 列出備份檔的內容。
- -T Sample : 備份在 Sample 中所列出的檔案清單。
- r : 將檔案附加在這個備份檔案的後面。
- u : 將備份檔內的檔案以更新的檔案取代。
- d : 比較備份檔中的檔案和檔案系統中的檔案。
- Options:
- v : 列出處理檔案時的相關訊息。越多訊息越詳細。
- k : 解開檔案時不要覆蓋已存在的檔案。
- f FileName? : 指定備份檔的檔案名稱。
- z : 和 gunzip 搭配使用,自動產生或解開壓縮後的備份檔。
- j : 和 bzip2 搭配使用,自動產生或解開壓縮後的備份檔。
備份一個子目錄:tar cvfBackup.tar /Direcory
分片備份:tar cvfMBackup.tar /Direcory
=====================================================================
1 tar
tar (tape archive) 原本是設計用來將文件打包到磁帶中的,我們也可以將檔案或是目錄打包成一個單一的檔案,必要時再用同一個程式來將資料全部還原或是只解開部份的資料,正因為它可以備份檔案或目錄,深受大家的愛用。常用參數:
- 指定動作 :
- -c create,新增一個備份檔
- -t list,顯示備份檔中的檔案清單
- -x
extract,解開備份檔中的檔案
- 指定檔案:
- -f file,讀/寫指定的檔案
- -f file,讀/寫指定的檔案
- 壓縮方式:
- -z gzip,備份的東西要用 gzip 壓縮/解壓縮
- -y bzip,備份的東西要用 bzip 壓縮/解壓縮,也可以用
-j
- 其它:
- -p permissions,保留原來的權限
- -v verbose,備份的內容要顯示在畫面
- -C (大寫 C),cd 先切換目錄
1-1 以 tar 打包要備份的資料
如果沒有什麼特殊需求,利用 tar 備份檔案只要用到 -c (新增) ,-p (保留權限設定),-f (指定檔名),頂多再加個 -v 看一下打包的過程。例如:
tar -cpvf /home/backup/etc.tar /etc上例將 /etc 目錄中所有的檔案打包到 /home/backup/etc.tar 中。
也可以同時備份多個目錄,將要打包的清單(以空白分隔)接在最後面即可。下面的例子將 /etc , /usr/local/etc 打包在 etc.tar 中:
tar -cpvf /home/backup/etc.tar /etc /usr/local/etc我們也可以使用:
tar -czpvf /home/backup/etc.tgz /etc和前面的例子比較,多了個參數 z ,也就是將 tar 打包完的檔案再利用 gzip 壓縮,所以新產生有經過壓縮處理的備份檔我們也將檔名命名為 etc.tgz (.tgz 結尾),也有人用 .tar.gz ,端看個人習慣。
咦~好奇的人可能會想到 FreeBSD 的 packages 檔名好像叫 *.tgz 或 *.tbz,和 tar , gzip , bzip 有沒有關啊?有興趣可以找個 FreeBSD 的 package ,用 tar 來打開包裝看看哦!!
另外,比較一下這兩個同樣是備份 /usr/local/etc 的指令有何不同?
tar -czvf /home/backup/local.etc.1.tgz /usr/local/etc由於 tar 預設在備份時會儲存檔案的路徑 (但是自動去掉開頭的第一個斜線) ,也就是 /usr/local/etc/rc.d 在 local.etc.1.tgz 中會變成 usr/local/etc/rc.d,如果我們連 usr/local 都不想要,打包時可以利用 -C (大寫字母) 這個參數來控制路徑的保留層次,像前面第二個例子加了 -C /usr/local ,tar 會先切換至 /usr/local 目錄才備份 etc,所以在 local.etc.2.tgz 中 /usr/local/etc/rc.d 變成 etc/rc.d 儲存起來。
tar -czvf /home/backup/local.etc.2.tgz -C /usr/local etc
1-2 查看 tar 打包的檔案
要查看以 tar 打包的檔案只要利用 -t 這個動作參數即可。例如:
tar -tvf /home/backup/etc.tar上例會將 /home/backup/etc.tar 中的檔案清單顯示出來。
如果備份時有用 gzip 壓縮過則可以加上 -z :
tar -tzvf /home/backup/etc.tgz如果備份時用 bzip 壓縮過則加上 -y 或是 -j:
tar -tyvf /home/backup/etc.tbz
1-3 解開 tar 打包的檔案
要解開 tar 封裝的檔案是利用 -x 這個動作參數,再搭配 -z , -y (-j) 解壓縮。如果想保留原來的權限設定則要記得使用 -p,至於要不要使用 -C (大寫字母) 則要看當初在打包時有沒有使用及自己想要放置的路徑而定,最容易犯的毛病大多是解錯路徑,所以在使用 -x 解開時一定要記得先用 -t 查看一下當初是怎麼打包的,最保險的方法是先解到一個暫存的地方,再將需要的檔案複製/搬移到目的地。將 /home/backup/etc.tgz 中的東西在目前所在的目錄解開:
tar -xzvf /home/backup/etc.tgz將 /home/backup/etc.tgz 中的東西在 /home 中解開:
tar -xzvf /home/backup/etc.tgz -C /home將 /home/backup/etc.tgz 中的東西在 /home 中解開,並保留原始的權限:
tar -xzpvf /home/backup/etc.tgz -C /home
1-4 只解開 tar 打包的部份檔案
只解出 /home/backup/etc.tgz 中的 etc/group , etc/master.passwd 兩個檔案:tar -xzvf /home/backup/etc.tgz etc/group etc/master.passwd將 /home/backup/etc.tgz 中凡是叫 etc/rc* 通通解開,其它的不要:
tar -xzvf /home/backup/etc.tgz 'etc/rc*'將 /home/backup/etc.tgz 中的檔案解開,但是 rc.d 目錄中的東西不要:
tar -xzvf /home/backup/etc.tgz --exclude='rc.d/*'以上提到的方法也可以應用在打包時 (-c) 及查看清單時 (-t) 。
1-5 利用 tar 直接複製整個目錄到另一個目錄中
利用 tar 和 pipe 的技巧,可以做整個目錄直接複製,不過這個方法並不保證完整哦,畢竟它的方式不若 dump + restore 完備。假設我想把 /usr 中所有的東西複製到 /mnt/usr 中,就執行底下的指令:
tar cf - /usr | (cd /mnt ; tar xvfBp -)
2 dump 及 restore
前面提過的 tar 可以針對目錄或檔案來備份,而 dump 則是以 block 為處理單位,針對整個檔案系統(分割區)來備份,可以更完整的保持系統的原貌不會有所缺漏,以 dump 備份的資料可以用 restore 再還原回來。2-1 以 dump 將整個 partition 備份至一個檔案
使用過 Norton ghost 的人應該知道裡面有個選項是將 MS Windows 或 Linux 系統的某個分割備份到映像檔中,下面則是利用 dump 做類似的動作,將某個分割區備份至一個檔案。假設 /home 是一個單獨的分割區 (/dev/ad0s1h),而 /backup 是一個空間夠大的目錄,我們可以執行:
# dump -0uaf /backup/home.dump /home上面的例子以 level 0 將 /home 所在的分割區備份至 /backup/home.dump 中。
參數說明:
- -0 以 level 0 備份,也就是完整備份,level 可以為 0~9,level 1 則只備份 level 0 後有異動的部份。
- -u update,備份完成後自動更新 /etc/dumpdates 的內容(記錄分割區代號、level、備份日期)。
- -a auto-size,略過可儲存空間大小的檢查。
- -f file,將備份的資料輸出到後面參數指定的檔案,也可以是一個硬體(device file)或是標準輸出 (-)。
2-2 以 restore 還原檔案
以 dump 備份的分割區我們可以用 restore 將檔案還原出來,就像利用 ghost 把映像檔再寫入 partition 一樣,不過 restore 也可以只解出部份檔案。不過在使用 restore 要注意的是,restore 並不會幫我們將 partition 做格式式,而且,它是將內容解在目前所在的目錄,所以要記得先做好格式化並切換到要還原的目錄。例如想把 /home dump 完的備份 ( /backup/home.dump ) 還原到 /mnt/new (/dev/ad1s1e) 這個 partition 中,如果 /dev/ad1s1e 已經格式化好,而且已經 mount 到 /mnt/new ,就可以執行以下指令:
# cd /mnt/new完成後,/mnt/new 就可以看到原來 /home 的中的資料。
# restore -rf /backup/home.dump
如果只想還原備份中的部份檔案怎麼辦呢?
restore 提供 -i 的參數來進行交談式的還原,我們可以利用這個方法來指定要還原的部份,例如,只想由 /home 的備份檔 home.dump 中還原 /home/gsyan , /home/students 的資料,我們可以執行:
# restore -if /backup/home.dump出現 restore > 的提示符號後,我們就可以下指令,例如:輸入問號 (?) 即可列出可用的指令,
restore > ?為了達到範例的目標,我們要用 add 來新增要還原的檔案清單,用 extract 執行還原,下面是還原出 /home/gsyan 及 /home/studens 至目前分割區的步驟,黑體字的部份是自行輸入的部份:
Available commands are:
ls [arg] - list directory
cd arg - change directory
pwd - print current directory
add [arg] - add `arg' to list of files to be extracted
delete [arg] - delete `arg' from list of files to be extracted
extract - extract requested files
setmodes - set modes of requested directories
quit - immediately exit program
what - list dump header information
verbose - toggle verbose flag (useful with ``ls'')
help or `?' - print this list
If no `arg' is supplied, the current directory is used
restore > add gsyan students要結束只要輸入 quit 按 Enter 鍵即可跳出 restore 。
restore > extract
You have not read any tapes yet.
If you are extracting just a few files, start with the last volume
and work towards the first; restore can quickly skip tapes that
have no further files to extract. Otherwise, begin with volume 1.
Specify next volume #: 1
set owner/mode for '.'? [yn] y
restore >
2-3 以 dump 及 restore 做 partition 對 partition 的對拷
將分割區 dump 給標準輸出,再讓 restore 由標準輸入還原在新的 partition 就能達到 partition 對 partition 對拷的目的,底下是進行對拷的流程:- 切好新的 partition
- 以 newfs 將 partition format 好
- 將新的 partition mount 好
- 切換至新的 partition 中
- 以 dump & restore 進行備份及還原
例如:想要將 /home (/dev/ad0s1h) 上的所有資料備份到新硬碟上的 partition (/dev/ad2s1h),執行:
# newfs /dev/ad2s1h (如果已經格式化過則可省略)特別注意 dump 及 restore 並沒有指定檔名,而都用了一個減號 ( - ),對 dump 來說,是將 partition 的資料一個 block 一個 block 的送向標準輸出,而 restore 則是由標準輸入讀入並還原。
# mount /dev/ad2s1h /mnt (如果已經 mount 好則可省略)
# cd /mnt
# dump -0uaf - /home | restore -rf -
# cd /
# umount /mnt
2-4 以 dump & restore 備份整顆硬碟
如果想將整顆硬碟的資料拷至另一顆新硬碟,以最笨的方法就是先用 /stand/sysinstall 將新硬碟切割好,再利用 dump & restore 把各 partitions 一一對拷即可,程序如下:- 將新硬碟接好後,以重新開機。
- 執行 /stand/sysintall
- 選取 Configure
- 選取 Fdisk 切給 FreeBSD 用的 partions
- 選取 Label 進入 Disklabel Editor
- 注意:在設定 disklabel 時 mount point 要先照原來的架構設定
- 在存檔前先移到各 partition 後按 M 修改 mount point 至 /mnt 下的暫存目錄,不然可能會有錯誤
- 按 W 存檔並開始 format New H.D. (newfs)
- 離開 sysinstall
- umount -A 解除所有 mount 上來的 filesystem
- mount -a 重新掛上系統預設的 filesystem
- 開始備份各 partition
- 將新硬碟的 / (例如:/dev/da1s1a) 掛上來
mount /dev/da1s1a /mnt
- 將新硬碟 /etc/fstab 中的 /dev/xxx 改成合適的
ee /mnt/etc/fstab
2-5 dump + ssh 進行異地備份
dump 和 restore 其實有相對應的 rdump 和 rrestore 可進行遠端的備份及還原,不過 r 系統的指令的安全性較需考量,我們可以利用 ssh 來進行較安全的連線。假設現在想把名為 mail 上掛在 /home 的這個 partition 異地備份至名為 bkserver 主機上的 /backup 目錄 ,我們可以進行以下程序來備份。
- 準備工作
- 在 bkserver 上準備一個備份登入用的專用帳號,假設就叫 bk 好了!!
- 檢查 bkserver 備份專用的目錄 /backup 是否可被備份專用帳號 ( bk ) 寫入。
- 在 mail 上因為要執行 dump 必須是 root ,所以屆時必須由 root 執行 ssh 遠端登入 bkserver,所以要為 mail 上 root 以 ssh-keygen 準備登入用的 "公開金鑰" 。
- 將 root@mail 的公開金鑰置入 bkserver 上帳號 (bk) HOME 的 .ssh/authorized_keys 中。
- 進行備份
2-5-1 連線測試
我們先在 mail 上以 root 的身份登入 mail,然後遠端登入 bkserver (假設在 bkserver 上已經建好 bk 這個帳號)# ssh bk@bkserver如果是第一次連線,應該會出現下面的問題詢問是否儲存遠端主機的識別資料,類似下面:
The authenticity of host 'bkserver.test.edu.tw (192.168.1.5)' can't be established.輸入 yes 即可,ssh 會將資料存入 ~/.ssh/know_hosts ,下次就不會有同樣的問題。
DSA key fingerprint is 2b:cc:89:80:bc:77:45:83:47:ae:b6:29:51:f5:15:33.
Are you sure you want to continue connecting (yes/no)?
接著輸入 bk 的登入密碼,如果成功登入就完成連線測試,輸入 exit 登出,準備進行登入用金鑰的製作。
2-5-2 製作金鑰
我們希望在進行遠端備份能夠不用輸入密碼自動登入遠端主機執行備份儲存的工作,所以要先在 mail 上用 ssh-keygen 來產生 ssh 登入用的金鑰對。先確認已經在本機 ( mail ) 上用執行 dump 指令的 root 帳號登入哦!然後由 root 執行:
ssh-keygen -d接著應該會出現以下的對話:
Generating public/private dsa key pair.如果希望登入時不用輸入密碼直接登入,只要通通按 Enter 回所有問題即可。
Enter file in which to save the key (/root/.ssh/id_dsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_dsa.
Your public key has been saved in /root/.ssh/id_dsa.pub.
The key fingerprint is:
a6:62:05:95:92:79:2a:71:2d:73:3b:7d:0e:e7:39:26 root@mail.test.edu.tw
執行完會在 /root/.ssh 中產生 id_dsa 和 id_dsa.pub ,後面那個就是我們要放在 bkserver 裡 bk 帳號下的金鑰。
接著我們要把 /root/.ssh/id_dsa.pub 複製到遠端主機 (bkserver) 裡備份專用帳號 (bk) 個人目錄的.ssh/authorized_keys 中。
如果 bkserver 的 ~bk/.ssh/authorized_keys 不存在,我們直接把前面在 mail 上 root 帳號產生的 id_dsa.pub 上傳過去即可,在 mail 上以 root 執行:
scp ~/.ssh/id_dsa.pub bk@bkserver:.ssh/authorized_keys不過要記得先幫 bk 建好 .ssh 的目錄哦!不然會發生錯誤。
如果 authorized_keys 早已存在,我們可以先將 id_dsa.pub 傳到 bkserver 上,然後再將 id_dsa.pub 中的內容貼到 ~bk/.ssh/authorized_keys 新的一行。
如果前面的步驟完成了,我們在 mail 以 root 執行 ssh bk@bkserver 應該就可以不用輸入密碼遠端登入囉!
2-5-3 遠端備份
做好前面的準備工作後,我們就可以在 mail 上將某個 partition 備份到位於遠端的 bkserver 上了。例如:
# dump -0uaf - /home | ssh -c blowfish bk@bkserver dd of=/backup/mail.home.dump上面的例子在 mail 上執行,將掛在 mail /home 的 partition 備份起來,並以 bk 帳號遠端登入 bkserver 儲存在 bkserver 的 /backup/mail.home.dump 裡。
如果想省一些空間則可以順便用 gzip 壓縮後再傳給 bkserver,指令改為:
# dump -0uaf - /home | gzip -2 | ssh -c blowfish bk@bkserver \
dd of=/backup/mail.home.dump
2012年2月1日 星期三
CentOS 5 MySQL 設定檔 - my.cnf 的位置
在CentOS以yum安裝MySQL後,
設定檔範例會放在:
1. CentOS 5.x: /usr/share/mysql
2. CentOS 4.x: /usr/share/doc/mysql-server-4.1.27 (最後一層目錄名稱依MySQL版本會有所不同)
會有根據主機記憶體大小不同有各個合適的範本可以使用:
my-huge.cnf
my-innodb-heavy-4G.cnf
my-large.cnf
my-medium.cnf
my-small.cnf
設定檔範例會放在:
1. CentOS 5.x: /usr/share/mysql
2. CentOS 4.x: /usr/share/doc/mysql-server-4.1.27 (最後一層目錄名稱依MySQL版本會有所不同)
會有根據主機記憶體大小不同有各個合適的範本可以使用:
my-huge.cnf
my-innodb-heavy-4G.cnf
my-large.cnf
my-medium.cnf
my-small.cnf
訂閱:
文章 (Atom)