文件的基本管理和XFS文件系統備份恢復
4.1 Linux系統目錄結構和相對/絕對路徑
4.1.1系統目錄結構
在WIN系統中,查看文件先進入相應的盤符,然後進入文件目錄
在WIN中,它是多根 c:\ d:\ e:\
Linux只有一個根目錄
使用tree命令查看linux目錄結構,這個命令默認是沒有安裝的,需要手工安裝一下
[root@xuegod63 ~]# mount /dev/sr0 /media/
mount: /dev/sr0 寫保護,將以只讀方式掛載
[root@xuegod63 ~]# rpm -ivh /media/Packages/tree-1.6.0-10.el7.x86_64.rpm
查看/tmp目錄結構
[root@xuegod63 ~]# tree /tmp/
查看根下有哪些文件:
目 錄 |
說 明 |
/ |
處於linux系統樹形結構的最頂端,它是linux文件系統的入口,所有的目錄、文件、設備都在 / 之下 |
/bin |
bin是Binary的縮寫。常用的二進制命令目錄。比如 ls、cp、mkdir、cut等;和/usr/bin類似,一些用戶級gnu工具 |
/boot |
存放的系統啟動相關的文件,例如:kernel.grub(引導裝載程序) |
/dev |
dev是Device的縮寫。設備文件目錄,比如聲卡、磁盤……在Linux中 一切都被看做文件。終端設備、磁盤等等都被看做文件 設備文件: /dev/sda,/dev/sda1,/dev/tty1,/dev/tty2,/dev/pts/1, /dev/zero, /dev/null, /dev/ |
/etc |
常用系統及二進制安裝包配置文件默認路徑和服務器啟動命令目錄 passwd 用戶信息文件 shadow 用戶密碼文件 group 存儲用戶組信息 fstab 系統開機啟動自動掛載分區列表 hosts 設定用戶自己的IP與主機名對應的信息 |
/etc |
常用系統及二進制安裝包配置文件默認路徑和服務器啟動命令目錄 passwd 用戶信息文件 shadow 用戶密碼文件 group 存儲用戶組信息 fstab 系統開機啟動自動掛載分區列表 hosts 設定用戶自己的IP與主機名對應的信息 |
/home |
普通用戶的家目錄默認存放目錄 |
/lib |
庫文件存放目錄,函數庫目錄 |
/lost+found 只在centos6中有 |
默認為空,被FSCK(file system check用來檢查和維護不一致的文件系統。若系統掉電或磁盤發生問題,可利用fsck命令對文件系統進行檢查)用來放置零散文件(沒有名稱的文件) 當系統非法關機後,這裏就會存放一些文件。 在centos6版本下,每個分區的掛載點下會有些目錄 |
/mnt /media |
一般用來臨時掛載存儲設備的掛載目錄,比如有cdrom、U盤等目錄 在CENTOS7中會掛載到/run下面 |
/opt |
表示的是可選擇的意思,有些軟件包也會被安裝在這裏 |
/proc |
操作系統運行時,進程(正在運行中的程序)信息及內核信息(比如cpu、硬盤分區、內存信息等)存放在這裏。/proc目錄是偽裝的文件系統proc的掛載目錄,proc並不是真正的文件系統。因此,這個目錄是一個虛擬的目錄,它是系統內存的映射,我們可以通過直接訪問這個目錄來獲取系統信息。也就是說,這個目錄的內容不在硬盤上而是在內存裏 查看咱們的CPU信息 cat /proc/cpuinfo |
/sys |
系統目錄,存放硬件信息的相關文件 |
/run |
運行目錄,存放的是系統運行時的數據,比如進程的PID文件 |
/srv |
服務目錄,存放的是我們本地服務的相關文件 |
/sbin |
大多數涉及系統管理的命令都存放在該目錄中,它是超級權限用戶root的可執行命令存放地,普通用戶無權限執行這個目錄下的命令,凡是目錄sbin中包含的命令都是root權限才能執行的 |
/tmp |
該目錄用於存放臨時文件,有時用戶運行程序的時候,會產生一些臨時文件。/tmp就是用來存放臨時文件的。/var/tmp目錄和該目錄的作用是相似的,不能存放重要數據,它的權限比較特殊 [root@xuegod63 ~]# ls –ld /tmp drwxrwxrwt 10 root root 12288 Oct 3 20:45 /tmp/ à粘滯位(sticky bit)目錄的sticky位表示這個目錄裏的文件只能被owner和root刪除 |
/var |
系統運行和軟件運行時產生的日誌信息,該目錄的內容是經常變動的,存放的是一些變化的文件。比如/var下有/var/log目錄用來存放系統日誌的目錄,還有mail、/var/spool/cron |
/usr |
存放應用程序和文件, |
/lib /lib64 都在/usr/目錄下 |
這個目錄裏存放著系統最基本的動態鏈接共享庫,包含許多被/bin/和/sbin/中的程序使用的庫文件,目錄/usr/lib/中含有更多用於用戶程序的庫文件。作用類似於windows裏的DLL文件,幾乎所有的應用程序都需要用到這些共享庫 註:lib***.a是靜態庫 靜態庫在編譯時被加載到二進制文件中 簡單的說:這些庫是為了讓你的程序能夠正常編譯運行的 其實類似於WIN中.dll文件,幾乎所有的應用程序都需要用到這些共享庫 |
4.1.2 絕對路徑和相對路徑
路徑:在我們平時使用計算機時要找到需要的文件就必須知道文件的位置,而表示文件的位置的方式就是路徑
絕對路徑:在Linux中,絕對路徑是從”/”開始的,比如/usr、/etc/passwd。如果一個路徑是從根(/)開始的,它一定是絕對路徑.
相對路徑:相對路徑是以 . 或 .. 開始的,
[root@xuegod63 etc]# pwd #判斷用戶當前所處的位置
絕對路徑: 從/開始的路徑 /home/mk
相對路徑: 相對於當前目錄開始,a.txt ./a.txt ../miao/b.txt 當前目錄在/etc
[root@xuegod63 ~]# cd /etc/
[root@xuegod63 etc]# ll passwd
-rw-r--r-- 1 root root 2116 11月 16 14:57 passwd
[root@xuegod63 etc]# ll /etc/passwd
-rw-r--r-- 1 root root 2116 11月 16 14:57 /etc/passwd
4.2 文件的管理
文件管理方式有多種:
改變目錄: cd
創建/修改/移動/刪除: touch mkdir mv vi rm cp
4.2.1
創建文件和文件夾
命令之:touch
作用:常用來創建空文件,如果文件存在,則修改這個文件的時間
補充:文件的三種時間
[root@xuegod63 ~]# ll /etc/passwd #查看文件修改的時間
-rw-r--r-- 1 root root 2116 11月 16 14:57 /etc/passwd
[root@xuegod63 ~]# stat /etc/passwd #查看文件屬性(其中包括文件時間屬性)
文件:"/etc/passwd"
大小:2116 塊:8 IO 塊:4096 普通文件
設備:803h/2051dInode:9401663 硬鏈接:1
權限:(0644/-rw-r--r--) Uid:( 0/ root) Gid:( 0/ root)
最近訪問:2017-11-16 14:57:39.923177258 +0800
最近更改:2017-11-16 14:57:39.397177256 +0800
最近改動:2017-11-16 14:57:39.409177256 +0800
註:
訪問時間:atime 查看內容 cat a.txt
修改時間:mtime 修改內容 vim a.txt
改變時間:ctime 文件屬性,比如權限 change time。 chmod +x a.sh
語法:touch 文件名
[root@xuegod63 ~]# cd /opt/
[root@xuegod63 opt]# touch a.txt
[root@xuegod63 opt]# touch file1 file2
[root@xuegod63 opt]# touch file{6..20} #創建file6到file20的文件
[root@xuegod63 opt]# ls
a.txt file10 file12 file14 file16 file18 file2 file6 file8 rh
file1 file11 file13 file15 file17 file19 file20 file7 file9
[root@xuegod63 opt]# touch -d "20181019 21:30" xuegod.txt
[root@xuegod63 opt]# ll xuegod.txt
-rw-r--r-- 1 root root 0 10月 19 2018 xuegod.txt
4.2.2 使用vim和重定向創建一個新文件
用vim命令創建一個新文件
[root@xuegod63 mnt]# vim xuegod-1.txt
用重定向創建一新文件
[root@xuegod63 mnt]#echo aaa > xuegod.txt
4.2.2 命令之:mkdir
作用:創建目錄
語法:mkdir (選項) 文件名
例:
[root@xuegod63 opt]# mkdir dir1
[root@xuegod63 opt]# mkdir dir2 dir3 /home/dir4
[root@xuegod63 opt]# ls /home/
dir4 mk
[root@xuegod63 opt]# mkdir /tmp/a/b/c
mkdir: 無法創建目錄"/tmp/a/b/c": 沒有那個文件或目錄
[root@xuegod63 opt]# mkdir -p /tmp/a/b/c #在創建一個目錄的時候,如果這個目錄的上一級不存在的話,要加參數-p
[root@xuegod63 opt]# ls /tmp/a/b/
c
4.2.2 刪除文件和目錄
用到的命令:rm
作用:可以刪除一個目錄中的一個或多個文件或目錄,對於鏈接文件,只是刪除整個鏈接文件,而原文件保持不變的
語法:rm (選項) 處理對象
選項:
-f 強制刪除,沒有提示
-r 刪除目錄
例子:
[root@xuegod63 opt]# rm -rf a.txt
[root@xuegod63 opt]# rm -rf a.txt dir
[root@xuegod63 opt]# rm -rf file*
rm -rf (慎用,一定要在刪除以前確定一下所在目錄,防止誤刪除重要數據)
4.2.3 復制文件
命令:cp 源文件/目錄 目錄文件/目錄
選項:-R/r:遞歸處理,將指定目錄下的所有文件與子目錄一並處理
例子:
[root@xuegod63 ~]# cp /etc/passwd /opt/ #復制文件
[root@xuegod63 ~]# cp -r /boot/grub /opt/ #復制目錄
4.2.4 移動文件
[root@xuegod63 opt]# mv passwd dir1
[root@xuegod63 opt]# mv xuegod.txt dir1/a.txt #在移動文件的時候支持改名操作
4.3 查看文件
4.3.1 命令之:cat
語法:cat 文件名
作用:查看文件內容,一次顯示整個文件的內容
例子: [root@xuegod63 ~]# cat /etc/passwd
4.3.2 命令之:more
作用:以分頁形式顯示文件內容
語法:more + 文件名
說明: 按下回車刷新一行,按下空格刷新一屏,輸入q鍵退出
4.3.3 命令之:less
作用:和more功能一樣
語法:less +文件名
說明:linux中more與less的區別
more:不支持後退,但幾乎不需要加參數,空格鍵是向下翻頁,Enter鍵是向下翻一行,在不需要後退的情況下比較方便
less:支持前後翻滾,既可以向上翻頁(pageup按鍵),也可以向下翻頁(pagedown按鍵)。,空格鍵是向下翻頁,Enter鍵是向下翻一行
4.3.4 命令之:head
作用: 用於顯示文件的開頭的內容。在默認情況下,head命令顯示文件的頭10行內容
語法:head(選項)文件名
參數: -n 顯示從文件頭開始的行數
[root@xuegod63 opt]# head /etc/passwd
[root@xuegod63 opt]# head -n 3 /etc/passwd #顯示前3行
4.3.5 命令之:tail
作用: 用於顯示文件中的尾部內容。默認在屏幕上顯示指定文件的末尾10行
語法:tail (選項)文件名
參數:
-n 顯示文件尾部多少行的內容(n為數字)
-f 動態顯示數據(不關閉),常用來查看日誌
[root@xuegod63 ~]# tail -n 3 /var/log/secure #查看最後3行記錄
[root@xuegod63 ~]# tail -f /var/log/secure #在一個終端執行此命令動態查看文件內容
[root@xuegod63 ~]# ssh [email protected] #在另一個終端遠程登錄Linux,登錄成功後
[root@xuegod63 ~]# tail -f /var/log/secure #可以動態查看到登錄成功的日誌
Nov 17 00:08:32 xuegod63 sshd[2924]: Accepted password for root from 192.168.1.63 port 39904 ssh2
4.4 實戰:xfs文件系統的備份和恢復
XFS提供了 xfsdump 和 xfsrestore 工具協助備份XFS文件系統中的數據。xfsdump 按inode順序備份一個XFS文件系統。
centos7選擇xfs格式作為默認文件系統,而且不再使用以前的ext,仍然支持ext4,xfs專為大數據產生,每個單個文件系統最大可以支持8eb,單個文件可以支持16tb,不僅數據量大,而且擴展性高。還可以通過xfsdump,xfsrestore來備份和恢復。
與傳統的UNIX文件系統不同,XFS不需要在備份前被卸載;對使用中的XFS文件系統做備份就可以保證鏡像的一致性。XFS的備份和恢復的過程是可以被中斷然後繼續的,無須凍結文件系統。xfsdump 甚至提供了高性能的多線程備份操作——它把一次dump拆分成多個數據流,每個數據流可以被發往不同的目的地
首先了解一下xfsdump的備份級別有以下兩種,默認為0(即完全備份)
0 級別代表: 完全備份
1 到9級別代表: 增量備份
擴展:
完全備份:每次都把指定的備份目錄完整的復制一遍,不管目錄下的文件有沒有變化;
增量備份:每次將之前(第一次、第二次、直到前一次)做過備份之後有變化的文件進行備份;
差異備份:每次都將第一次完整備份以來有變化的文件進行備份。
4.4.1 環境準備
實驗環境:
系統CENTOS7.2 添加一塊虛擬硬盤(準備一個測試分區)
正常使用一塊磁盤過程如下:
添加磁盤大小:20G à分區à格式化à掛載
對新添加的硬盤進行格式化:
[root@xuegod63 ~]# fdisk /dev/sdb#指定分區的設備
歡迎使用 fdisk (util-linux 2.23.2)。
更改將停留在內存中,直到您決定將更改寫入磁盤。
使用寫入命令前請三思。
Device does not contain a recognized partition table
使用磁盤標識符 0x06d5a427 創建新的 DOS 磁盤標簽。
命令(輸入 m 獲取幫助):n #創建一個新的分區
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p #創建一個主分區
分區號 (1-4,默認 1):
起始 扇區 (2048-41943039,默認為 2048):
將使用默認值 2048
Last 扇區, +扇區 or +size{K,M,G} (2048-41943039,默認為 41943039):+1G #指定分區大小
分區 1 已設置為 Linux 類型,大小設為 1 GiB
命令(輸入 m 獲取幫助):p #打印分區表
磁盤 /dev/sdb:21.5 GB, 21474836480 字節,41943040 個扇區
Units = 扇區 of 1 * 512 = 512 bytes
扇區大小(邏輯/物理):512 字節 / 512 字節
I/O 大小(最小/最佳):512 字節 / 512 字節
磁盤標簽類型:dos
磁盤標識符:0x06d5a427
設備 Boot Start End Blocks Id System
/dev/sdb1 2048 2099199 1048576 83 Linux
命令(輸入 m 獲取幫助):w #保存
The partition table has been altered!
Calling ioctl() to re-read partition table.
正在同步磁盤。
[root@xuegod63 ~]# ls /dev/sdb*
/dev/sdb /dev/sdb1
使用新的分區,格式化分區,並進行掛載
[root@xuegod63 ~]# mkfs.xfs /dev/sdb1
[root@xuegod63 ~]# mkdir /sdb1 #創建掛載點
[root@xuegod63 ~]# mount /dev/sdb1 /sdb1 #掛載
準備備份測試文件
[root@xuegod63 ~]# cd /sdb1/
[root@xuegod63 sdb1]# cp /etc/passwd ./
[root@xuegod63 sdb1]# mkdir test
[root@xuegod63 sdb1]# touch test/a
[root@xuegod63 sdb1]# tree /sdb1/
[root@xuegod63 sdb1]# tree /sdb1/
/sdb1/
├── passwd
└── test
└── a
4.4.2 備份
1、備份整個分區。 (這個功能就像是虛擬機的快照,服務器被黑後,進行快速恢復)
xfsdump -f 備份存放位置 要備份路徑或設備文件
註意:備份的路徑這裏不能寫成/sdb1/。 可以是/dev/sdb1 或/sdb1
[root@xuegod63 sdb1]# xfsdump -f /opt/dump_sdb1 /dev/sdb1
xfsdump: using file dump (drive_simple) strategy
xfsdump: version 3.1.4 (dump format 3.0) - type ^C for status and control
========== dump label dialog ==============================
please enter label for this dump session (timeout in 300 sec)
-> dump_sdb1 指定備份會話標簽
session label entered: "dump_sdb1"
--------------------------------- end dialog ---------------------------------
xfsdump: level 0 dump of xuegod63.cn:/sdb1
xfsdump: dump date: Fri Nov 17 12:24:53 2017
xfsdump: session id: b5a25fcd-d43d-4308-bf29-142066f89d9a
xfsdump: session label: "dump_sdb1"
xfsdump: ino map phase 1: constructing initial dump list
xfsdump: ino map phase 2: skipping (no pruning necessary)
xfsdump: ino map phase 3: skipping (only one dump stream)
xfsdump: ino map construction complete
xfsdump: estimated dump size: 25856 bytes
============== media label dialog =============================
please enter label for media in drive 0 (timeout in 300 sec)
-> sdb1 指定設備標簽,就是對要備份的設備做一個描述
media label entered: "sdb1"
--------------------------------- end dialog --------------------------------
xfsdump: creating dump session media file 0 (media 0, file 0)
xfsdump: dumping ino map
xfsdump: dumping directories
xfsdump: dumping non-directory files
xfsdump: ending media file
xfsdump: media file size 24544 bytes
xfsdump: dump size (non-dir files) : 2592 bytes
xfsdump: dump complete: 46 seconds elapsed
xfsdump: Dump Summary:
xfsdump: stream 0 /opt/dump_sdb1 OK (success)
xfsdump: Dump Status: SUCCESS
2、 指定備份時免交互操作,方便後期做定時備份
[root@xuegod63 sdb1]# xfsdump -f /opt/dump_passwd /sdb1 -L dump_passwd -M media1
-L :xfsdump 紀錄每次備份的 session 標頭,這裏可以填寫針對此文件系統的簡易說明
-M :xfsdump 可以紀錄儲存媒體的標頭,這裏可以填寫此媒體的簡易說明
3、指定只備份分區中某個目錄
參數:-s 文件路徑 只對指定的文件進行備份,-s指定時,路徑寫的是相對路徑(-s可以是文件或目錄)
[root@xuegod63 sdb1]# xfsdump -f /opt/dump_grub2 -s grub2/grub.cfg /boot -L dump_grub2 -M boot-sda1
4、查看備份信息與內容
備份成功後,我們就可以在/var/lib/xfsdump/inventory目錄下看到生成的檔案信息
[root@xuegod63 opt]# xfsdump -I(字母大寫i)
測試恢復:先刪除之前創建的內容
[root@xuegod63 sdb1]# ls
passwd test
[root@xuegod63 sdb1]# pwd
/sdb1
[root@xuegod63 sdb1]# rm -rf ./*
4.4.3 文件系統恢復
語法:xfsrestore -f 指定恢復文件的位置 指定存放恢復後的文件的路徑
[root@xuegod63 opt]# xfsrestore -f /opt/dump_sdb1 /sdb1
查看恢復情況
[root@xuegod63 ~]# ls /sdb1/
恢復單個文件如下:
[root@xuegod63 ~]# mkdir /var/test/
[root@xuegod63 ~]# xfsrestore -f /opt/dump_grub2 -s grub2/grub.cfg /var/test/
[root@xuegod63 ~]# xfsrestore -f /opt/dump_grub2 -s grub2 /var/test/ #恢復目錄
註:
使用 xfsdump 時,請註意下面下面的幾個限制:
1、xfsdump 不支持沒有掛載的文件系統備份!所以只能備份已掛載的!
2、xfsdump 必須使用 root 的權限才能操作 (涉及文件系統的關系)
3、xfsdump 只能備份 XFS 文件系統
4、xfsdump 備份下來的數據 (檔案或儲存媒體) 只能讓 xfsrestore 解析
5、xfsdump 是透過文件系統的 UUID 來分辨各個備份檔的,因此不能備份兩個具有相同 UUID 的文件系統
4.4.4 增量備份
概念
增量備份是指在一次全備份或上一次增量備份後,以後每次的備份只需備份與前一次相比增加或者被修改的文件。這就意味著,第一次增量備份的對象是進行全備後所產生的增加和修改的文件;第二次增量備份的對象是進行第一次增量備份後所產生的增加和修改的文件,以此類推。
優缺點
優點:沒有重復的備份數據,因此備份的數據量不大,備份所需的時間很短。
缺點:數據恢復相對比較麻煩,它需要上一次全備份和所有增量備份的內容才能夠完全恢復成功,並且它們必須沿著從全備份到依次增量備份的時間順序逐個反推恢復,因此可能會延長的恢復時間
實戰: 增量備份文件系統
準備一個備份目錄進行備份
[root@xuegod63 sdb1]# tree /sdb1
/sdb1/
├── passwd
└── test
└── a
對上面的內容進行第一次全備
[root@xuegod63 sdb1]# xfsdump -f /opt/test-full /sdb1 -L test-full -M media0
增加一些內容,然後進行第1次增量備份
[root@xuegod63 ~]# touch /sdb1/1.txt /sdb1/2.txt
[root@xuegod63 ~]# tree /sdb1/
/sdb1/
├── 1.txt
├── 2.txt
├── passwd
└── test
└── a
[root@xuegod63 sdb1]# xfsdump -l 1 -f /opt/test-back1 /sdb1 -L test-bak1 -M media0
-l <level> 做一個等級為1的備份
再次增加內容,然後進行level 2級別的增量備
[root@xuegod63 sdb1]# touch /sdb1/test/a.txt /sdb1/test/b.txt
[root@xuegod63 ~]# tree /sdb1/
/sdb1/
├── 1.txt
├── 2.txt
├── passwd
└── test
├── a
├── a.txt
└── b.txt
[root@xuegod63 sdb1]# xfsdump -l 2 -f /opt/test-back2 /sdb1 -L test-bak2 -M media0
[root@xuegod63 ~]# rm -rf /sdb1/* #刪除所有數據
現在進行恢復,要想恢復全部全部數據,包括新添加的文件,如何恢復?
步驟:
1、先恢復完全備份
2、情況1: 恢復最後一次增量備份(如果兩次增量備份都是1級的,所以只需要恢復最後一個增量就可以了。
3、情況2:如果你做的是第一次是1級備,第二次是2級備,那麽你在恢復的時候就需要先恢復完全備份,然後是1級備,最後是2級備)
[root@xuegod63 ~]# xfsrestore -f /opt/test-full /sdb1/
[root@xuegod63 ~]# xfsrestore -f /opt/test-back2 /sdb1/ #故意先恢復back2,查看
[root@xuegod63 ~]# tree /sdb1/ #查看,發現沒有1.txt ,2.txt
/sdb1/
├── passwd
└── test
├── a
├── a.txt
└── b.txt
[root@xuegod63 ~]# xfsrestore -f /opt/test-back1 /sdb1/
[root@xuegod63 ~]# tree /sdb1/
到此,數據恢復成功了。
文件的基本管理和XFS文件系統備份恢復