linux數據備份恢復
A. linux備份和恢復
Author:LengF
Date:2011-07-05
一直很頭疼linux的備份問題,window的備份我們通常選擇ghost。可是linux怎麼備份呢?
其實他比Window方便也快捷,只要幾條命令就可以完成備份和恢復了。我們來看看如何實現?這種方法個人認為應該是通用於任何發行版本的。
1.備份linux系統
window系統在運行狀態下,我們是無法將文件拷貝出來的,那麼在linux下呢?她的文件結構式一種樹型結構。而且在系統運行的時候我們可以進行打包所有系統文件。特別要說的在linux的root賬戶具備系統上的任何操作,這也是為什麼要創建一個比較低級別的用戶許可權來防止系統誤操作導致系統崩潰的暈因了。下面看備份命令。
#
切換到root
sudo
su
#
進入系統根目錄
cd
/
#
執行打包命令
tar
cvpzf
linuxbackup.tgz
--exclude=/proc
--exclude=/lost+found
--exclude=/linuxbackup.tgz
--exclude=/mnt
--exclude=/sys
/
命令解釋:
tar:linux常用的打包程序
cvpzf:式tar的參數,c-創建新文檔
v-處理過程中輸出相關信息
p-表示保持相同的許可權
z-調用gzip來壓縮歸檔文件,與-x聯用時調用gzip完成解壓縮
f-對普通文件操作
linuxbackup.tgz:要打包成的文件名
--exclude=/proc:排除/proc目錄,不打包這個目錄,後面也同理,記得排除自身打包的文件名
/:表示打包linux根目錄所有文件,當然了排除的文件不包含在內
整個過程理解起來意思就是,創建一個新的文件名linuxbackup.tgz壓縮文件,它保存式從排除了指定目錄後的文件,並且保存原有的許可權設置,這里必須記下你排除的目錄,恢復的時候需要手動創建。具體哪些目錄要排除在外,這個根覺不同的環境和工作需要進行選擇就是了。執行後等待一定時間就可以了,將這個linuxbackup.tgz拷貝到其他地方即可,備份完成了。
重點指出:在打包過程中不要進行任何的操作,否則會修改某些文件,在備份完後tar會提示錯誤。恢復也是一樣。
2.恢復linux系統
按照上面的方式備份完系統就可以使用該方法恢復你的備份文件了。如果你的系統崩潰了無法進入系統那麼你可以藉助引導CD或者其他引導系統進入,如果你可以進入系統,首先拷貝該備份文件到/目錄下,然後執行下面命令進行恢復系統:
#提升到root
sudo
su
#
進入根目錄
cd
/
#
解壓恢復系統
tar
xvpfz
linuxbackup.tgz
-C
/
等執行完後,別急著重啟系統,要記得創建你在備份時候排除的目錄,手動創建,例如上面我們排除,我們需創建
mkdir
proc
mdkir
lost+found
mkdir
mnt
mkdir
sys
這個時候你就可以重啟系統了。恢復完成了。唉,終於可以不用每次系統壞了就重裝了
B. Linux系統備份恢復
用
dd
最省事。
用
tar
其實也可以,不過
tar
需要修改一些系統設置(分區格式化時會隨機生成一個
UUID
給分區,這個
UUID
變動會讓系統使用出問題,你要是知道怎麼保證系統啟動程序,tar
是最好的東西)。
Ghost
我反正是沒有在
Linux
下面使用成功過。你要是真想用
Linux
下面的企業級備份功能,有很多專業軟體可以選擇。
不過整個系統備份到另外一個計算機上,目前
Linux
都沒有特別准備。
Linux
安裝很方便,而且大家備份都是備份數據,很少有整個系統備份異地恢復的。
C. linux 備份的資料庫怎麼恢復
一、 使用mysql相關命令進行簡單的本地備份
1 mysqllmp命令
mysqlmp 是採用SQL級別的備份機制,它將數據表導成 SQL 腳本文件,在不同的 MySQL 版本之間升級時相對比較合適,這也是最常用的備份方法。
使用 mysqlmp進行備份非常簡單,如果要備份資料庫」 db_backup 」,使用命令:
#mysqlmp –u -p phpbb_db_backup > /usr/backups/mysql/db_backup2008-1-6.sql
還可以使用gzip命令對備份文件進行壓縮:
#mysqlmp db_backup | gzip > /usr/backups/mysql/ db_backup2008-1-6.sql.gz (備份後生成的sql不含建庫語句!)
只備份一些頻繁更新的資料庫表:
## mysqlmp sample_db articles comments links > /usr/backups/mysql/sample_db.art_comm_lin.2008-1-6.sql
上面的命令會備份articles, comments, 和links 三個表。
恢復數據使用命令:
#mysql –u -p db_backup </usr/backups/mysql/ db_backup2008-1-6.sql
注意使用這個命令時必須保證資料庫正在運行。
2 使用 SOURCE 語法
其實這不是標準的 SQL 語法,而是 mysql 客戶端提供的功能,例如:
# SOURCE /tmp/db_name.sql;
這里需要指定文件的絕對路徑,並且必須是 mysqld 運行用戶(例如 nobody)有許可權讀取的文件。
3 mysqlhot備份
mysqlhot 只能用於備份 MyISAM,並且只能運行在 linux 和Unix 和 NetWare 系統上。mysqlhot 支持一次性拷貝多個資料庫,同時還支持正則表達。以下是幾個例子:
#mysqlhot -h=localhost -u=goodcjh -p=goodcjh db_name /tmp
(把資料庫目錄 db_name 拷貝到 /tmp 下)
注意,想要使用 mysqlhot,必須要有 SELECT、RELOAD(要執行 FLUSH TABLES) 許可權,並且還必須要能夠有讀取 datadir/db_name 目錄的許可權。
還原資料庫方法:
mysqlhot 備份出來的是整個資料庫目錄,使用時可以直接拷貝到 mysqld 指定的 目錄 (在這里是 /usr/local/mysql/data/)目錄下即可,同時要注意許可權的問題,另外首先應當刪除資料庫舊副本如下例:
# /bin/rm -rf /mysql-backup/**//*old
關閉mysql 伺服器、復制文件、查詢啟動mysql伺服器的三個步驟:
# /etc/init.d/mysqld stop
Stopping MySQL: [ OK ]
# cp -af /mysql-backup/**//* /var/lib/mysql /
# /etc/init.d/mysqld start
Starting MySQL: [ OK ]
#chown -R nobody:nobody /usr/local/mysql/data/ (將 db_name 目錄的屬主改成 mysqld 運行用戶)
二、使用網路備份
將MYSQL數據放在一台計算機上是不安全的,所以應當把數據備份到區域網中其他Linux計算機中。假設Mysql伺服器IP地址是:192.168.1.3。區域網使用Linux的遠程計算機IP地址是192.168.1.4;類似於windows的網路共享,UNIX(Linux)系統也有自己的網路共享,那就是NFS(網路文件系統),在linux客戶端掛接(mount)NFS磁碟共享之前,必須先配置好NFS服務端。linux系統NFS服務端配置方法如下:
(1)修改 /etc/exports,增加共享目錄
/export/home/sunky 192.168.1.4(rw)
/export/home/sunky1 *(rw)
/export/home/sunky2 linux-client(rw)
註:/export/home/目錄下的sunky、sunky1、sunky2是准備共享的目錄,10.140.133.23、*、linux-client是被允許掛接此共享linux客戶機的IP地址或主機名。如果要使用主機名linux-client必須在服務端主機/etc/hosts文件里增加linux-client主機ip定義。格式如下:
192.168.1.4 linux-client
若修改/etc/export文件增加新的共享,應先停止NFS服務,再啟動NFS服務方能使新增加的共享起作用。使用命令exportfs -rv也可以達到同樣的效果。linux客戶端掛接(mount)其他linux系統或UNIX系統的NFS共享。這里我們假設192.168.1.4是NFS服務端的主機IP地址,當然這里也可以使用主機名,但必須在本機/etc/hosts文件里增加服務端ip定義。/export/home/sunky為服務端共享的目錄。如此就可以在linux客戶端通過/mnt/nfs來訪問其它linux系統或UNIX系統以NFS方式共享出來的文件了。
把MYSQL數據備份到使用Linux的遠程計算機需要在兩端都安裝NFS協議(Network File System),遠程NFS計算機安裝NFS協議後還要修改配置文件:/etc/exports,加入一行:
/usr/backups/mysql/ 192.168.1.4 (rw, no_root_squash)
表示將/usr/backups/mysql/目錄共享。這個目錄具有遠程root用戶讀寫許可權。保存NFS配置文件,然後使用命令:
#exportfs -a –r
然後重新啟動NFS服務:
#service nfsd start
遠程計算機設定後,在MYSQL伺服器/mnt 目錄下建立一個backup_share目錄:
#mkdir /mnt/backup_share
將遠程的Linux計算機的/usr/backups/mysql/目錄掛載到MYSQL伺服器的/mnt/backup_share目錄下:
# mount -t nfs 192.168.1.4:/usr/backups/mysql /mnt/backup_share
將目錄掛載進來後,只要進入/mnt/backup_share 目錄,就等於到了IP地址:192.168.1.4那部NFS 計算機的/usr/backups/mysql 目錄中。下面使用mysqlmp把「phpbb_db_backup」備份到遠程計算機:
# mysqlmp db_backup > /mnt/backup_share/ db_backup2008-1-6.sql
自動完成網路備份的方法:
Linux 伺服器上的程序每天都在更新 MySQL 資料庫,於是就想起寫一個 shell 腳本,結合 crontab,定時備份資料庫。建立一個shell腳本:sample_db_backup.sh
# At the very end the $(date +%F) 自動添加備份日期
mysqlmp -u <username> -p <password> -h <hostname> sample_db > /mnt/backup_share/sample_db.$(date +%F)
#un-mount the filesystem
umount /mnt/backup_share
# mount \u2013o soft 192.168.1.4:/archive /mnt/backup_share
說明:mount NFS伺服器的一個重要參數:hard (硬) mount或soft(軟)mount。
硬掛載: NFS客戶機會不斷的嘗試與NFS伺服器的連接(在後台,一般不會給出任何提示信息),直到掛載上為止。
軟掛載:會在前台嘗試與NFS伺服器的連接,是默認的連接方式。當收到錯誤信息後終止mount嘗試,並給出相關信息。
對於到底是使用硬掛載還是軟掛載的問題,這主要取決於你訪問什麼信息有關。例如你是想察看NFS伺服器的視頻文件時,你絕對不會希望由於一些意外的情況(如網路速度一下子變的很慢)而使系統輸出大量的錯誤信息,如果此時你用的是硬掛載方式的話,系統就會等待,直到能夠重新與NFS 伺服器建立連接傳輸信息。另外如果是非關鍵數據的話也可以使用軟掛載方式,如FTP一些數據等,這樣在遠程機器暫時連接不上或關閉時就不會掛起你的會話過程。
下面建立腳本文件許可權:chmod +x ./sample_db_backup.sh
然後使用將此腳本加到 /etc/crontab 定時任務中:
01 5 * * 0 mysql /home/mysql/ sample_db_backup.sh
好了,每周日凌晨 5:01 系統就會自動運行 sample_db_backup.sh 文件通過網路備份 MySQL 資料庫了。
三、實時恢復M y S Q L數據方法
在對MySQL數據和表格結構進行備份時,mysqlmp是一個非常有用的工具。然而,通常情況下,一般一天只備份一次,或者在一個特定的間隔備份一次。如果在剛備份完成的一段時間以內數據丟失,那麼這些數據很有可能無法恢復。有什麼方法可以對數據進行實時性地保護呢?事實上,現在有幾種方法都可以實現MySQL資料庫的實時保護。這里介紹其中一種,即使用二進制日誌進行數據恢復。
1 設置二進制日誌方法
要想從二進制日誌恢復數據,你需要知道當前二進制日誌文件的路徑和文件名。一般可以從選項文件(即my.cnf or my.ini,取決於你的系統)中找到路徑。如果未包含在選項文件中,當伺服器啟動時,可以在命令行中以選項的形式給出。啟用二進制日誌的選項為-- log-bin。要想確定當前的二進制日誌文件的文件名,輸入下面的MySQL語句:
# SHOW BINLOG EVENTS \G
2 最簡單的數據恢復
每天備份和運行二進制日誌的確是一個在MySQL伺服器中恢復數據的不錯方法。比如,可以每天在深夜使用mysqlmp對數據進行備份,如果某天在數據備份完成後的一段時間里,由於某種原因數據丟失,可以使用以下方法來對其進行恢復。首先,停止MySQL伺服器,然後使用以下命令重新啟動MySQL伺服器。該命令將保證是惟一可以訪問該資料庫伺服器的人:
# /etc/init.d/mysqld stop
Stopping MySQL: [ OK ]
# mysqld --socket=/tmp/mysql_restore.sock --skip-networking
這里, 一socket選項將為U n i x 系統命名一個不同的Socket文件。一旦伺服器處於獨占控制之下,就可以放心地對資料庫進行操作,而不用擔心在進行數據恢復的過程中有用戶嘗試訪問資料庫而導致更多的麻煩。進行恢復的第一個步驟是恢復晚上備份好的mp文件:
#mysql -u root -pmypwd --socket=/tmp/mysql_restore.sock < /var/backup/20080120.sql
該命令可以將資料庫的內容恢復至晚上剛剛完成備份的內容。要恢復mp文件創建後的資料庫事務處理, 可以使用mysqlbinlog工具。如果每天晚上進行備份操作時都對日誌進行flush操作,則可以使用以下命令行工具將整個二進制日誌文件進行恢復:
mysqlbinlog /var/log/mysql/bin.123456 \
| mysql -u root -pmypwd --socket=/tmp/mysql_restore.sock
3 針對某一時問點的恢復
對於MySQL 4.1.4,可以在mysqlbinlog語句中通過--start-date和--stop-date選項指定DATETIME格式的起止時間。假設用戶在2008-1-22上午10點執行的SQL語句刪除了一個大的數據表,則可以使用以下命令進行恢復:要想恢復表和數據,你可以恢復前晚上的備份,並輸入:
#mysqlbinlog --stop-date="2008-1-22 9:59:59"
/var/log/mysql/bin.123456 |
mysql -u root -pmypwd \
--socket=/tmp/mysql_restore.sock
#mysql -u root -pmypwd
該語句將恢復所有給定一stop-date日期之前的數據。如果在執行某SQL語句數小時之後才發現執行了錯誤操作,那麼可能還需要恢復之後輸入的一些數據。這時, 也可以通過mysqlbinlog來完成該功能:
#mysqlbinlog --start-date="2008-1-22 10:01:00" \
/var/log/mysql/bin.123456 \
| mysql -u root -pmypwd \
--socket=/tmp/mysql_restore.sock
#mysql -u root -pmypwd
在該行中,從上午10:01登錄的SQL語句將運行。組合執行前夜的轉儲文件和mysqlbinlog的兩行可以將所有數據恢復到上午10:00前一秒鍾。你應檢查日誌以確保時間確切。
4 使用Position進行恢復
也可以不指定日期和時間,而使用mysqlbinlog的選項--start-position和--stop-position來指定日誌位置。它們的作用與起止日選項相同,不同的是給出了從日誌起的位置號。使用日誌位置是更准確的恢復方法,特別是當由於破壞性SQL語句同時發生許多事務的時候。要想確定位置號,可以運行mysqlbinlog尋找執行了不期望的事務的時間范圍,但應將結果重新指向文本文件以便進行檢查。操作命令為:
mysqlbinlog --start-date="2005-04-20 9:55:00" --stop-date="2005-04-20 10:05:00"
/var/log/mysql/bin.123456 > /tmp/mysql_restore.sql
該命令將在/tmp目錄創建小的文本文件,將顯示執行了錯誤的SQL語句時的SQL語句。你可以用vi或者gedit文本編輯器打開該文件,尋找你不要想重復的語句。如果二進制日誌中的位置號用於停止和繼續恢復操作,應進行注釋。用log_pos加一個數字來標記位置。使用位置號恢復了以前的備份文件後,你應從命令行輸入下面內容:
mysqlbinlog --stop-position="368312" /var/log/mysql/bin.123456
| mysql -u root -pmypwd
mysqlbinlog --start-position="368315" /var/log/mysql/bin.123456
| mysql -u root -pmypwd
上面的第1行將恢復到停止位置為止的所有事務。下一行將恢復從給定的起始位置直到二進制日誌結束的所有事務。因為mysqlbinlog的輸出包括每個SQL語句記錄之前的SET TIMESTAMP語句,恢復的數據和相關MySQL日誌將反應事務執行的原時間。
D. Linux怎麼備份與還原
本人每次對操作系統更新後都做一次系統備份,我的做法是:
1、在保存備份文件的目錄 xxx 下建立一個文件 backup.sh,其內容是:
tar -zcf bin.tar.gz /bin
tar -zcf boot.tar.gz /boot
tar -zcf dev.tar.gz /dev
tar -zcf etc.tar.gz /etc
tar -zcf lib32.tar.gz /lib32
tar -zcf lib64.tar.gz /lib64
tar -zcf lib.tar.gz /lib
tar -zcf opt.tar.gz /opt
tar -zcf sbin.tar.gz /sbin
tar -zcf selinux.tar.gz /selinux
tar -zcf srv.tar.gz /srv
tar -zcf var.tar.gz /var
tar -zcf usr.tar.gz /usr
2、在需要備份的時候進入到保存備份內容的目錄執行一次命令: sh backup.sh
3、在保存備份文件的目錄 xxx 下建立一個叫 restore.sh 的文件,其內容如下:
tar -zxf /mnt/xxx/bin.tar.gz
tar -zxf /mnt/xxx/boot.tar.gz
tar -zxf /mnt/xxx/dev.tar.gz
tar -zxf /mnt/xxx/etc.tar.gz
tar -zxf /mnt/xxx/lib32.tar.gz
tar -zxf /mnt/xxx/lib64.tar.gz
tar -zxf /mnt/xxx/lib.tar.gz
tar -zxf /mnt/xxx/opt.tar.gz
tar -zxf /mnt/xxx/sbin.tar.gz
tar -zxf /mnt/xxx/selinux.tar.gz
tar -zxf /mnt/xxx/srv.tar.gz
tar -zxf /mnt/xxx/var.tar.gz
tar -zxf /mnt/xxx/usr.tar.gz
4、如果需要系統恢復,我就用光碟啟動,mount 原來的根目錄為 yyy,接著 mount 保存備份文件的目錄為 xxx,接著進入到 /mnt/yyy,並在此下達命令: sh /mnt/xxx/restore.sh
說明:
(1)、備份和恢復需要1個多小時,這個時間根據你電腦的CPU速度和硬碟轉速會有所不同。
(2)、上面備份與恢復沒有顧及 /home 目錄和 /root 目錄,因為我的系統主要是給學生做練慣用的,那兩個目錄的內容沒有意義。在實際工作中,可能這兩個目錄才是最重要的,你可以模仿著別的目錄添加到 backup.sh 和 restore.sh 文件中去,甚至別的目錄都不備份(以便節約備份時間)就備份這兩個目錄。
E. Linux遷移備份還原
裸機恢復的准備,
裸機恢復需要從可移動介質如CD、USBDisk上啟動一個診斷系統。
裸機恢復的過程:
1、LiveCD引導系統,
2、驅動硬體設備、載入備份媒介、存儲設備並恢復硬碟分區,
3、連接備份媒介,
4、恢復操作系統數據到硬碟分區,
5、恢復其他系統設置,
6、重起系統至硬碟引導,
驗證恢復成功。
轉載,僅供參考。
F. linux啟動失敗 備份恢復模式下會清空數據嗎
不會。linux系統備份恢復模式下只會刪除你沒有進行備份的數據,其他linux系統備份的數據將會被恢復,不會清空你的所有數據。
G. linux伺服器數據恢復 Linux伺服器數據丟失的恢復方法
雖說現在很多的用戶都在使用windows伺服器,但是,對於一些企業來說,還是更為喜歡用Linux伺服器。不過,不管是使用何種伺服器,都有可能會出現數據丟失的情況的。
導致出現伺服器數據丟失的情況是有很多的,一些常用的情況有誤刪除文件、誤格式化文件、誤重裝系統、黑客病毒等,而出現這些情況的話,我們可以藉助數據恢復軟體來進行數據恢復。以下是頂尖數據恢復軟體的使用教程:
1、用戶首先需要下載安裝頂尖數據恢復軟體。
2、安裝好後,雙擊打開軟體,軟體界面如下:
3、通過軟體界面,能夠看到有六個功能模塊,用戶可以將滑鼠移動到模塊上,查看該模塊的功能,根據實際情況進行選擇,若是無法確定,即可直接點擊「萬能恢復」。
4、之後選擇需要恢復的分區或者是物理設備,再點擊「下一步」。
5、軟體將對該分區進行掃描,全盤掃描所需要的時間會比較長,耐性等待即可。
6、在掃描結果中,勾選出自己想要恢復的數據,點擊「下一步」。
7、為恢復出來的文件選擇一個新的存儲路徑,點擊「下一步」即可開始恢復。
Linux伺服器數據丟失,通過該方法,即能夠恢復數據。平時最好還是將重要的文件進行備份處理,這樣在遇到數據丟失的情況的話,也不至於太過慌亂。
H. linux 系統如何備份與恢復
Linux 一般都不是備份系統,而是只備份數據。
系統重裝一下就行了。如果是為了部署另外安裝的軟體,這種另外安裝的軟體大家一般習慣裝到 /usr/local 裡面,之後只把這個目錄裡面的程序復制過去。一般情況下,只要這個軟體沒有對系統其他地方需要改的東西(一般伺服器用也沒有),復制過去後就直接可以用了。頂多需要重新設置一下和系統相關的設置。
I. Linux裡面系統如何備份
對於備份和恢復來說,Linux提供了諸如tar、cpio、 mp等工具來實現。
下面是一個簡單的使用該工具進行數據備份的例子:
tar czvf - /root/code > /tmp/code_bak.tgz (將/root/code目錄下的所有程序文件打包備份到/tmp/code_bak.tgz)
tar xzvf /tmp/code_bak.tgz /root/code (將備份的目錄文件恢復到指定目錄)
J. Linux系統下如何備份還原ORACLE資料庫,在同一台機器上,想還原到以前的備份
如果是同一個資料庫實例,直接用EXPDP導出的DMP文件是不可以恢復的。可以DBCA新建一個資料庫實例,然後用IMPDP指定DMP文件導入就好了。