Linux-命令-磁盤管理

1、文件系統管理基本知識

(1)分區

  • 分區類型

    • 主分區:最多隻能有4個主分區
    • 擴展分區:用於擴展邏輯分區,擴展分區相當於一個主分區
      • 只能有一個,擴展分區加主分區最多隻能四個
      • 擴展分區中還可以劃分擴展分區
      • 擴展分區不能存儲數據和格式化(格式化就是將文件系統寫入分區)
      • 擴展分區必須再劃分爲邏輯分區才能使用
    • 邏輯分區:邏輯分區是在擴展分區中再劃分的
      • IDE硬盤:Linux最多支持59個邏輯分區
      • SCSI硬盤:Linux最多支持11個邏輯分區
  • 分區的設備名

    • 主分區:爲sda1~4

    • 擴展分區:同主分區

    • 邏輯分區:從sda5開始

    • 例子:假設有兩個主分區,一個擴展分區,在擴展分區裏有3個邏輯分區,則命名如下

      設備 設備名
      主分區1 /dev/sda1
      主分區2 /dev/sda2
      擴展分區 /dev/sda3
      邏輯分區1 /dev/sda5
      邏輯分區2 /dev/sda6
      邏輯分區3 /dev/sda7

(2)掛載

  • 掛載:就是將硬件設備的設備名和掛載點(即盤符,一個目錄)連接起來,通過訪問掛載點來訪問硬件設備
    • Windows中掛載是自動進行的,由系統自動分配盤符
    • Linux中所有存儲設備都必須掛載後才能使用(硬盤的掛載是自動進行的)

2、df

  • 全名:disk free

  • 用途:查看文件系統

  • 常用選項

    du [選項] [掛載點]
    
    • -a:顯示所有的文件系統,包括特殊文件系統
    • -h:同ls的-h選項
    • -T:顯示文件系統類型
    • -m:以MB爲單位,默認爲KB

3、du

  • 全名:disk usage

  • 用途:統計目錄或文件大小,一般用ls查看文件大小,du比df目錄更消耗資源

  • 常用選項

    du [選項] <目錄或文件>
    
    • -a:查看目錄下所有文件和子目錄大小,默認只顯示子目錄
    • -h
    • -s:只顯示總大小
  • 例子

[dream@172 test]$ ls
dir1  dir2  dir3  f1  f2
[dream@172 test]$ du
0	./dir1
0	./dir2
0	./dir3
0	.
[dream@172 test]$ du -a				# 也顯示文件大小
0	./dir1
0	./dir2
0	./dir3
0	./f1
0	./f2
0	.
[dream@172 test]$ du -sh ~		# 查看指定目錄總大小
162M	/home/dream
  • df和du的區別
    • du(面向文件)查看的佔用空間大小隻包括文件和目錄
    • df(面向文件系統)查看的佔用空間大小不僅包括文件和目錄,還包括被命令和程序佔用的空間,最常見的就是文件已經刪除,但是程序沒有釋放空間
    • 所以df看到的剩餘空間纔是真正的剩餘空間
  • 系統長期不重啓,會累積大量被進程佔用的空間和未釋放的空間,導致可用空間減少
  • du和df區別如下
[dream@172 test]$ df -h
文件系統                 容量  已用  可用 已用% 掛載點
/dev/mapper/centos-root  6.2G  4.7G  1.6G   75% /
devtmpfs                 897M     0  897M    0% /dev
tmpfs                    912M     0  912M    0% /dev/shm
tmpfs                    912M  9.1M  903M    1% /run
tmpfs                    912M     0  912M    0% /sys/fs/cgroup
/dev/sda1               1014M  179M  836M   18% /boot
tmpfs                    183M  4.0K  183M    1% /run/user/42
tmpfs                    183M   36K  183M    1% /run/user/1000
[dream@172 test]$ sudo du -sh /
[sudo] dream 的密碼:
du: 無法訪問"/proc/97543/task/97543/fd/4": 沒有那個文件或目錄
du: 無法訪問"/proc/97543/task/97543/fdinfo/4": 沒有那個文件或目錄
du: 無法訪問"/proc/97543/fd/4": 沒有那個文件或目錄
du: 無法訪問"/proc/97543/fdinfo/4": 沒有那個文件或目錄
du: 無法訪問"/run/user/1000/gvfs": 權限不夠
4.6G	/

