第一节:文件系统构成
/usr
- 相当于 c:\windows,存放所有命令、库、手册页等
- /usr/bin、/bin 存放所有用户可以执行的命令
- /usr/sbin、/sbin 存放只有root可以执行的命令
- /usr/local 相当于 program files
/home
- 用户缺省宿主目录
/proc
- 系统信息目录,虚拟文件系统,*存放在内存镜像中
/dev
- 设备文件
- /dev/zero
- /dev/null
/lib
- 存放系统程序运行所需的共享库
/lost+found
- 存放一些系统出错的检查结果
/tmp
- 存放临时文件
/etc
- 系统配置文件目录
/var
- 包含经常发生变动的文件。(如邮件、日志文件、计划任务等)
- /var/log/ 系统日志目录
- /var/spool/cron
- /var/spool/at
/mnt
- 临时文件系统的安装点
/media
/boot
- 内核文件及自举程序文件保存位置
特殊权限:粘着位t
权限为777的目录被授予粘着位,每一个用户都有写权限,但只能删除该目录下自己是所有者的文件。
第二节:常用命令
查看块设备、磁盘分区和文件系统
- 所有块设备查看:ls /dev/sd* 或 fdisk -l
- 已经格式化的块设备:blkid 或 lsblk
- 已经挂载的块设备:df -h
df
统计已挂载文件系统(分区)的使用状态
df -h -m -k 显示已经挂载的文件系统
df -T 带上文件系统类型
du
统计文件、目录的大小
du -h /etc/services 查看文件大小
du -sh /etc 统计目录 '/etc' 已经使用的磁盘空间
du -sh 统计当前目录
du -sh * 统计当前目录下的所有目录
du -sk * | sort -rn 以容量大小为依据依次显示当前目录下文件和目录的大小
fsck、e2fsck (没搞清楚两者的区别)
file system check 检测修复文件系统(单用户模式执行)
fsck -y /dev/sdb1 修复 -y:yes
e2fsck -p /dev/sdb2 修复
badblocks -v /dev/hda1 检查磁盘hda1上的坏磁块
fsck /dev/hda1 修复/检查hda1磁盘上linux文件系统的完整性
fsck.ext2 /dev/hda1 修复/检查hda1磁盘上ext2文件系统的完整性
e2fsck /dev/hda1 修复/检查hda1磁盘上ext2文件系统的完整性
e2fsck -j /dev/hda1 修复/检查hda1磁盘上ext3文件系统的完整性
fsck.ext3 /dev/hda1 修复/检查hda1磁盘上ext3文件系统的完整性
fsck.vfat /dev/hda1 修复/检查hda1磁盘上fat文件系统的完整性
fsck.msdos /dev/hda1 修复/检查hda1磁盘上dos文件系统的完整性
dosfsck /dev/hda1 修复/检查hda1磁盘上dos文件系统的完整性
file
查看文件类型
file /etc/hosts // /etc/hosts: ASCII text
file sbms.tar.gz
file -s /dev/sd* //查看设备包含的文件系统
stat
查看文件详细时间参数
stat /etc/hosts
stat /etc/hosts
文件:"/etc/hosts"
大小:490 块:8 IO 块:4096 普通文件
设备:fd00h/64768d Inode:70179175 硬链接:1
权限:(0644/-rw-r--r--) Uid:( 0/ root) Gid:( 0/ root)
环境:system_u:object_r:net_conf_t:s0
最近访问:2020-06-13 00:09:23.657425374 +0800
最近更改:2020-06-01 22:37:01.343005284 +0800
最近改动:2020-06-01 22:37:01.361005421 +0800
创建时间:-
md5sum
校验文件md5值
md5sum /etc/services
sync
本机:将内存上的数据同步到硬盘上
第三节:设备挂载
- 挂载光盘或硬盘
# mount /dev/sr0 /media/rhel6
# mount -t vfat /dev/sdb /media/usb
# mount -t ntfs /dev/hda6 /media/vcdrom
# mount -o loop -t iso9660 /**/mydisk.iso /media/rhel6 - 卸载
#umount /dev/dvd
#umount /media/dvd - 弹出设备
#eject 卸载,并弹出光驱
第四节:添加磁盘或分区
1.分区 fdisk
- 添加硬盘,并查看设备是否已经被系统识别,如果未被识别,reboot
ls /dev/sd* 或者 dmesg | grep sde 或者 journalctl | grep sde - 查看设备分区信息
fdisk -l /dev/sdb - 对块设备进行分区
fdisk /dev/sdb{
->p //显示分区表
->n //添加一个新的分区
e //扩展分区(1个扩展分区可以包含多个逻辑分区)
1
->
->
->w //保存分区表
other{
->t //改变分区类型
->d //删除分区
->q //不保存退出
}
}
- 刷新磁盘分区表,查看分区
# partprobe
# lsblk
2. 格式化为某一种文件系统 mkfs
mkfs.ext4 /dev/sdb1 或者 mkfs.ext4 /dev/sdb
mkfs.xfs /dev/sdb2
3. 临时挂载 mount
mkdir /web /bakup
mount /dev/sdb1 /web
mount /dev/sdb2 /bakup
4. 写入配置文件 /etc/fstab
查看可用的(已格式化的)块设备信息,含文件系统类型、UUID等信息
blkid
blkid /dev/sdb1
vim /etc/fstab
物理设备名称 挂载点 文件系统类型 缺省设置 挂载的时候是否检测 检测顺序
mount -a
第五节:扩大swap:swapfile
- 创建swap目录
mkdir /var/swap
chmod 700 /var/swap - 磁盘对拷 如:# dd if=/dev/sda of=/dev/sdb (mbr都会被拷进去)
dd if=/dev/zero of=/var/swap/file.swp bs=1024 count=65536 - 格式化swap空间file.swp
mkswap /var/swap/file.swp - 修改fstab
vim /etc/fstab
/var/swap/file.swp swap swap defaults 0 0 - 启用swap空间file.swp
swapon /var/swap/file.swp
swapoff /var/swap/file.swp - 查看
free -m
第六节:磁盘配额
配额是针对分区的设置 关系到系统的安全,十分重要
$ dd if=/dev/zero of=/var/swap/file.swp bs=1024k count=6553600000000000
1、开启分区配额功能
编辑/etc/fstab文件,在挂载属性上加标志usrquota(用户配额)或grpquota(用户组配额)
* /dev/sda3 /home ext3 defaults,usrquota 1 2
mount -o remount /home
临时设置:mount -o remount,usrquota /home
2、建立配额数据库(进入单用户模式,非必须)
* quotacheck -cvuga
quotacheck -cvug /home
quotacheck -cvu /home
-c 创建(检测,如果没有,创建)
-v 显示详细信息
-u 建立用户配额
-g 建立组配额
-a 检测所有的系统分区
ls /home
会生成aquota.user aquota.group两个文件
3、启动配额功能
quotanon 分区名称
* quotaon /home
quotaoff关闭配额
quotaoff /home
4、编辑用户配额
edquota 用户名
edquota sun
创建配额的选项{
软限制(Soft limit): 定义用户可以占用的磁盘空间数。当用户超过该限制会受到以超过配额的警告。
硬限制(Hard limit): 当用户试图将文件存放在其已经超过该限制目录时,报告文件系统错误。
宽限期(Grace period): 定义用户在软限制下可以使用其文件系统(超额部分)的期限。
}
* Filesystem blocks(空间大小 单位:kB) soft hard inodes(文件个数 单位:个) soft hard
/dev/sda2 0 0 51200 0 0 0
edquota -g 用户组名
edquota -t 设置宽限期
复制用户配额
edquota -p 模板用户 复制用户1 复制用户2
edquota -p sun samlee hosander userA
测试:
chmod 777 /home
dd if=/dev/zero of=zerofile bs=1024k count=10240000000000000
5、quota
管理员查看用户配额信息:
quota sun //查询某个用户的配额信息
repquota /home //查询某个分区的用户配额信息
repquota -a //查询某个分区的用户配额信息
第七节:备份与恢复
系统的潜在威胁
- 系统硬件故障
- 软件故障
- 电源故障
- 用户的误操作
- 人为破坏
- 缓存中的内容没有及时的写入硬盘
- 自然灾害
备份存储 异地备份存储 异地实时备份存储
备份介质
- 硬盘(samba,网络方式)
- 光盘(不建议)
- 磁带(磁带机)
- 可移动存储设备
权衡因素:可靠性、速度、介质价格
备份策略
- 完全备份
- 增量备份
备份的分类
- 系统备份(意义不大,现在有同一的系统镜像管理)
实现对操作系统和应用程序的备份
尽量在系统崩溃以后能快速简单完全地恢复系统的运行
主要备份/etc、/boot、/var/log、/usr/local等
一般只有当系统内容发生变化时才进行 -
用户备份(磁盘挂载的方式,把用户数据和日志数据分离出来)
实现对用户文件的备份 /home
用户的数据变动频繁
通常采用增量备份策略进行
备份日志和管理日志
- 记录系统的更改
- 建立备份日志
- 妥善保管
备份日志表格范例
- 近期名称、IP地址、存放位置
- 备份时间
- 备份介质及其编号
- 备份的文件系统
- 备份的目录和文件
- 使用的备份命令
- 备份人员及其他
备份方法:
- 备份
- 备份的分区(离线) mount - o remount,ro /backup、umount /backup
- 压缩 bzip2 //减少空间占用 减少病毒的干扰
- 校验(备份后,恢复前) md5sum -c
- 加密 GnuPG PGP(windows) 非对称秘钥加密
(计划任务)
cp命令备份举例{
备份的目录:
cp -Rpu 备份目录 目标目录
-p //保留备份目录及文件的属性
-u //增量备份
scp //远程备份
}
tar命令使用举例{
目录备份
tar -zcf /backup/sys_20160518.tar.gz /etc /boot /usr
文件备份
tar -zcf /backup/sys_20160518.tar.gz /etc/passwd /etc/shadow /etc/group /etc/gshadow
文件+目录都可以
查看备份包中文件(不解包)
tar -ztf /backup/sys_20160518.tar.gz
还原/etc目录,默认自动还原到打包文件源目录
tar -zxf /backup/sys_20160518.tar.gz
-C 可以指定还原目录
tar -zxf /backup/sys_20160518.tar.gz -C /abc
恢复备份中的指定文件
tar -zxf sys_20160518.tar.gz etc/group
example{
第一步,查看备份包中文件(不解包)
tar -ztf /backup/sys_20160518.tar.gz
第二步,恢复备份中的指定文件 (etc/passwd由第一步查询到)
cd / 进入根目录
tar -zxf /backup/sys_20160518.tar.gz etc/passwd
}
针对tar包,not for tar.gz
//将/etc/default/useradd、/etc/login.defs追加到bakup_usr_20160518.tar
tar -rf bakup_usr_20160518.tar /etc/default/useradd /etc/login.defs
//更新bakup_usr_20160518.tar中的文件/etc/login.defs
tar -uf bakup_usr_20160518.tar /etc/login.defs
//添加备份时间
date +%F
tar -zcf /backup/etc_$(date+%F).tar.gz /etc
tar -zcf /backup/etc_$(date+%Y.%m.%d-%H%M).tar.gz /etc
备份(理念+方法)
计划任务,shell脚本