这里是一段防爬虫文本,请读者忽略。
本文原创首发于CSDN,作者IDYS
博客首页:https://blog.csdn.net/weixin_41633902/
本文链接:https://blog.csdn.net/weixin_41633902/article/details/110959223
未经授权,禁止转载!恶意转载,后果自负!尊重原创,远离剽窃!
cpu
信息[root@idys ~] cat /proc/cpuinfo
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 142
model name : Intel(R) Core(TM) i5-7200U CPU @ 2.50GHz
stepping : 9
microcode : 0x8e
cpu MHz : 2712.000
cache size : 3072 KB
physical id : 0
siblings : 2
stat
-t
:使用指定的日期时间而非现在的时间-a
:只更改atime
-m
:只更改mtime
-c
:不建立任何文档-r
:实现时间戳同步,touch -r b.txt a.txt
,让a.txt
时间戳和b.txt
同步[dayuanshuai@idys ~] stat a.txt
File: ‘a.txt’
Size: 4 Blocks: 8 IO Block: 4096 regular file
Device: 802h/2050d Inode: 51286541 Links: 1
Access: (0664/-rw-rw-r--) Uid: ( 1000/dayuanshuai) Gid: ( 1000/dayuanshuai)
Context: unconfined_u:object_r:user_home_t:s0
Access: 2020-05-25 08:29:46.174755606 +0800
Modify: 2020-05-25 08:29:42.597711199 +0800
Change: 2020-05-25 08:29:42.597711199 +0800
Birth: -
# 修改 atime
[dayuanshuai@idys ~] touch -a -t 201005120812.12 a.txt
[dayuanshuai@idys ~] stat a.txt
File: ‘a.txt’
Size: 4 Blocks: 8 IO Block: 4096 regular file
Device: 802h/2050d Inode: 51286541 Links: 1
Access: (0664/-rw-rw-r--) Uid: ( 1000/dayuanshuai) Gid: ( 1000/dayuanshuai)
Context: unconfined_u:object_r:user_home_t:s0
Access: 2010-05-12 08:12:12.000000000 +0800
Modify: 2020-05-25 08:29:42.597711199 +0800
Change: 2020-05-25 08:40:02.729588578 +0800
Birth: -
# 修改mtime
[dayuanshuai@idys ~] touch -m -t 201206110812.12 a.txt
[dayuanshuai@idys ~] stat a.txt
File: ‘a.txt’
Size: 4 Blocks: 8 IO Block: 4096 regular file
Device: 802h/2050d Inode: 51286541 Links: 1
Access: (0664/-rw-rw-r--) Uid: ( 1000/dayuanshuai) Gid: ( 1000/dayuanshuai)
Context: unconfined_u:object_r:user_home_t:s0
Access: 2010-05-12 08:12:12.000000000 +0800
Modify: 2012-06-11 08:12:12.000000000 +0800
Change: 2020-05-25 08:40:35.362989206 +0800
Birth: -
tail
命令
-f
:动态显示数据(不关闭),常用来查看日志[dayuanshuai@idys ~] tail -f a.txt # dayuanshuai用户动态查看
abc
tail: a.txt: file truncated
root_modify
# echo 动态修改
[root@idys ~] echo root_modify>/home/dayuanshuai/a.txt
Linux
中/dev/sr0
就是/dev/cdrom
[root@idys ~]# mount | grep '/dev/sr0' #
/dev/sr0 on /media/cdrom1 type iso9660 (ro,relatime)
[root@idys ~]# mkdir /media/cdrom2
[root@idys ~]# mount /dev/sr0 /media/cdrom2/
mount: /dev/sr0 is write-protected, mounting read-only
[root@idys ~]# vim /etc/profile
***********
PS1='[\u@\h \W] ' # 在末尾加入这一行
[root@idys ~]# source /etc/profile
[root@idys ~] . /etc/profile # 使用上面的或者下面的
让配置文件生效可以使用
source /etc/profile
或者. /etc/profile
,注意
.
号于/etc/profile
之间有空格。- 当你使用过
source /etc/profile
之后就不要继续使用. /etc/profile
了
2
个小时便更新时间[root@idys ~] crontab -e # 对当前用户设置定时任务,每隔两个小时便同步时间
no crontab for root - using an empty one
0 */2 * * * ntpdate ntp1.aliyun.com &> /dev/null
[root@idys ~] systemctl restart crond
tree
这个软件包[root@idys ~] yum list installed | grep tree
yum
安装tree
[root@idys ~] yum -y install tree
yum
卸载tree
[root@idys ~] yum -y remove tree
rpm
安装tree
[root@idys ~] cd /media/cdrom1/Packages/
[root@idys Packages] rpm -ivh tree-1.6.0-10.el7.x86_64.rpm
Preparing... ################################# [100%]
Updating / installing...
1:tree-1.6.0-10.el7 ################################# [100%]
/
下深度为1
的链接文件)[root@idys Packages] find / -maxdepth 1 -type l -exec ls -dl {} \;
lrwxrwxrwx. 1 root root 7 Sep 13 16:08 /bin -> usr/bin
lrwxrwxrwx. 1 root root 8 Sep 13 16:08 /sbin -> usr/sbin
lrwxrwxrwx. 1 root root 7 Sep 13 16:08 /lib -> usr/lib
lrwxrwxrwx. 1 root root 9 Sep 13 16:08 /lib64 -> usr/lib64
目录 | 说明 |
---|---|
/ |
处于linux 系统树形结构的最顶端,它是linux 文件系统的入口,所有的目录文件、普通文件、块设备文件、字符设备文件、管道文件、链接文件都在 / 之下 |
/bin |
bin 是Binary 的缩写。/bin 目录下存放着常用的二进制命令。比如 ls 、cp 、mkdir 、cut 等;和/usr/bin 类似,里面存放一些用户级gnu工具 |
/boot |
存放的系统启动相关的文件,例如:kernel.grub (引导装载程序)和内核文件 |
/dev |
设备文件存放目录 |
/etc |
配置文件存放目录/etc/passwd 用户信息文件/etc/shadow 用户密码文件/etc/group 存储用户组信息/etc/fstab 系统开机自动挂载分区列表/etc/hosts 设定用户自己的IP 与主机名对应的信息 |
/home |
普通用户家目录 |
/lib |
库文件存放目录 |
/lost+found ext 文件系统会有这个目录 |
默认为空,被fsck (file system check 用来检查和维护不一致的文件系统。若系统掉电或磁盘发生问题,可利用fsck 命令对文件系统进行检查)用来放置零散文件(没有名称的文件) 当系统非法关机后,这里就会存放一些文件。在ext 文件系统中,每个分区的挂载点下会有这个目录 |
/media |
挂载便捷式移动设备的目录 |
/mnt |
临时文件系统的挂载点 |
/opt |
option 可选择的意思,第三方应用程序的安装位置 |
/proc |
操作系统运行时,进程(正在运行中的程序)信息及内核信息(比如cpu 、硬盘分区、内存信息等)存放在这里。/proc 目录是伪装的文件系统proc 的挂载目录,proc 并不是真正的文件系统。因此,这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。也就是说,这个目录的内容不在硬盘上而是在内存里 |
/sys |
存放系统上硬件设备相关信息的虚拟文件系统 |
/run |
运行目录,存放的是系统运行时的数据,比如进程的PID 文件 |
/srv |
服务目录,存放的是系统服务相关的文件 |
/sbin |
大多数涉及系统管理的命令都存放在该目录中,它是超级权限用户root 的可执行命令存放地,普通用户无权限执行这个目录下的命令,凡是目录sbin 中包含的命令都是root 权限才能执行的。不能关联至独立分区,OS 启动即会用到的程序 |
/tmp |
该目录用于存放临时文件,有时用户运行程序的时候,会产生一些临时文件。/tmp 就是用来存放临时文件的。/var/tmp 目录和该目录的作用是相似的,不能存放重要数据,它的权限比较特殊 。设置了粘贴位,只能被拥有者或者root 才能删除 |
/var |
存放可变数据文件(variable data files ),此目录下的子目录有/var/cache :应用程序缓存数据目录local :专用于为/usr/local 下的应用程序存储可变数据lock :锁文件log :日志目录及文件opt :专用于为/opt 下的应用程序存储可变数据run :运行中的进程相关的数据,通常用于存储进程PID 文件spool :应用程序数据池tmp :保存系统两次重启之间产生的临时数据mail :用户邮箱文件 |
/usr |
usr 并不是代表user的意思,它的全名是Unix System Resource 即Unix 系统资源,它是系统帮助文档以及源码包安装的位置。universal shared ,read-only data 全局共享只读数据:(一般来说安装完系统后占用磁盘空间最大目录) |
/lib |
基本共享库文件,以及内核模块文件lib/modules |
/lib64 |
专用于x86_64 系统上的辅助共享库文件存放位置 |
/lib
和/lib64
实际上分别是/usr/lib
和/usr/lib64
的链接文件
这个目录里存放着系统最基本的动态链接共享库,包含许多被
/bin/
和/sbin/
中的程序使用的库文件,目录/usr/lib/
中含有更多用于用户程序的库文件。作用类似于windows
里的DLL
文件,几乎所有的应用程序都需要用到这些共享库注:
lib***.a
是静态库
lib***.so
是动态库静态库在编译时被加载到二进制文件中
动态库在运行时加载到进程的内存空间中
简单的说:这些库是为了让你的程序能够正常编译运行的
其实类似于
WIN
中.dll
文件,几乎所有的应用程序都需要用到这些共享库
/usr
/usr/bin
/usr/sbin
/usr/lib
/usr/include
C
程序的头文件(header files)
/usr/share
:结构化的独立的数据
/usr/local
:第三方应用程序的安装位置,在此目录下又有以下这些目录
bin
,sbin
,lib
,lib64
,etc
,share
proc
目录的挂载情况[root@idys ~] mount -l | grep proc
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
可以看到挂载在
/proc
这个目录下的并不是一个设备文件,而是一个叫做proc
的文件系统挂载在/proc
目录下
[root@idys ~] cat /proc/meminfo | head -10
MemTotal: 1863104 kB
MemFree: 1485620 kB
MemAvailable: 1550016 kB
Buffers: 4140 kB
Cached: 189236 kB
SwapCached: 0 kB
Active: 161568 kB
Inactive: 94424 kB
Active(anon): 63060 kB
Inactive(anon): 9236 kB
cpu
信息[root@idys ~] cat /proc/cpuinfo | head -10
processor : 0
vendor_id : AuthenticAMD
cpu family : 23
model : 8
model name : AMD Ryzen 5 2600X Six-Core Processor
stepping : 2
microcode : 0x800820b
cpu MHz : 3600.035
cache size : 512 KB
physical id : 0
/proc
是通过proc
文件系统挂载的,而proc
文件系统是一个伪文件系统,它指示内存的映射,所以用du -sh
是无法查看/proc
的容量的[root@idys ~] du -sh /proc/
du: cannot access ‘/proc/1867/task/1867/fd/4’: No such file or directory
du: cannot access ‘/proc/1867/task/1867/fdinfo/4’: No such file or directory
du: cannot access ‘/proc/1867/fd/3’: No such file or directory
du: cannot access ‘/proc/1867/fdinfo/3’: No such file or directory
0 /proc/
/sys
也是虚拟文件系统sys
的挂载目录,所以/sys
也是没有占用磁盘容量的[root@idys ~] du -sh /sys
0 /sys
run
目录下查看以.pid
结尾的文件[root@idys ~] find /run/ -name '*.pid'
/run/syslogd.pid
/run/sshd.pid
/run/crond.pid
/run/chrony/chronyd.pid
/run/auditd.pid
/run/tuned/tuned.pid
/tmp
目录的权限[root@idys ~] ls -ld /tmp/
drwxrwxrwt. 10 root root 240 Nov 1 10:54 /tmp/
可以看到该目录权限位为
777
,同时设置了sticky
(粘滞位),里面的文件只能被root
或者owner
删除
pwd
命令pwd
命令是print working directory
中每个单词首字母的缩写,其功能是显示当前工作目录的绝对路径
语法格式
pwd [option]
参数 | 含义 |
---|---|
-L |
logical 首字母缩写,表示显示逻辑路径(忽略软链接文件),取PWD环境变量的值。 |
-P |
Physical 首字母缩写,表示显示物理路径时如果当前目录是软链接文件,则会显示软链接文件对应的源文件 |
ls -l
查看/lib
目录,可以发现其是/usr/lib
的软链接文件[root@idys lib] ls -l /lib
lrwxrwxrwx. 1 root root 7 Sep 13 16:08 /lib -> usr/lib
/lib
目录下,分别使用pwd
命令和对应的几个参数查看该目录下对应的路径显示[root@idys lib] pwd
/lib
[root@idys lib] pwd -L
/lib
[root@idys lib] pwd -P
/usr/lib
可以看到
pwd
和pwd -L
显示的是逻辑路径,而pwd -P
显示的是/lib
对应的真实物理路径
$pwd
对应的值[root@idys lib] echo $PWD
/lib
可以看到
$pwd
里面存放的也是逻辑路径
PS1
常用参数参数 | 含义 |
---|---|
\d |
代表日期,格式为weekday month date ,例如:`Mon Aug 1 |
\H |
完整的主机名称。例如:我的机器名称为:idayuanshuai.com ,则这个名称就是idayuanshuai.com |
\h |
仅取主机的第一个名字,如上例,则为idayuanshuai ,.com 则被省略 |
\t |
显示时间为24 小时格式,如:HH :MM :SS |
\T |
显示时间为12 小时格式 |
\A |
显示时间为24 小时格式:HH :MM |
\u |
当前用户的账号名称 |
\v |
BASH 的版本信息 |
\w |
完整的工作目录名称。家目录会以 ~ 代替 |
\W |
利用basename 取得工作目录名称,所以只会列出最后一个目录 |
\# |
执行的第几个命令 |
\$ |
提示字符,如果是root 时,提示符为:# ,普通用户则为:$ |
\[ |
字符[ |
\] |
字符] |
\! |
命令行动态统计历史命令次数 |
PS1
变量的值[root@idys lib] PS1='[\u@\h \w] '
[root@idys /lib] cd /etc/sysconfig/
[root@idys /etc/sysconfig]
永久修改变量
PS1
可以去/etc/bashrc
上面修改或者/etc/profile
上面修改
cd
命令是change directory
中每个单词的首字母缩写
语法格式
cd [option] [dir]
参数 | 含义 |
---|---|
-P |
如果目录是链接文件,那么则切换到该目录对应的实际原目录 |
-L |
进入的是目录的逻辑路径 |
[root@idys /etc/sysconfig] cd -P /lib
[root@idys /usr/lib] pwd
/usr/lib
/lib
目录是/usr/lib
的源目录
[root@idys /usr/lib] cd -
/etc/sysconfig
[root@idys /etc/sysconfig] pwd
/etc/sysconfig
[root@idys /etc/sysconfig] cd ~
[root@idys ~]
tree
:以树形结构显示目录下的内容tree
命令以树形结构列出指定目录下所有的内容,包括所有文件、子目录、及其子目录里面的目录和文件
语法格式
tree [option] [directory]
参数 | 含义 |
---|---|
-a |
显示所有文件和目录,包括隐藏文件 |
-d |
只显示目录 |
-C |
在文件和目录清单加上色彩,便于区分各种类型。 |
-f |
显示每个文件的全路径 |
-i |
不显示树枝,常与-f 参数配合使用 |
-L level |
遍历目录的最大层数,level 为大于0 的正整数 |
-F |
在执行文件,目录,Socket ,符号连接,管道名称等不同类型文件的结尾,各自加上* ,/ ,= ,@ ,| 号 |
-p |
列出权限标示 |
-s |
列出文件或者目录的大小 |
tree
包[root@idys ~] yum list installed | grep tree
tree.x86_64 1.6.0-10.el7 installed
[root@idys ~] rpm -qa | grep tree
tree-1.6.0-10.el7.x86_64
[root@idys ~] rpm -qa tree
tree-1.6.0-10.el7.x86_64
三种方法查看:
yum list installed 包名
rpm -qa 包名
rpm -qa | grep 包名
[root@idys ~] tree ~
/root
└── anaconda-ks.cfg
0 directories, 1 file
tree
列出所有文件,包括隐藏文件[root@idys ~] tree -a ~
/root
├── anaconda-ks.cfg
├── .bash_history
├── .bash_logout
├── .bash_profile
├── .bashrc
├── .cshrc
├── .tcshrc
└── .viminfo
0 directories, 8 files
[root@idys ~] tree -L 1 -F -a /
/
├── .autorelabel
├── bin -> usr/bin/
├── boot/
├── dev/
├── etc/
├── home/
├── lib -> usr/lib/
├── lib64 -> usr/lib64/
├── media/
├── mnt/
├── opt/
├── proc/
├── root/
├── run/
├── sbin -> usr/sbin/
├── srv/
├── sys/
├── tmp/
├── usr/
└── var/
[root@idys ~] tree -d -L 1 /etc
/etc
├── alternatives
├── audisp
├── audit
├── bash_completion.d
├── binfmt.d
├── chkconfig.d
├── cron.d
├── cron.daily
├── cron.hourly
├── cron.monthly
├── cron.weekly
├── dbus-1
├── default
├── depmod.d
├── dhcp
├── dracut.conf.d
├── firewalld
├── gcrypt
[root@idys ~] tree -L 1 -fi -F /boot/
/boot
/boot/config-3.10.0-1062.el7.x86_64
/boot/efi/
/boot/grub/
/boot/grub2/
/boot/initramfs-0-rescue-e71706c620c745d08f3bc2e3aaab24d7.img
/boot/initramfs-3.10.0-1062.el7.x86_64.img
/boot/initramfs-3.10.0-1062.el7.x86_64kdump.img
/boot/symvers-3.10.0-1062.el7.x86_64.gz
/boot/System.map-3.10.0-1062.el7.x86_64
/boot/vmlinuz-0-rescue-e71706c620c745d08f3bc2e3aaab24d7*
/boot/vmlinuz-3.10.0-1062.el7.x86_64*
3 directories, 8 files
/boot
下第一层的所有目录[root@idys ~] tree -Fi -L 1 /boot/ | grep -E /$
/boot/
efi/
grub/
grub2/
mkdir
创建目录mkdir
命令是make directory
中每个单词的粗体字母组合而成,其功能是创建目录,默认情况下,如果创建的目录已存在,则会提示此文件已存在;而不会继续创建目录
语法格式
mkdir [option] [directory]
参数 | 含义 |
---|---|
-p |
递归创建目录,递归的意思是父目录及其子目录的子目录的…. 使用此参数,即使要创建的目录已经事先存在也不会报错 |
-m |
设置新创建的目录默认对应的权限 |
-v |
显示详细创建过程 |
[root@idys ~] tree -d
.
0 directories
[root@idys ~] tree -d --noreport # 不显示统计信息查看
.
[root@idys ~] mkdir data # 在当前目录下创建 data 目录
[root@idys ~] tree -d --noreport # 查看当前路径下的目录
.
└── data
[root@idys ~] mkdir data # 再次创建,因为已经存在,所以会报错
mkdir: cannot create directory ‘data’: File exists
[root@idys ~] mkdir -p data/
[root@idys ~] mkdir idys/dir1/dir2 # 因为 没有加 -p 所以不能递归创建目录
mkdir: cannot create directory ‘idys/dir1/dir2’: No such file or directory
[root@idys ~] mkdir -p idys/dir1/dir2 # 使用 -p 递归创建目录
[root@idys ~] tree -d ./ --noreport # 使用 tree 查看目录情况
./
├── data
└── idys
└── dir1
└── dir2
[root@idys ~] tree ./ --noreport
./
├── anaconda-ks.cfg
├── data
├── data1
│ └── date2
│ └── a.txt
└── idys
└── dir1
└── dir2
[root@idys ~] mkdir -p /data1/data2 # 再次创建 /data1/data2
[root@idys ~] tree ./ --noreport # 使用 tree 查看,是否目录有受到影响,可以看到目录没有受到影响
./
├── anaconda-ks.cfg
├── data
├── data1
│ └── date2
│ └── a.txt
└── idys
└── dir1
└── dir2
[root@idys ~] mkdir -pv hexo/idys/blog/
mkdir: created directory ‘hexo’
mkdir: created directory ‘hexo/idys’
mkdir: created directory ‘hexo/idys/blog/’
[root@idys ~] mkdir -m 777 kk
[root@idys ~] ls -lh --time-style=long-iso # 查看 kk 的权限位,和使用 mkdir 设置的一样 就是 777
total 4.0K
-rw-------. 1 root root 1.4K 2020-09-13 16:11 anaconda-ks.cfg
drwxr-xr-x 3 root root 18 2020-11-02 18:17 hexo
drwxrwxrwx 2 root root 6 2020-11-02 18:19 kk
[root@idys ~] mkdir -p dir{1..3}/idys{1..3}
[root@idys ~] tree -d # 可以发现创建成功
.
├── dir1
│ ├── idys1
│ ├── idys2
│ └── idys3
├── dir2
│ ├── idys1
│ ├── idys2
│ └── idys3
└── dir3
├── idys1
├── idys2
└── idys3
dir1
、dir2
、dir3
[root@idys ~] rm -rf dir{1..3}
[root@idys ~] tree -F -i /tmp/ # 查看tmp的目录结构
/tmp/
systemd-private-cc4f7d2801fd4701a9ebdb013479779e-chronyd.service-QY2FLs/
tmp/
vmware-root_602-2731021059/
vmware-root_608-2722828967/
vmware-root_609-3988556153/
5 directories, 0 files
[root@idys ~] tree -fid --noreport /tmp/
/tmp
/tmp/systemd-private-cc4f7d2801fd4701a9ebdb013479779e-chronyd.service-QY2FLs
/tmp/systemd-private-cc4f7d2801fd4701a9ebdb013479779e-chronyd.service-QY2FLs/tmp
/tmp/vmware-root_602-2731021059
/tmp/vmware-root_608-2722828967
/tmp/vmware-root_609-3988556153
[root@idys ~] tree -fid --noreport /tmp/ | sed -r 's/^\///g' # 使用 sed 去掉开头的
tmp
tmp/systemd-private-cc4f7d2801fd4701a9ebdb013479779e-chronyd.service-QY2FLs
tmp/systemd-private-cc4f7d2801fd4701a9ebdb013479779e-chronyd.service-QY2FLs/tmp
tmp/vmware-root_602-2731021059
tmp/vmware-root_608-2722828967
tmp/vmware-root_609-3988556153
[root@idys ~] mkdir -p `tree -fid --noreport /tmp/ | sed -r 's/^\///g'` # 克隆目录结构
[root@idys ~] ls
anaconda-ks.cfg tmp
[root@idys ~] tree -d tmp/ # 查看当前目录下 /tmp 目录结构
tmp/
├── systemd-private-cc4f7d2801fd4701a9ebdb013479779e-chronyd.service-QY2FLs
│ └── tmp
├── vmware-root_602-2731021059
├── vmware-root_608-2722828967
└── vmware-root_609-3988556153
touch
命令有两个功能:一个是创建文件,一个是改变已有文件的时间戳属性
语法格式
touch [option] [Files]
参数 | 含义 |
---|---|
-a |
只更改指定文件的最后访问时间 |
-d STRING |
使用字符串STRING 代表的时间作为模板设置指定文件的时间属性 |
-r file |
将指定文件的时间属性设置为与模板文件file 的时间属性相同 |
-t STAMP |
使用[CC[YY]MMDDhhmm[.ss]] 格式的时间设置文件的时间属性。格式的含义从左到右依次为:世纪、年、月、日、时、分、秒 |
-m |
只更改指定文件的最后修改时间 |
[root@idys tmp] tree test/
test/
├── teachera
├── teacherb
├── teacherc
├── teacherd
└── teachere
0 directories, 5 files
[root@idys tmp] cd test/
[root@idys test] ls
teachera teacherb teacherc teacherd teachere
[root@idys test] stat teachera
File: ‘teachera’
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: 802h/2050d Inode: 17361892 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2020-11-02 22:48:56.831154042 +0800
Modify: 2020-11-02 22:48:56.831154042 +0800
Change: 2020-11-02 22:48:56.831154042 +0800
Birth: -
[root@idys test] touch -a teachera
[root@idys test] stat teachera
File: ‘teachera’
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: 802h/2050d Inode: 17361892 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2020-11-02 22:51:55.146560627 +0800
Modify: 2020-11-02 22:48:56.831154042 +0800
Change: 2020-11-02 22:51:55.146560627 +0800
Birth: -
只要
atime
和mtime
有一个变化,那么ctime
便会变化
[root@idys test] touch -m teachera
[root@idys test] stat teachera
File: ‘teachera’
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: 802h/2050d Inode: 17361892 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2020-11-02 22:51:55.146560627 +0800
Modify: 2020-11-02 22:54:23.552731304 +0800
Change: 2020-11-02 22:54:23.552731304 +0800
Birth: -
-d
指定创建文件后的修改时间[root@idys test] stat teacherd
File: ‘teacherd’
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: 802h/2050d Inode: 17361913 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2020-11-02 22:48:56.831154042 +0800
Modify: 2020-11-02 22:48:56.831154042 +0800
Change: 2020-11-02 22:48:56.831154042 +0800
Birth: -
[root@idys test] touch -d 20200101 teacherd
[root@idys test] stat teacherd
File: ‘teacherd’
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: 802h/2050d Inode: 17361913 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2020-01-01 00:00:00.000000000 +0800
Modify: 2020-01-01 00:00:00.000000000 +0800
Change: 2020-11-03 20:28:35.072749399 +0800
Birth: -
-r
同步时间属性[root@idys test] stat teacherd teachere # 查看 teacherd 和 teachere 的时间属性
File: ‘teacherd’
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: 802h/2050d Inode: 17361913 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2020-01-01 00:00:00.000000000 +0800
Modify: 2020-01-01 00:00:00.000000000 +0800
Change: 2020-11-03 20:28:35.072749399 +0800
Birth: -
File: ‘teachere’
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: 802h/2050d Inode: 17361914 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2020-11-02 22:48:56.831154042 +0800
Modify: 2020-11-02 22:48:56.831154042 +0800
Change: 2020-11-02 22:48:56.831154042 +0800
Birth: -
[root@idys test] stat teacherd teachere # 将 teachere的修改时间属性 和 teacherd 的修改时间属性一样
File: ‘teacherd’
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: 802h/2050d Inode: 17361913 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2020-01-01 00:00:00.000000000 +0800
Modify: 2020-01-01 00:00:00.000000000 +0800
Change: 2020-11-03 20:28:35.072749399 +0800
Birth: -
File: ‘teachere’
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: 802h/2050d Inode: 17361914 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2020-01-01 00:00:00.000000000 +0800
Modify: 2020-01-01 00:00:00.000000000 +0800
Change: 2020-11-03 20:31:36.614363410 +0800
Birth: -
-t
指定文件的时间[root@idys test] touch -t 200110121223.12 teachere
[root@idys test] stat teachere
File: ‘teachere’
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: 802h/2050d Inode: 17361914 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2001-10-12 12:23:12.000000000 +0800
Modify: 2001-10-12 12:23:12.000000000 +0800
Change: 2020-11-03 20:34:16.699930420 +0800
Birth: -
[root@id
ls
就是list
的缩写,其功能类似于dos
下的dir
命令
语法格式
ls [option] [file]
参数 | 含义 |
---|---|
-l |
使用长格式列出文件及目录信息 |
-a |
显示目录下所有的文件,包括以. 开头的隐藏文件 |
-t |
根据最后的修改时间排序,默认是以文件名排序 |
-r |
reverse ,依次相反次序排序 |
-F |
在条目后加上文件类型的指示符号(* 、/ 、= 、@ 、| ,其中的一个) |
-p |
只在目录后面加上/ |
-i |
显示inode 节点信息 |
-d |
当遇到目录时,列出目录本身而非目录内的文件,并且不跟随符号链接 |
-h |
以人类可读的信息显示文件或目录大小 |
-A |
列出所有文件,包括隐藏文件,但不包括. 与.. 这两个目录 |
-S |
根据文件大小排序 |
-R |
递归列出所有子目录 |
-x |
逐行列出项目而不是逐栏列出 |
-X |
根据扩展名排序 |
-c |
根据状态改变时间(ctime )排序 |
-u |
根据最后访问时间(atime )排序 |
color={never,always,auto} |
不同的文件类型显示不同的颜色参数,never 表示不显示,always 表示总是显示,auto 表示自动显示 |
--time-style={full-iso,long-iso,iso,locale} |
以不同的时间格式输出,long-iso 效果最好 |
--time={atime,ctime} |
按不同的时间属性输出,atime 表示按访问时间,ctime 表示按改变权限属性时间,如果不加此参数则默认为最后修改时间 |
[root@idys test] touch .a
.
还有..
[root@idys test] ls -a
. .. .a teachera teacherb teacherc teacherd teachere
.
和..
[root@idys test] ls -A
.a teachera teacherb teacherc teacherd teachere
long-iso
[root@idys test] ls -l --time-style=long-iso
total 0
-rw-r--r-- 1 root root 0 2020-11-02 22:54 teachera
-rw-r--r-- 1 root root 0 2020-11-02 22:48 teacherb
-rw-r--r-- 1 root root 0 2020-11-02 22:48 teacherc
-rw-r--r-- 1 root root 0 2020-01-01 00:00 teacherd
-rw-r--r-- 1 root root 0 2020-11-03 20:50 teachere
ls -l
默认显示的是文件最后一次修改时间
ls
列举文件的访问时间(atime
)和修改时间(mtime
)和改变时间(ctime
)[root@idys test] ls -l --time-style=long-iso --time=atime
total 0
-rw-r--r-- 1 root root 0 2020-11-02 22:51 teachera
-rw-r--r-- 1 root root 0 2020-11-02 22:48 teacherb
-rw-r--r-- 1 root root 0 2020-11-02 22:48 teacherc
-rw-r--r-- 1 root root 0 2020-01-01 00:00 teacherd
-rw-r--r-- 1 root root 0 2020-11-03 20:50 teachere
[root@idys test] ls -l --time-style=long-iso --time=ctime
total 0
-rw-r--r-- 1 root root 0 2020-11-02 22:54 teachera
-rw-r--r-- 1 root root 0 2020-11-02 22:48 teacherb
-rw-r--r-- 1 root root 0 2020-11-02 22:48 teacherc
-rw-r--r-- 1 root root 0 2020-11-03 20:28 teacherd
-rw-r--r-- 1 root root 0 2020-11-03 20:50 teachere
[root@idys test] ls -l --time-style=long-iso
total 0
-rw-r--r-- 1 root root 0 2020-11-02 22:54 teachera
-rw-r--r-- 1 root root 0 2020-11-02 22:48 teacherb
-rw-r--r-- 1 root root 0 2020-11-02 22:48 teacherc
-rw-r--r-- 1 root root 0 2020-01-01 00:00 teacherd
-rw-r--r-- 1 root root 0 2020-11-03 20:50 teachere
ls -F
文件对于不同文件采取标记信息[root@idys tmp] ls -F
systemd-private-ab003aec97a446c48981af4062c9e7ab-chronyd.service-DVdEky/ test/ vmware-root_603-3980363997/
[root@idys tmp] ls -F | grep /$
systemd-private-ab003aec97a446c48981af4062c9e7ab-chronyd.service-DVdEky/
test/
vmware-root_603-3980363997/
[root@idys tmp] ls -ld test/
drwxr-xr-x 2 root root 96 Nov 4 08:31 test/
[root@idys tmp] ls -Rl
.:
total 0
drwx------ 3 root root 17 Nov 4 08:21 systemd-private-ab003aec97a446c48981af4062c9e7ab-chronyd.service-DVdEky
drwxr-xr-x 2 root root 96 Nov 4 08:31 test
drwx------ 2 root root 6 Nov 3 20:24 vmware-root_603-3980363997
./systemd-private-ab003aec97a446c48981af4062c9e7ab-chronyd.service-DVdEky:
total 0
drwxrwxrwt 2 root root 6 Nov 4 08:21 tmp
./systemd-private-ab003aec97a446c48981af4062c9e7ab-chronyd.service-DVdEky/tmp:
total 0
./test:
total 0
-rw-r--r-- 1 root root 0 Nov 2 22:54 teachera
-rw-r--r-- 1 root root 0 Nov 2 22:48 teacherb
-rw-r--r-- 1 root root 0 Nov 2 22:48 teacherc
-rw-r--r-- 1 root root 0 Jan 1 2020 teacherd
-rw-r--r-- 1 root root 0 Nov 3 20:50 teachere
./vmware-root_603-3980363997:
total 0
[root@idys tmp] ls -lt --time-style=long-iso /etc | head -10
total 1048
-rw-r--r-- 1 root root 76 2020-11-04 08:21 resolv.conf
drwxr-xr-x. 2 root root 46 2020-11-01 09:55 bash_completion.d
drwxr-xr-x. 2 root root 4096 2020-11-01 09:55 profile.d
drwxr-xr-x. 6 root root 4096 2020-10-31 22:08 sysconfig
drwxr-xr-x 2 root root 38 2020-10-31 22:08 ntp
-rw-r--r-- 1 root root 882 2020-10-31 22:08 passwd
---------- 1 root root 604 2020-10-31 22:08 shadow
---------- 1 root root 364 2020-10-31 22:08 gshadow
-rw-r--r-- 1 root root 459 2020-10-31 22:08 group
-r
反向排序[root@idys tmp] ls -rlt --time-style=long-iso /etc | head -10
total 1048
-rw-r--r--. 1 root root 1634 2012-12-25 11:02 rpc
-rw-r--r--. 1 root root 28 2013-02-28 04:29 ld.so.conf
-rw-r--r--. 1 root root 670293 2013-06-07 22:31 services
-rw-r--r--. 1 root root 233 2013-06-07 22:31 printcap
-rw-r--r--. 1 root root 0 2013-06-07 22:31 motd
-rw-r--r--. 1 root root 942 2013-06-07 22:31 inputrc
-rw-r--r--. 1 root root 460 2013-06-07 22:31 hosts.deny
-rw-r--r--. 1 root root 370 2013-06-07 22:31 hosts.allow
-rw-r--r--. 1 root root 158 2013-06-07 22:31 hosts
ls -F
说明
/
代表目录*
代表可执行文件=
代表套接字|
代表管道文件@
代表符号链接ls
命令内容的属性解读[root@idys test] ls -lhi
total 0
17361892 -rw-r--r-- 1 root root 0 Nov 2 22:54 teachera
17361902 -rw-r--r-- 1 root root 0 Nov 2 22:48 teacherb
17361912 -rw-r--r-- 1 root root 0 Nov 2 22:48 teacherc
17361913 -rw-r--r-- 1 root root 0 Jan 1 2020 teacherd
17361914 -rw-r--r-- 1 root root 0 Nov 3 20:50 teachere
inode
索引节点编号9
个字符为权限符号)ln
命令的讲解)cp
命令:copy
缩写,功能为复制文件或目录cp [option] [source] [dest]
参数 | 含义 |
---|---|
-p |
复制文件时保持源文件的所有者、权限信息及时间属性 |
-d |
如果复制的源文件是符号链接,那么仅复制符号链接本身,而且保留符号链接所指向的目标或目录 |
-r |
递归复制目录,即复制目录下的所有层级的子目录及文件 |
-a |
等同于上面的-p 、-d 、-r 这3 个选项功能的总和 |
-i |
覆盖已有文件前提示用户确认 |
-t |
默认情况下命令格式是cp 源文件 目录文件 ,使用-t 参数可以颠倒顺序,格式变为cp -t 目标文件 源文件 |
-a
比较[root@idys test] ls -l --time-style=full-iso # 不使用 -a 复制,会更新属性信息
total 0
-rw-r--r--. 1 root root 0 2001-01-21 00:00:00.000000000 +0800 file1.txt
-rw-r--r--. 1 root root 0 2020-11-05 19:48:26.854147078 +0800 file2.txt
[root@idys test] cp -a file1.txt file3.txt # 使用 -a 复制保留了属性信息
[root@idys test] ls -l --time-style=full-iso
total 0
-rw-r--r--. 1 root root 0 2001-01-21 00:00:00.000000000 +0800 file1.txt
-rw-r--r--. 1 root root 0 2020-11-05 19:48:26.854147078 +0800 file2.txt
-rw-r--r--. 1 root root 0 2001-01-21 00:00:00.000000000 +0800 file3.txt
-i
参数[root@idys test] cat file1.txt # 使用 -i 后,如果有同名文件,会询问是否覆盖
111
[root@idys test] cat file4.txt
[root@idys test] cp file1.txt file4.txt
cp: overwrite ‘file4.txt’? n
[root@idys test] cp -i file1.txt file4.txt
cp: overwrite ‘file4.txt’? n
[root@idys test] alias cp # 可以看到 cp 命令默认就是 加了 -i 选项
alias cp='cp -i'
-r
复制目录[root@idys test] mkdir dir{1,2};touch dir1/file{1..4}.txt # 创建测试目录
[root@idys test] tree dir1 dir2
-bash: tree: command not found
[root@idys test] yum -y install tree > /dev/null
[root@idys test] tree dir1 dir2
dir1
├── file1.txt
├── file2.txt
├── file3.txt
└── file4.txt
dir2
[root@idys test] cp dir1 dir2/ # 可以看到没有复制成功
cp: omitting directory ‘dir1’
[root@idys test] tree dir2/
dir2/
0 directories, 0 files
[root@idys test] cp -r dir1 dir2/ # 使用 -r 后,复制成功
[root@idys test] tree dir2/
dir2/
└── dir1
├── file1.txt
├── file2.txt
├── file3.txt
└── file4.txt
1 directory, 4 files
[root@idys test] /usr/bin/cp file1.txt file4.txt
[root@idys test] cat file4.txt
111
[root@idys test] alias cp
alias cp='cp -i'
\
取消别名[root@idys test] cat file1.txt # 可以看到 使用 反斜线 也 取消了 别名
111
[root@idys test] cat file3.txt
[root@idys test] cp file1.txt file3.txt
cp: overwrite ‘file3.txt’? n
[root@idys test] cat file3.txt
[root@idys test] \cp file1.txt file3.txt
[root@idys test] cat file3.txt
111
unalias cp
取消别名unalias cp
[root@idys test] cp file1.txt{,.BAK}
[root@idys test] ls
dir1 dir2 file1.txt file1.txt.BAK file2.txt file3.txt file4.txt
mv
命令可以理解英文move
的缩写
语法格式
mv [option] [source] [dest]
参数 | 含义 |
---|---|
-f |
若目标文件已经存在,则不会询问而是直接覆盖 |
-i |
若目标文件已经存在,则会询问是否覆盖 |
-n |
不覆盖已经存在的文件 |
-t |
和cp -t 一样,目标文件在前,原文件在后 |
-u |
源文件比目标文件新,或者目标文件不存在时才进行移动 |
[root@idys test] alias mv
alias mv='mv -i'
[root@idys test] ls
dir1 dir2 file1.txt file1.txt.BAK file2.txt file3.txt file4.txt
[root@idys test] mv file1.txt file5.txt # 目标文件不存在,直接复制
[root@idys test] mv file2.txt file3.txt # 目标文件存在,则询问是否覆盖
mv: overwrite ‘file3.txt’? n
[root@idys test] \mv file2.txt file3.txt # 取消别名, 目标文件存在,直接覆盖
[root@idys test] ls
dir1 dir2 file1.txt.BAK file3.txt file4.txt file5.txt
[root@idys test] tree dir3/
dir3/
0 directories, 0 files
[root@idys test] mv file1.txt.BAK file3.txt file5.txt dir3/
[root@idys test] tree dir3
dir3
├── file1.txt.BAK
├── file3.txt
└── file5.txt
0 directories, 3 files
[root@idys test] touch file{1..3}.txt
[root@idys test] ls
dir1 dir2 dir3 dir4 file1.txt file2.txt file3.txt file4.txt
[root@idys test] mv -t dir
dir1/ dir2/ dir3/ dir4/
[root@idys test] mv -t dir4/ file1.txt file2.txt file3.txt file4.txt
[root@idys test] ls
dir1 dir2 dir3 dir4
[root@idys test] tree dir4/
dir4/
├── file1.txt
├── file2.txt
├── file3.txt
└── file4.txt
0 directories, 4 files
rm
命令可以理解为remove
,这是Linux
最危险的命令
语法格式
rm [option] [file]
选项 | 含义 |
---|---|
-f |
强制删除。忽略不存在的文件,不提示确认 |
-i |
在删除前需要确认 |
-I |
在删除超过三个文件或者递归删除前要求确认 |
-r |
递归删除目录及其内容 |
[root@idys test] mkdir -p dir{1..4} # 创建目录
[root@idys test] ls
dir1 dir2 dir3 dir4 teachera teacherb teacherc teacherd teachere
[root@idys test] touch dir{1..4}/file{1..4}.txt # 在目录下创建文件
[root@idys test] tree . --noreport # 查看目录结构
.
├── dir1
│ ├── file1.txt
│ ├── file2.txt
│ ├── file3.txt
│ └── file4.txt
├── dir2
│ ├── file1.txt
│ ├── file2.txt
│ ├── file3.txt
│ └── file4.txt
├── dir3
│ ├── file1.txt
│ ├── file2.txt
│ ├── file3.txt
│ └── file4.txt
├── dir4
│ ├── file1.txt
│ ├── file2.txt
│ ├── file3.txt
│ └── file4.txt
├── teachera
├── teacherb
├── teacherc
├── teacherd
└── teachere
[root@idys test] alias rm
alias rm='rm -i'
[root@idys test] rm teachera
rm: remove regular empty file ‘teachera’? n # 取消删除
rm
别名,执行删除[root@idys test] \rm teachera
[root@idys test] ls
dir1 dir2 dir3 dir4 teacherb teacherc teacherd teachere
[root@idys test] ls teachera
ls: cannot access teachera: No such file or directory
[root@idys test] tree .
.
├── dir1
│ ├── file1.txt
│ ├── file2.txt
│ ├── file3.txt
│ └── file4.txt
├── dir2
│ ├── file1.txt
│ ├── file2.txt
│ ├── file3.txt
│ └── file4.txt
├── dir3
│ ├── file1.txt
│ ├── file2.txt
│ ├── file3.txt
│ └── file4.txt
├── dir4
│ ├── file1.txt
│ ├── file2.txt
│ ├── file3.txt
│ └── file4.txt
├── teacherc
├── teacherd
└── teachere
4 directories, 19 files
[root@idys test] rm -rf dir1/
[root@idys test] tree .
.
├── dir2
│ ├── file1.txt
│ ├── file2.txt
│ ├── file3.txt
│ └── file4.txt
├── dir3
│ ├── file1.txt
│ ├── file2.txt
│ ├── file3.txt
│ └── file4.txt
├── dir4
│ ├── file1.txt
│ ├── file2.txt
│ ├── file3.txt
│ └── file4.txt
├── teacherc
├── teacherd
└── teachere
3 directories, 15 files
慎用rsync --delete
文件删除后,可以使用ext3grep
命令恢复,不过恢复之前,先卸载对应的挂载目录
rmdir
命令用于删除空目录(rmove empty directory
)
语法格式
rmdir [option] [directory]
参数 | 含义 |
---|---|
-p |
当子目录删除后,父目录也为空时,那么将它们一并删除 |
-v |
显示命令执行过程 |
[root@idys test] mkdir -p dir2/dir{2,2/dir3{,/dir4}}
[root@idys test] tree dir2
dir2
└── dir2
└── dir3
└── dir4
3 directories, 0 files
[root@idys test] rmdir dir2/dir2/dir3/dir4/
[root@idys test] tree dir2/
dir2/
└── dir2
└── dir3
2 directories, 0 files
[root@idys test] rmdir -p dir2/dir2/dir3/
[root@idys test] ls # 可以发现整个目录结构都被删除
dir3 dir4
ln
命令意为 link
,link
分为hard link
和soft link
ln [option] [source] [target]
参数 | 含义 |
---|---|
无参 | 创建硬链接 |
-s |
创建软链接 |
硬链接(hard link
)
ln source_file target_file
inode
一样inode
链接数为0
时,那么文件会被删除软链接(soft link
)
ln -s source_file target_link
Windows
快捷方式l
inode
号不一样[root@idys test] cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
[root@idys test] ln /etc/hosts /etc/kkkk # 创建硬链接
[root@idys test] cat /etc/kkkk
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
[root@idys test] rm /etc/hosts # 删除源文件
hosts hosts.allow hosts.deny
[root@idys test] rm /etc/hosts
rm: remove regular file ‘/etc/hosts’? y
[root@idys test] ls /etc/kkkk
/etc/kkkk
[root@idys test] cat /etc/kkkk
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
[root@idys test] ln /etc/kkkk /etc/hosts
[root@idys test] ls
a_link b_link dir3 dir4 test.txt
[root@idys test] ls /etc/hosts
/etc/hosts
/etc/hosts /etc/kkkk
[root@idys test] ls -li /etc/{hosts,kkkk}
16777794 -rw-r--r--. 2 root root 158 Jun 7 2013 /etc/hosts
16777794 -rw-r--r--. 2 root root 158 Jun 7 2013 /etc/kkkk
[root@idys test] rm /etc/kkkk
rm: remove regular file ‘/etc/kkkk’? y
[root@idys test] echo 'idys' > test.txt
[root@idys test] ls
dir3 dir4 test.txt
[root@idys test] ln -s test.txt a_link
[root@idys test] ln -s a_link b_link
[root@idys test] cat b_link
idys
[root@idys test] ln -s dir3 enen # 为目录创建软链接
[root@idys test] ls
a_link b_link dir3 dir4 enen test.txt
使用readlink
可以查看符号链接对应的真实内容
语法格式
readlink [option] [file]
参数 | 含义 |
---|---|
-r |
一直跟随符号链接,直到链接文件位置,但要保证一个非符号链接的文件 |
[root@idys test] ls -l b_link a_link test.txt # 可以看到 b_link指向 a_link, a_link指向 源文件
lrwxrwxrwx 1 root root 8 Nov 22 17:38 a_link -> test.txt
lrwxrwxrwx 1 root root 6 Nov 22 17:38 b_link -> a_link
-rw-r--r-- 1 root root 5 Nov 22 17:35 test.txt
[root@idys test] readlink b_link
a_link
[root@idys test] readlink -f b_link
/tmp/test/test.txt
stat
用于显示文件或文件系统的状态信息
语法格式
stat [option] [file]
参数 | 含义 |
---|---|
-f |
显示文件所在分区的文件系统状态而非文件状态 |
-c |
使用指定输出格式代替默认值 |
-t |
使用简洁格式输出 |
[root@idys test] stat test.txt
File: ‘test.txt’
Size: 5 Blocks: 8 IO Block: 4096 regular file
Device: 802h/2050d Inode: 16786202 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2020-11-22 17:38:33.305946718 +0800
Modify: 2020-11-22 17:35:50.827469809 +0800
Change: 2020-11-22 17:35:50.827469809 +0800
Birth: -
size
:文件大小Blocks
:占用block
数量IO Block
:Block
总大小为4096
(8*512
)regular file
:文件类型为普通文件Device
:设备编号的十六进制(h)和十进制(d)Inode
:文件的inode
值Links
:文件的硬链接数Access
:文件权限Uid
和Gid
:用户和用户组Access: 2020-11-22 17:38:33.305946718 +0800
:访问时间Modify: 2020-11-22 17:35:50.827469809 +0800
:修改时间Change: 2020-11-22 17:35:50.827469809 +0800
:改变时间
[root@idys test] stat -c %a test.txt
644
more
命令的功能类似于cat
,但cat
命令是将整个文件的内容一次性显示在屏幕上,而more
则会一页一页地显示内容more [option] [file]
参数选项 | 解释说明 |
---|---|
-num |
指定屏幕显示大小为num 行 |
+num |
从行号num 开始显示 |
-s |
把连续的多个空行显示为一行 |
-p |
不滚屏,而是清除整个屏幕,然后显示文本 |
-c |
不滚屏,而是从每一屏的顶部开始显示文本,每显示完一行,就清除这一行的剩余部分 |
vi
的交互界面子命令 | 含义 |
---|---|
h 或者? |
查看帮助 |
空格键 | 向下滚动一屏 |
z |
向下滚动一屏 |
Enter |
向下显示1 行 |
f |
向下滚动一屏 |
b |
返回上一屏 |
= |
输出当前行的行号 |
/ 查找的文本 |
查找指定的文本 |
:f |
输出文件名和当前行号 |
v |
调用vi 编辑器 |
!命令 |
调用Shell ,并且执行命令 |
q |
退出more |
5
行more -5 +200 /var/log/messages
less
命令在读取文件内容时,并不是像more
、vi
命令一样,要一次性将整个文件加载之后再显示,而是会根据需要来加载文件的内容,这样打开文件的速度会更快。而且less
命令支持[page up]
、[page down]
等按键的功能,可以通过该功能向前或者向后翻看文件,这样更容易查看一个文件的内容。less [option] [file]
参数 | 含义 |
---|---|
-i |
搜索时忽略大小写 |
-m |
显示类似于more 命令的进度百分比 |
-N |
显示每行的行号 |
-s |
将连续的空行压缩为一行显示 |
-e |
当文件显示到结尾时自动退出文件,若不使用此选项则需要按下q 退出less |
子命令 | 含义 |
---|---|
b |
向前翻一页 |
空格键 | 向后翻一页 |
u |
向前翻半页 |
d |
向后翻半页 |
y |
向上滚动一行 |
回车键 | 向下滚动一行 |
向上箭头 | 向上滚动一行 |
向下箭头 | 向下滚动一行 |
【page up】 | 向前翻一页 |
【page down】 | 向后翻一页 |
/ 字符串 | 向下搜索“字符串” |
? 字符串 | 向上搜索“字符串” |
n |
向后查找下一个匹配的文本 |
N |
向前查找前一个匹配的文本 |
v |
进入vi 编辑页面 |
!命令 |
调用shell ,并执行命令 |
G |
移动到最后一行 |
g |
移动到第一行 |
h |
显示帮助界面 |
q |
推荐less 显示的界面 |
[root@iZwz93rgmegkukw2f9vl89Z ~] less -N /etc/services
1 # /etc/services:
2 # $Id: services,v 1.55 2013/04/14 ovasik Exp $
3 #
4 # Network services, Internet style
5 # IANA services version: last updated 2013-04-10
6 #
7 # Note that it is presently the policy of IANA to assign a single well-known
8 # port number for both TCP and UDP; hence, most entries here have two entries
9 # even if the protocol doesn't support UDP operations.
10 # Updated from RFC 1700, ``Assigned Numbers'' (October 1994). Not all ports
11 # are included, only the more common ones.
12 #
13 # The latest IANA port assignments can be gotten from
14 # http://www.iana.org/assignments/port-numbers
15 # The Well Known Ports are those from 0 through 1023.
16 # The Registered Ports are those from 1024 through 49151
17 # The Dynamic and/or Private Ports are those from 49152 through 65535
tail
命令用于显示文件内容的尾部,它默认输出文件的最后10
行参数 | 含义 |
---|---|
-c <数目> |
指定显示的字节数 |
-n <行数> |
指定显示的行数 |
-f |
实时输出文件变化后追加的数据 |
-F |
功能等同于-f --retry |
–-retry |
不停地尝试打开文件直到打开为止,和-f 参数合用 |
--pid = 进程号 |
与-f 参数连用,在进程结束后自动退出tail 命令 |
-s 秒数 N |
监视文件变化的间隔秒数 |
-q |
不显示包含给定文件名的文件头 |
-v |
总是显示包含给定文件名的文件头 |
[root@iZwz93rgmegkukw2f9vl89Z ~] tail -5 /etc/services
com-bardac-dw 48556/tcp # com-bardac-dw
com-bardac-dw 48556/udp # com-bardac-dw
iqobject 48619/tcp # iqobject
iqobject 48619/udp # iqobject
matahari 49000/tcp # Matahari Broker
11100
行开始显示文件内容直到文件末尾[root@iZwz93rgmegkukw2f9vl89Z ~] tail -n +11100 /etc/services
[root@iZwz93rgmegkukw2f9vl89Z ~] tail -f /var/log/messages
Dec 10 14:10:01 iZwz93rgmegkukw2f9vl89Z systemd: Started Session 2383 of user root.
Dec 10 14:20:01 iZwz93rgmegkukw2f9vl89Z systemd: Started Session 2384 of user root.
Dec 10 14:30:01 iZwz93rgmegkukw2f9vl89Z systemd: Started Session 2385 of user root.
Dec 10 14:35:02 iZwz93rgmegkukw2f9vl89Z systemd-logind: Removed session 2372.
Dec 10 14:35:02 iZwz93rgmegkukw2f9vl89Z systemd: Removed slice User Slice of root.
Dec 10 14:35:03 iZwz93rgmegkukw2f9vl89Z systemd: Created slice User Slice of root.
Dec 10 14:35:03 iZwz93rgmegkukw2f9vl89Z systemd: Started Session 2386 of user root.
Dec 10 14:35:03 iZwz93rgmegkukw2f9vl89Z systemd-logind: New session 2386 of user root.
Dec 10 14:40:01 iZwz93rgmegkukw2f9vl89Z systemd: Started Session 2387 of user root.
Dec 10 14:50:01 iZwz93rgmegkukw2f9vl89Z systemd: Started Session 2388 of user root.
tailf
命令几乎等同于tail -f
,不同的是,如果文件不增长,那么它不会去访问磁盘文件,也不会更改文件的访问时间。tailf
命令几乎等同于tail -f,严格说来应该与tail --follow=name
更相似些。当文件改名之后它也能继续跟踪,特别适合于日志文件的跟踪(follow the growth of a log file
)。与tail -f
不同的是,如果文件不增长,它不会去访问磁盘文件。tailf特别适合那些便携机上跟踪日志文件,因为它能省电,因为减少了磁盘访问。
语法格式
tailf [option] [file]
参数 | 含义 |
---|---|
-n |
输出最后数行 |
-NUMBER |
与NUMBER相同 |
-V |
输出版本信息并退出 |
-h |
显示帮助并退出 |
[root@iZwz93rgmegkukw2f9vl89Z ~] tailf /var/log/secure
Dec 10 13:56:44 iZwz93rgmegkukw2f9vl89Z sshd[877]: Connection closed by 191.5.100.183 port 54793 [preauth]
Dec 10 13:56:50 iZwz93rgmegkukw2f9vl89Z sshd[886]: Invalid user admin from 191.5.100.183 port 54797
Dec 10 13:56:50 iZwz93rgmegkukw2f9vl89Z sshd[886]: input_userauth_request: invalid user admin [preauth]
Dec 10 13:56:50 iZwz93rgmegkukw2f9vl89Z sshd[886]: pam_unix(sshd:auth): check pass; user unknown
Dec 10 13:56:50 iZwz93rgmegkukw2f9vl89Z sshd[886]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=191.5.100.183
Dec 10 13:56:52 iZwz93rgmegkukw2f9vl89Z sshd[886]: Failed password for invalid user admin from 191.5.100.183 port 54797 ssh2
Dec 10 13:56:56 iZwz93rgmegkukw2f9vl89Z sshd[886]: Connection closed by 191.5.100.183 port 54797 [preauth]
Dec 10 14:35:02 iZwz93rgmegkukw2f9vl89Z sshd[29927]: pam_unix(sshd:session): session closed for user root
Dec 10 14:35:03 iZwz93rgmegkukw2f9vl89Z sshd[2847]: Accepted password for root from 171.43.236.47 port 16299 ssh2
Dec 10 14:35:03 iZwz93rgmegkukw2f9vl89Z sshd[2847]: pam_unix(sshd:session): session opened for user root by (uid=0)
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 级 |
增量备份 |
首先在vmware workstation
上给虚拟机加一块磁盘,这个操作我就不列举了
查看当前磁盘个数
[root@idys3 ~] lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 50G 0 disk
├─sda1 8:1 0 200M 0 part /boot
├─sda2 8:2 0 20G 0 part /
└─sda3 8:3 0 1G 0 part [SWAP]
sr0 11:0 1 10.3G 0 rom /media/cdrom1
可以发现磁盘插进入的硬盘,系统还没有识别出来。
[root@idys3 ~] ls /sys/class/scsi_host/host # 先查看有几个host
host0/ host1/ host2/
[root@idys3 ~] for i in {0..2};do echo '- - -' > /sys/class/scsi_host/host$i/scan;done
[root@idys3 ~] lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 50G 0 disk
├─sda1 8:1 0 200M 0 part /boot
├─sda2 8:2 0 20G 0 part /
└─sda3 8:3 0 1G 0 part [SWAP]
sdb 8:16 0 20G 0 disk
sr0 11:0 1 10.3G 0 rom /media/cdrom1
2G
[root@idys3 ~] fdisk /dev/sdb
Welcome to fdisk (util-linux 2.23.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Device does not contain a recognized partition table
Building a new DOS disklabel with disk identifier 0xe64ff604.
Command (m for help): n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p
Partition number (1-4, default 1):
First sector (2048-41943039, default 2048):
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-41943039, default 41943039): +2G
Partition 1 of type Linux and of size 2 GiB is set
Command (m for help): p
Disk /dev/sdb: 21.5 GB, 21474836480 bytes, 41943040 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0xe64ff604
Device Boot Start End Blocks Id System
/dev/sdb1 2048 4196351 2097152 83 Linux
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
2G
大小的/dev/sdb1
主分区[root@idys3 ~] lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 50G 0 disk
├─sda1 8:1 0 200M 0 part /boot
├─sda2 8:2 0 20G 0 part /
└─sda3 8:3 0 1G 0 part [SWAP]
sdb 8:16 0 20G 0 disk
└─sdb1 8:17 0 2G 0 part
sr0 11:0 1 10.3G 0 rom /media/cdrom1
[root@idys3 ~] mkfs.xfs /dev/sdb1
meta-data=/dev/sdb1 isize=512 agcount=4, agsize=131072 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=524288, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
[root@idys3 ~] mkdir /media/xfs_dir1
[root@idys3 ~] mount /dev/sdb1 /media/xfs_dir1/
[root@idys3 xfs_dir1] touch {a,b}.txt;cp /etc/passwd ./
[root@idys3 xfs_dir1] ls
a.txt b.txt passwd
xfsdump -f 备份存放位置 要备份路径或设备文件
[root@idys3 media] yum -y install xfsdump # 先安装备份工具
[root@idys3 media] xfsdump -f /mnt/sdb1_backup /dev/sdb1
xfsdump: using file dump (drive_simple) strategy
xfsdump: version 3.1.7 (dump format 3.0) - type ^C for status and control
============================= dump label dialog ==============================
please enter label for this dump session (timeout in 300 sec)
-> sdb1_backup
session label entered: "sdb1_backup"
--------------------------------- end dialog ---------------------------------
xfsdump: level 0 dump of idys3.cn.com:/media/xfs_dir1
xfsdump: dump date: Thu Dec 10 17:26:09 2020
xfsdump: session id: f119ea6d-6174-420d-84a7-e338622e0924
xfsdump: session label: "sdb1_backup"
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
xfsdump: /var/lib/xfsdump/inventory created
============================= 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 23016 bytes
xfsdump: dump size (non-dir files) : 1056 bytes
xfsdump: dump complete: 118 seconds elapsed
xfsdump: Dump Summary:
xfsdump: stream 0 /mnt/sdb1_backup OK (success)
xfsdump: Dump Status: SUCCESS
注意:备份的路径这里不能写成
/sdb1/
。 可以是/dev/sdb1
或/sdb1
,xfsdump
只能对整个分区备份,或者后接整个分区的根目录
[root@idys3 media] xfsdump -f /mnt/sdb1_file_backup -s a.txt /dev/sdb1 -L file_normal -M test
xfsdump: using file dump (drive_simple) strategy
xfsdump: version 3.1.7 (dump format 3.0) - type ^C for status and control
xfsdump: level 0 dump of idys3.cn.com:/media/xfs_dir1
xfsdump: dump date: Thu Dec 10 17:33:02 2020
xfsdump: session id: cf50621a-9a06-4482-aa8d-46749ee615c2
xfsdump: session label: "file_normal"
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: 21120 bytes
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 21384 bytes
xfsdump: dump size (non-dir files) : 0 bytes
xfsdump: dump complete: 0 seconds elapsed
xfsdump: Dump Summary:
xfsdump: stream 0 /mnt/sdb1_file_backup OK (success)
xfsdump: Dump Status: SUCCESS
-L
:xfsdump
记录每次备份的session
标头,这里可以填写针对此文件系统的简易说明
-M
:xfsdump
可以记录储存媒体的标头,这里可以填写此媒体的简易说明
-s
: 文件路径 只对指定的文件进行备份,-s指定时,路径写的是相对路径(-s可以是文件或目录)
[root@idys3 media] xfsdump -I
file system 0:
fs id: 0ba19bcf-dcb2-4001-a94c-d3046704f0ef
session 0:
mount point: idys3.cn.com:/media/xfs_dir1
device: idys3.cn.com:/dev/sdb1
time: Thu Dec 10 17:26:09 2020
session label: "sdb1_backup"
session id: f119ea6d-6174-420d-84a7-e338622e0924
level: 0
resumed: NO
subtree: NO
streams: 1
stream 0:
pathname: /mnt/sdb1_backup
start: ino 67 offset 0
end: ino 70 offset 0
interrupted: NO
media files: 1
media file 0:
mfile index: 0
mfile type: data
mfile size: 23016
mfile start: ino 67 offset 0
mfile end: ino 70 offset 0
media label: "sdb1"
media id: 01b7c0ba-9ecc-4b5e-82d6-49f5b1fc8dd2
session 1:
mount point: idys3.cn.com:/media/xfs_dir1
device: idys3.cn.com:/dev/sdb1
time: Thu Dec 10 17:33:02 2020
session label: "file_normal"
session id: cf50621a-9a06-4482-aa8d-46749ee615c2
level: 0
resumed: NO
subtree: YES
streams: 1
stream 0:
pathname: /mnt/sdb1_file_backup
start: ino 67 offset 0
end: ino 68 offset 0
interrupted: NO
media files: 1
media file 0:
mfile index: 0
mfile type: data
mfile size: 21384
mfile start: ino 67 offset 0
mfile end: ino 68 offset 0
media label: "test"
media id: 53821e61-efda-4931-83f8-2d79150f7c0c
xfsdump: Dump Status: SUCCESS
备份成功后,我们就可以在
/var/lib/xfsdump/inventory
目录下看到生成的档案信息当然也可以通过
xfsdump -I
查看自己使用xfsdump
生成的档案信息
[root@idys3 media] ls # 首先把文件全部删除
cdrom1 cdrom2 xfs_dir1
[root@idys3 media] cd xfs_dir1/
[root@idys3 xfs_dir1] ls
a.txt b.txt passwd
[root@idys3 xfs_dir1] mkdir a
[root@idys3 xfs_dir1] mv a.txt b.txt passwd a
[root@idys3 xfs_dir1] ls
a
[root@idys3 xfs_dir1] rm -rf a
[root@idys3 xfs_dir1] ls
[root@idys3 xfs_dir1] xfsrestore -f /mnt/sdb1_backup /media/ #将备份归档的文件全部恢复
cdrom1/ cdrom2/ xfs_dir1/
[root@idys3 xfs_dir1] xfsrestore -f /mnt/sdb1_backup /media/xfs_dir1/
xfsrestore: using file dump (drive_simple) strategy
xfsrestore: version 3.1.7 (dump format 3.0) - type ^C for status and control
xfsrestore: searching media for dump
xfsrestore: examining media file 0
xfsrestore: dump description:
xfsrestore: hostname: idys3.cn.com
xfsrestore: mount point: /media/xfs_dir1
xfsrestore: volume: /dev/sdb1
xfsrestore: session time: Thu Dec 10 17:26:09 2020
xfsrestore: level: 0
xfsrestore: session label: "sdb1_backup"
xfsrestore: media label: "sdb1"
xfsrestore: file system id: 0ba19bcf-dcb2-4001-a94c-d3046704f0ef
xfsrestore: session id: f119ea6d-6174-420d-84a7-e338622e0924
xfsrestore: media id: 01b7c0ba-9ecc-4b5e-82d6-49f5b1fc8dd2
xfsrestore: using online session inventory
xfsrestore: searching media for directory dump
xfsrestore: reading directories
xfsrestore: 1 directories and 3 entries processed
xfsrestore: directory post-processing
xfsrestore: restoring non-directory files
xfsrestore: restore complete: 0 seconds elapsed
xfsrestore: Restore Summary:
xfsrestore: stream 0 /mnt/sdb1_backup OK (success)
xfsrestore: Restore Status: SUCCESS
[root@idys3 xfs_dir1] xfsrestore -f /mnt/sdb1_backup -s passwd /media/xfs_dir1/ # 只恢复 passwd 这个文件
xfsrestore: using file dump (drive_simple) strategy
xfsrestore: version 3.1.7 (dump format 3.0) - type ^C for status and control
xfsrestore: searching media for dump
xfsrestore: examining media file 0
xfsrestore: dump description:
xfsrestore: hostname: idys3.cn.com
xfsrestore: mount point: /media/xfs_dir1
xfsrestore: volume: /dev/sdb1
xfsrestore: session time: Thu Dec 10 17:26:09 2020
xfsrestore: level: 0
xfsrestore: session label: "sdb1_backup"
xfsrestore: media label: "sdb1"
xfsrestore: file system id: 0ba19bcf-dcb2-4001-a94c-d3046704f0ef
xfsrestore: session id: f119ea6d-6174-420d-84a7-e338622e0924
xfsrestore: media id: 01b7c0ba-9ecc-4b5e-82d6-49f5b1fc8dd2
xfsrestore: using online session inventory
xfsrestore: searching media for directory dump
xfsrestore: reading directories
xfsrestore: 1 directories and 3 entries processed
xfsrestore: directory post-processing
xfsrestore: restoring non-directory files
xfsrestore: restore complete: 0 seconds elapsed
xfsrestore: Restore Summary:
xfsrestore: stream 0 /mnt/sdb1_backup OK (success)
xfsrestore: Restore Status: SUCCESS
[root@idys3 xfs_dir1] ls # 可以看到现在只恢复了 passwd 这个文件
passwd
-s
后面带的是相对与整个文件系统的相对路径
[root@idys3 xfs_dir1] xfsrestore -f /mnt/sdb1_file_backup /media/xfs_dir1/
xfsrestore: using file dump (drive_simple) strategy
xfsrestore: version 3.1.7 (dump format 3.0) - type ^C for status and control
xfsrestore: searching media for dump
xfsrestore: examining media file 0
xfsrestore: dump description:
xfsrestore: hostname: idys3.cn.com
xfsrestore: mount point: /media/xfs_dir1
xfsrestore: volume: /dev/sdb1
xfsrestore: session time: Thu Dec 10 17:33:02 2020
xfsrestore: level: 0
xfsrestore: session label: "file_normal"
xfsrestore: media label: "test"
xfsrestore: file system id: 0ba19bcf-dcb2-4001-a94c-d3046704f0ef
xfsrestore: session id: cf50621a-9a06-4482-aa8d-46749ee615c2
xfsrestore: media id: 53821e61-efda-4931-83f8-2d79150f7c0c
xfsrestore: using online session inventory
xfsrestore: searching media for directory dump
xfsrestore: reading directories
xfsrestore: 1 directories and 3 entries processed
xfsrestore: directory post-processing
xfsrestore: restoring non-directory files
xfsrestore: restore complete: 0 seconds elapsed
xfsrestore: Restore Summary:
xfsrestore: stream 0 /mnt/sdb1_file_backup OK (success)
xfsrestore: Restore Status: SUCCESS
[root@idys3 xfs_dir1] ls
a.txt
xfsdump
不支持没有挂载的文件系统备份!所以只能备份已挂载的!xfsdump
必须使用 root
的权限才能操作 (涉及文件系统的关系)xfsdump
只能备份 XFS
文件系统xfsdump
备份下来的数据 (档案或储存媒体) 只能让 xfsrestore
解析xfsdump
是透过文件系统的 UUID
来分辨各个备份档的,因此不能备份两个具有相同 UUID
的文件系统增量备份是指在一次全备份或上一次增量备份后,以后每次的备份只需备份与前一次相比增加或者被修改的文件。这就意味着,第一次增量备份的对象是进行全备后所产生的增加和修改的文件;第二次增量备份的对象是进行第一次增量备份后所产生的增加和修改的文件,以此类推。
优缺点
优点:没有重复的备份数据,因此备份的数据量不大,备份所需的时间很短。
缺点:数据恢复相对比较麻烦,它需要上一次全备份和所有增量备份的内容才能够完全恢复成功,并且它们必须沿着从全备份到依次增量备份的时间顺序逐个反推恢复,因此可能会延长的恢复时间
1
的增量备份[root@idys3 xfs_dir1] xfsdump -l 1 -f /mnt/sdb_full_backup /dev/sdb1 -L full-backup -M first
xfsdump: using file dump (drive_simple) strategy
xfsdump: version 3.1.7 (dump format 3.0) - type ^C for status and control
xfsdump: level 1 incremental dump of idys3.cn.com:/media/xfs_dir1 based on level 0 dump begun Thu Dec 10 17:26:09 2020
xfsdump: dump date: Thu Dec 10 18:06:52 2020
xfsdump: session id: 1b5aa4a0-6470-44b2-b9bf-8cf7a5ee86ff
xfsdump: session label: "full-backup"
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: 29952 bytes
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 23552 bytes
xfsdump: dump size (non-dir files) : 1600 bytes
xfsdump: dump complete: 0 seconds elapsed
xfsdump: Dump Summary:
xfsdump: stream 0 /mnt/sdb_full_backup OK (success)
xfsdump: Dump Status: SUCCESS
-l
做一个等级为1
的备份:等级为1
是为增量备份
[root@idys3 xfs_dir1] xfsdump -l 2 -f /mnt/sdb_rise1_backup /dev/sdb1 -L full-backup -M first
xfsdump: using file dump (drive_simple) strategy
xfsdump: version 3.1.7 (dump format 3.0) - type ^C for status and control
xfsdump: level 2 incremental dump of idys3.cn.com:/media/xfs_dir1 based on level 1 dump begun Thu Dec 10 18:06:52 2020
xfsdump: dump date: Thu Dec 10 18:11:14 2020
xfsdump: session id: c1f88ce7-97b6-48ca-aada-36679c4cce37
xfsdump: session label: "full-backup"
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
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 22544 bytes
xfsdump: dump size (non-dir files) : 544 bytes
xfsdump: dump complete: 0 seconds elapsed
xfsdump: Dump Summary:
xfsdump: stream 0 /mnt/sdb_rise1_backup OK (success)
xfsdump: Dump Status: SUCCESS
级别
1
到9
为增量备份
[root@idys3 xfs_dir1] ls
a.txt b.txt c.txt d.txt fstab
[root@idys3 xfs_dir1] rm -r ./*
rm: remove regular empty file ‘./a.txt’? y
rm: remove regular file ‘./b.txt’? y
rm: remove regular empty file ‘./c.txt’? y
rm: remove regular empty file ‘./d.txt’? y
rm: remove regular file ‘./fstab’? y
(1)先恢复全量备份
(2)情况1: 恢复最后一次增量备份(如果两次增量备份都是1级的,所以只需要恢复最后一个增量就可以了)。
(3)情况2:如果你做的是第一次是1级备,第二次是2级备,那么你在恢复的时候就需要先恢复完全备份,然后是1级备,最后是2级备
xfsrestore -f /mnt/sdb1_backup /media/xfs_dir1/ # 恢复全量备份
xfsrestore -f /mnt/sdb_full_backup /media/xfs_dir1/ # 恢复等级1增量数据
xfsrestore -f /mnt/sdb_rise1_backup /media/xfs_dir1/ # 恢复等级2增量数据
[root@master ~] xfs_db -c frag -r /dev/sda1
actual 385, ideal 383, fragmentation factor 0.52%
Note, this number is largely meaningless.
Files on this filesystem average 1.01 extents per file
[root@master ~] xfs_db -c frag -r /dev/sda2
actual 135351, ideal 134275, fragmentation factor 0.79%
Note, this number is largely meaningless.
Files on this filesystem average 1.01 extents per file
fragmentation factor
后面接的百分比代表碎片化百分比
xfs_fsr /dev/sda2