# 可以看到du查看的大小比df小

4、mount

(1)基本使用

  • 全名:mount

  • 用途:用於掛載設備

  • 常用選項

    mount [-t 文件系統] [-L 卷標名] [-o 特殊選項] <設備文件名> <掛載點>
    
    • -t:指定掛載的類型,可以爲ext3、ext4、iso9660等文件系統

    • -L:掛載指定卷標的分區,而不是按照設備文件名掛載,也就是給分區起別名

    • -o:可以指定掛載的額外選項

    在這裏插入圖片描述

    • 比較重要的是remount和exec/noexec
  • 查看系統已有的掛載點

    dream:~ dream$ mount
    /dev/disk1s1 on / (apfs, local, journaled)
    devfs on /dev (devfs, local, nobrowse)
    /dev/disk1s4 on /private/var/vm (apfs, local, noexec, journaled, noatime, nobrowse)
    map -hosts on /net (autofs, nosuid, automounted, nobrowse)
    map auto_home on /home (autofs, automounted, nobrowse)
    /dev/disk2s1 on /Volumes/NO NAME (msdos, local, nodev, nosuid, noowners)	# u盤
    /dev/disk3s1 on /Volumes/Seagate Expansion Drive (ufsd_NTFS, local, nodev, nosuid, noowners)		# 移動硬盤
    
    • 可以看到我電腦的硬盤disk1s1的掛載點是根目錄
    • disk2s1是移動硬盤的設備名,可以看到該硬盤的掛載點是/Volumes/Seagate Expansion Drive,那麼我就可以通過訪問這個目錄來訪問我的移動硬盤
  • 依據配置文件/etc/fstab的內容,自動掛載

    mount -a
    
  • 修改掛載的執行權限,重新掛載設備

    [root@192 boot]$ vim hello.sh
    [root@192 boot]$ chmod 755 hello.sh 
    [root@192 boot]$ ./hello.sh 
    hello
    [root@192 boot]$ mount -o remount,noexec /boot
    [root@192 boot]$ ./hello.sh 
    -bash: ./hello.sh: 權限不夠							# 修改掛載的權限後,不能執行可執行文件
    [root@192 boot]$ mount -o remount,exec /boot
    [root@192 boot]$ ./hello.sh 					 # 改回來後,可以執行
    hello
    

