zoukankan      html  css  js  c++  java
  • linux(3)磁盘与文件系统管理/查看硬盘、内存空间/文件系统的操作/ 文件的压缩和打包

    一.磁盘与文件系统管理

    1.分区与文件系统
    分区:记录每一个分区的开始柱面和结束柱面
    主引导区(master boot recorder):记录分区的数据,记录硬盘里所有的分区信息
    分区划分好后,要将分区格式化为系统可以识别的文件系统
    磁盘的最小物理存储单位是:扇区
    分区时格式化文件系统的最小存储单位:逻辑块,以扇区为基础,大小为2的n次方,但是一个块只能容纳一个文件
    linux的ext2文件系统每个文件内容分为两部分:存储文件的属性(放在inode中),文件的内容(放在块中)

    例:

    读取文件系统的信息: dumpe2fs   /dev/sda1
    数据读取:日志+元数据+数据存放区记录。CPU>主存储器(RAM)>硬盘,为加快速度,linux采用异步处理的方式,先从硬盘中读取文件时,会将块数据存到内存即主存储器的缓冲区中,若被修改,则变为脏数据,必须写回到硬盘中。
    载入点:必须为目录,即进入文件系统的入口
    linux支持的文件系统:
    (1)传统文件系统:ext2,MS-DOS,FAT
    (2)日志式文件系统:ext3,NTFS
    (3)网络文件系统:NFS

    2.文件系统的操作

    (1)查看当前磁盘容量:(一般用 df -h )
    df (disk free) -a 则多出/proc, 大小为0,放在内存中的 / -i 查看inode /df -h 文件名 查看文件使用情况
    (2)查看各个文件容量(du -k/m/a/)
    (3)创建连接文件 ln -s /bin/huhu /huhu ,则进入/huhu后实际读取的是/bin/huhu 下的内容
    (4)分区: fdisk -l 设备名称(不要加数字,分区针对整个硬盘设备,而不是某个分区)
    删除分区:d 选择分区号 p 查看分区信息
    (5)磁盘格式化:mke2fs 设备名称


    3.创建虚拟内存swap(/dev/zero,是一个输入设备,你可你用它来初始化文件.)
    (1)使用dd命令,在/tmp目录下创建一个64M的文件
    dd if=/tmp/zero of=/tmp/swap bs=4k count=16382
    [yuanyuan@localhost /]$ dd if=/dev/zero of=/tmp/swap bs=4k count=16382
    16382+0 records in
    16382+0 records out
    67100672 bytes (67 MB) copied, 9.66832 s, 6.9 MB/s
    dd:转换命令并且复制
    if:要转换的输入文件格式
    of:输出的文件
    bs:一个分区的大小
    count:有多少个分区,即bs
    (2)使用mkswap将/tmp/swap的文件格式转化为虚拟内存的格式
    mkswap /tmp/swap

    [yuanyuan@localhost /]$ mkswap /tmp/swap
    mkswap: /tmp/swap: warning: don't erase bootbits sectors
    on whole disk. Use -f to force.
    Setting up swapspace version 1, size = 65524 KiB
    no label, UUID=ce0a57a9-de6e-4714-bbd6-c4e81f8264de

    (3)使用swapon启动/tmp/swap (可以用free查看内存使用情况)
    swapon /tmp/swap
    (4)swapoff /tmp/swap 关闭swap文件

    二. 文件的压缩与打包(注意:当使用gzip或者bzip2不加参数压缩时,源文件都消失,但是tar时源文件和目的文件都存在)
    常见的压缩文件的名字:(tar主要是为了备份重要的文件,dd可以备份整个磁盘和分区)
    (1)*.bz2:bz2程序文件压缩的文件
    (2)*.gz:gzip程序压缩的文件
    (3)*.tar:tar程序打包的数据,并没有压缩过 (tar程序可以将多个文件打包成一个文件(或目录))
    (4)*.tar.gz:tar程序打包的数据而且用gzip压缩过。
    (5)*.Z:使用compress程序压缩的文件
    1. gzip/zcat
    gzip a(文件名) :将文件 a打包为a.gz,原来的不存在
    zcat a.gz:查看压缩文件的内容
    gzip -d a.gz (解压缩):将a.gz解压为a ,原来的压缩文件不存在
    gzip -c a(文件名)>新的压缩文件名 : 将文件 a打包为a.gz,原来的仍存在,以数据流重导向进行处理
    也可以用gzip -d a.gz >b 此时出现a和b两个文件
    gzip -(1-9) 文件名:压缩等级,9最好但慢,一般为6
    2. bzip2/bzcat/bunzip2
    (1)bzip2 文件名 > 新文件名 压缩并重命名
    (2)bzcat *.bz2 查看压缩文件内容
    [yuanyuan@localhost Desktop]$ bzcat d.txt.bz2
    i miss you ~
    (3)bzip2 -d *.bz2 解压缩 或者用 bunzip2 压缩文件 也可以
    3. tar (参数必须用f结尾,前三个参数不能同时存在,一般为 cvf,xvf,tvf)
    (1)-c 压缩
    (2)-x 解压
    (3)-t 查看tar的文件
    (4)-v 压缩的过程中显示文件名如下所示
    [root@localhost Desktop]# tar -cvf fee.txt.tar fee.txt
    fee.txt
    [root@localhost Desktop]# tar -cvf yy.tar yy
    yy/
    yy/d.txt
    (5)-f 使用文件名,一般后面直接加文件名
    (6)-z 用gzip方式压缩
    (7)-j 用bzip2的方式压缩
    (8)-p 使用源文件的原来属性
    (9)-P 使用绝对路径来压缩
    (10)-N '2016/02/14' 比时间新的才会打包
    (11)--exclude file 打包时不打包这个文件 --exclude 文件名 -gcvf
    例子:
    (1)把yy文件夹打包成yy.tar
    [yuanyuan@localhost Desktop]$ tar -cvf yy.tar yy
    yy/
    yy/fee.txt
    yy/y/
    yy/d.txt
    (2)查看已打包文件的内容
    [yuanyuan@localhost Desktop]$ tar tvf yy.tar
    drwxrwxr-x yuanyuan/yuanyuan 0 2016-01-26 17:49 yy/
    -rw-rw-r-- yuanyuan/yuanyuan 10240 2016-01-26 02:11 yy/fee.txt
    drwxrwxr-x yuanyuan/yuanyuan 0 2016-01-26 17:49 yy/y/
    -rwxrwxr-x yuanyuan/yuanyuan 47 2016-01-26 00:39 yy/d.txt
    (3)解压打包文件
    [yuanyuan@localhost Desktop]$ tar xvf yy.tar
    yy/
    yy/fee.txt
    yy/y/
    yy/d.txt
    (4)用gzip工具对yy进行打包
    [yuanyuan@localhost Desktop]$ tar -zcvf yy.tar.gz yy
    yy/
    yy/fee.txt
    yy/y/
    yy/d.txt
    (5)对gzip打包备份的文件解压
    [yuanyuan@localhost Desktop]$ tar -zxvf yy.tar.gz
    yy/
    yy/fee.txt
    yy/y/
    yy/d.txt
    (6)用bzip2工具对 yy 进行打包为 y1y.tar.gz
    [yuanyuan@localhost Desktop]$ tar -jcvf y1y.tar.gz yy
    yy/
    yy/fee.txt
    yy/y/
    yy/d.txt
    (7) 打包yy后直接解压,不产生中间文件
    tar -cvf - yy | tar -xvf -
    4.dd (除了复制,最大的用处是备份)
    dd if=输入文件 of =输出文件 bs=(块大小,默认为 512字节) count=bs数
    (1)备份/dev/hda的MBR
    dd if=/dev/hda of=/tmp/mbr.back bs=512 count=1
    (2)备份/dev/hda1整个分区
    dd if=/dev/hda1 of=/some/path/文件名
    of路径不能在if的目录中,要不然一直循环!!!

  • 相关阅读:
    Linux下环境变量配置方法梳理(.bash_profile和.bashrc的区别)
    Mac下安装配置Python2和Python3并相互切换使用
    精通Python自动化脚本
    idea之Git
    python面向对象之:细分类的组成成员
    new string("abc")创建了几个对象
    进程和线程的主要区别
    Leetcode 572 另一个树的子树
    Leetcode 二叉树的坡度
    Leetcode 559 N叉树的最大深度
  • 原文地址:https://www.cnblogs.com/alwayswyy/p/5162477.html
Copyright © 2011-2022 走看看