(2)掛載u盤和光盤

  • 掛載光盤

    • 根目錄下有/mnt/media兩個目錄用於掛載(一般前者用於u盤,後者用於光盤)
    • 掛載點必須是空目錄
    • 光盤的設備名是cdrom\*或者sr*
    • 先創建一個空目錄,然後將設備掛載到該目錄上即可
  • 卸載命令umount

    umount <設備文件名或者掛載點>
    
    • Linux下必須卸載後才能正常取出光盤,u盤也是一樣
  • 掛載u盤

    • 掛載前先使用fdisk -l命令查看u盤設備文件名,之後的步驟和掛載光盤一樣
    • u盤的設備名爲sd*,sd後面跟a或b或c······,這要看電腦本身有幾塊硬盤,先把設備名分給電腦本身的硬盤,之後纔給u盤分配設備名
    • 注意u盤的兼容性(虛擬機默認設置是usb2.0)
    [dream@192 ~]$ sudo fdisk -l				# 查看u盤設備名
    ...
    磁盤 /dev/sdb:62.1 GB, 62109253632 字節,121307136 個扇區
    Units = 扇區 of 1 * 512 = 512 bytes
    扇區大小(邏輯/物理):512 字節 / 512 字節
    I/O 大小(最小/最佳):512 字節 / 512 字節
    磁盤標籤類型:dos
    磁盤標識符:0x00000000
    
       設備 Boot      Start         End      Blocks   Id  System
    /dev/sdb1              32   121307135    60653552    c  W95 FAT32 (LBA)
    [dream@192 ~]$ sudo umount /dev/sdb1			# 我的虛擬機是自動掛載的,我需要先卸載u盤
    [dream@192 ~]$ sudo mount /dev/sdb1 /mnt/sr_dream/
    [dream@192 ~]$ cd /mnt/sr_dream/
    [dream@192 sr_dream]$ ls						# 手動掛載後中文是亂碼
    ??    ?????                                   catsoop          System Volume Information
    ??    ??????                                  ??.docx          Ubuntu16.04+NS2.35+NAM+PT.zip
    ??    ????????                                DSP??            vimrcforme
    ???   ??1710-???-17211249-?????????????.pptx  FM?labview?      voicebox
    ????  201911200615.pdf                        JD51??(USB??)    win10??
    ????  ?????.7z                                labview??.rar    WindowsSupport
    ????  ?????.7z                                ?? - ??.mp3      workplacec
    ????  ?????.7z                                ??????????.pptx  ??????.xlsx
    ????  ????AM?FM??.zip                         ??????.pptx      xzj
    ????  C++??                                   Rigol
    [dream@192 ~]$ umount /dev/sdb1				# 卸載,看一下系統自動掛載的掛載點
    [dream@192 ~]$ mount
    ...
    # 可以看到系統自動掛載掛載的是/run/media/dream/025E-CAC1 type vfat
    /dev/sdb1 on /run/media/dream/025E-CAC1 type vfat (rw,nosuid,nodev,relatime,uid=1000,gid=1000,fmask=0022,dmask=0077,codepage=437,iocharset=ascii,shortname=mixed,showexec,utf8,flush,errors=remount-ro,uhelper=udisks2)
    [dream@192 ~]$ cd /run/media/dream/025E-CAC1 type vfat
    [dream@192 025E-CAC1]$ ls						# 系統自動掛載的就是正常的
    201911200615.pdf               歌曲
    catsoop                        紅外模塊
    C++作業                        課件
    DSP答辯                        模電相關
    FM(labview)                  數電相關
    JD51資料(USB新版)              數據手冊
    labview講義.rar                通信1710-王敬一-17211249-超材料及隱身斗篷技術的研究.pptx
    Rigol                          通信原理研學.pptx
    System Volume Information      通原實驗AM和FM材料.zip
    Ubuntu16.04+NS2.35+NAM+PT.zip  圖片.docx
    vimrcforme                     未命名文件夾
    voicebox                       研學答辯(趨膚效應).pptx
    win10文件                      趙雷 - 成都.mp3
    WindowsSupport                 值班室電話表.xlsx
    workplacec                     中期答辯
    xzj                            綜合實驗二.7z
    陳老師講義                     綜合實驗三.7z
    大創相關                       綜合實驗一.7z
    大三上                         作業
    電子設計競賽資料
    [dream@192 catsoop]$ cd ~
    [dream@192 ~]$ sudo umount /dev/sdb1
    
    • 掛載出現亂碼,重新掛載調整一下編碼即可

(3)支持NTFS文件系統

  • Linux默認不支持NTFS,解決辦法有兩個
    • 重新編譯內核,加入NTFS驅動
    • 使用第三方軟件NTFS-3G,教學視頻:兄弟連Linux教學

5、tar

  • 全名:tar

  • 用途:打包、壓縮目錄

    • 打包:把多個文件或目錄打成一個包(即一個文件),方便對這個包進行壓縮
      Linux下包的後綴名爲.tar
    • 壓縮:使用某種算法將一個大文件的容量減小,壓縮是對文件的操作,在Linux下一般先打包文件,再對
      包文件進行壓縮,
  • 常用選項

    tar [選項] <打包或壓縮後文件名> <目錄>
    
    • -c:打包
    • -x:解包
    • -z:和-c同時使用時爲壓縮,和-x同時使用爲解壓縮,壓縮包爲.gz
    • -j:和-c同時使用時爲壓縮,和-x同時使用爲解壓縮,壓縮包爲bz2
    • -f:指定文件名
    • -v:顯示詳細信息
  • 壓縮後文件格式:.tar.gz

  • tar基本使用,打包和解包

[dream@172 test]$ ls
t1  t2  t3  t4
[dream@172 test]$ tar -cf t123.tar t1 t2 t3				# 打包t1、t2、t3
[dream@172 test]$ ls
t1  t123.tar  t2  t3  t4
[dream@172 test]$ rm t1 t2 t3
[dream@172 test]$ ls
t123.tar  t4
[dream@172 test]$ tar -xf t123.tar 								# 解包t123.tar
[dream@172 test]$ ls
t1  t123.tar  t2  t3  t4
  • 先打包,再壓縮,注意,命令的選項是有順序的
[dream@172 test]$ ls
t1  t2  t3  t4
[dream@172 test]$ tar -zcf t123.tar.gz t1 t2 t3		# 打包並壓縮爲gz
[dream@172 test]$ ls
t1  t123.tar.gz  t2  t3  t4
[dream@172 test]$ tar -zxf t123_gz
[dream@172 test]$ mkdir t123_gz
[dream@172 t123_gz]$ mv ../t123.tar.gz ./t123.tar.gz
[dream@172 t123_gz]$ ls
t123.tar.gz
[dream@172 t123_gz]$ tar -zxf t123.tar.gz 				# 解壓縮並解包
[dream@172 t123_gz]$ ls
t1  t123.tar.gz  t2  t3
[dream@172 test]$ ls
t1  t123_gz  t2  t3  t4
[dream@172 test]$ mkdir t123_bz2
[dream@172 test]$ ls
t1  t123_bz2  t123_gz  t2  t3  t4
[dream@172 test]$ tar -jcf t123.tar.bz2 t1 t2 t3		# 打包並壓縮爲bz2
[dream@172 test]$ ls
t1  t123_bz2  t123_gz  t123.tar.bz2  t2  t3  t4
[dream@172 test]$ mv t123.tar.bz2 t123_bz2/
[dream@172 test]$ cd t123_bz2/
[dream@172 t123_bz2]$ ls
t123.tar.bz2
[dream@172 t123_bz2]$ tar jxf t123.tar.bz2 					# 解壓縮並解包
[dream@172 t123_bz2]$ ls
t1  t123.tar.bz2  t2  t3
  • 使用tar命令向包裏追加文件
[dream@172 test]$ ls
t123  t123_bz2  t123_gz  t123.tar  
[dream@172 test]$ touch t4
[dream@172 test]$ tar -uf t123.tar t4				# 追加新文件到包裏
[dream@172 test]$ ls
t123  t123_bz2  t123_gz  t123.tar  t4
  • 使用tar命令從.tar包裏提取一個包
[dream@172 test]$ ls
t123.tar.gz
[dream@172 test]$ tar -tvf t123.tar.gz 										# 查看包裏的文件
drwxrwxr-x dream/dream       0 2020-02-14 21:45 t123/
-rw-rw-r-- dream/dream       0 2020-02-14 21:18 t123/t1
-rw-rw-r-- dream/dream       0 2020-02-14 21:18 t123/t2
-rw-rw-r-- dream/dream       0 2020-02-14 21:18 t123/t3
-rw-rw-r-- dream/dream       0 2020-02-14 21:55 t4
[dream@172 test]$ tar -zxvf t123.tar.gz t123/t1						# 將t123/t1解壓縮並提取出來
t123/t1
[dream@172 test]$ ls																			# 可以看到t123目錄也被創建了
t123  t123.tar.gz

6、gzip

  • 全名:GNU zip

  • 用途:壓縮文件,壓縮文件的格式爲.gz,該命令只能壓縮文件,並且壓縮文件會覆蓋原文件

  • 常用選項

    gzip [選項] <file_name>
    
    • -d:解壓縮,相當於gunzip
  • 例子,先打包,再壓縮

[dream@172 test]$ ls													# t123爲目錄
t123  t123_bz2  t123_gz
[dream@172 test]$ tar -cf t123.tar t123				# 先打包
[dream@172 test]$ ls
t123  t123_bz2  t123_gz  t123.tar
[dream@172 test]$ gzip t123.tar 							# 打包後再壓縮
[dream@172 test]$ ls
t123  t123_bz2  t123_gz  t123.tar.gz
[dream@172 test]$ gzip -d t123.tar.gz 				# 解壓縮,也會覆蓋原文件
[dream@172 test]$ ls
t123  t123_bz2  t123_gz  t123.tar

7、gunzip

  • 全名:GNU unzip
  • 用途:解壓縮gzip文件,作用同gzip -d <xxx.gzip>

8、zip

  • 全名:zip

  • 用途:壓縮文件或目錄,壓縮文件的格式爲zip(在Windows和Linux下均可用)

  • 常用選項

    zip [選項] <壓縮後文件名> <文件或目錄>
    
    • -r:表示壓縮目錄
  • 例子,壓縮目錄

[dream@172 ~]$ ls
LAMP  test  公共  模板  視頻  圖片  文檔  下載  音樂  桌面
[dream@172 ~]$ zip -r test.zip test
  adding: test/ (stored 0%)
  adding: test/t123_gz/ (stored 0%)
  adding: test/t123_gz/t123.tar.gz (deflated 1%)
  adding: test/t123_gz/t1 (stored 0%)
  adding: test/t123_gz/t2 (stored 0%)
  adding: test/t123_gz/t3 (stored 0%)
  adding: test/t123_bz2/ (stored 0%)
  adding: test/t123_bz2/t123.tar.bz2 (stored 0%)
  adding: test/t123_bz2/t1 (stored 0%)
  adding: test/t123_bz2/t2 (stored 0%)
  adding: test/t123_bz2/t3 (stored 0%)
  adding: test/t123/ (stored 0%)
  adding: test/t123/t1 (stored 0%)
  adding: test/t123/t2 (stored 0%)
  adding: test/t123/t3 (stored 0%)
  adding: test/t123.tar (deflated 99%)

9、unzip

  • 全名:unzip
  • 用途:解壓縮zip壓縮包
  • cyxx
unzip <xxx.zip> 
  • 例子
[dream@172 ~]$ ls
LAMP  test.zip  公共  模板  視頻  圖片  文檔  下載  音樂  桌面
[dream@172 ~]$ unzip test.zip 
Archive:  test.zip
   creating: test/
   creating: test/t123_gz/
  inflating: test/t123_gz/t123.tar.gz  
 extracting: test/t123_gz/t1         
 extracting: test/t123_gz/t2         
 extracting: test/t123_gz/t3         
   creating: test/t123_bz2/
 extracting: test/t123_bz2/t123.tar.bz2  
 extracting: test/t123_bz2/t1        
 extracting: test/t123_bz2/t2        
 extracting: test/t123_bz2/t3        
   creating: test/t123/
 extracting: test/t123/t1            
 extracting: test/t123/t2            
 extracting: test/t123/t3            
  inflating: test/t123.tar           
[dream@172 ~]$ ls						# 可以看到使用unzip解壓縮不會覆蓋原文件
LAMP  test  test.zip  公共  模板  視頻  圖片  文檔  下載  音樂  桌面

10、bzip2

  • 全名:bzip2

  • 用途:壓縮文件,壓縮文件的格式爲bz2,用法同gzip

  • 常用選項

    bzip2 [選項] <file_name>
    
    • -k:保留原文件

11、bunzip2

  • 全名:

  • 用途:解壓縮bz2壓縮文件

  • 常用選項:-k,保留原壓縮文件

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章