【版本】
当前版本号v20231010
版本 | 修改说明 |
---|
v20231010 | 增加一些提示和常见问题 |
v20230918 | 修正个别步骤的描述 |
v20230611 | 换用 RockyLinux 8 |
任务2.1 目录管理命令
【任务目的】
【任务环境】
【任务实例】
启动任务1制作的虚拟机。
使用 Final Shell 连接虚拟机,并使用 cdc 用户登录。
登录以后,查看当前所在路径。
复制
一般用户登录以后都默认进入当前用户的主目录 /home/用户名
- 创建一个新的目录
复制
- 进入 dir1 目录
复制
- 进入 dir1 目录
复制
- 返回上一级目录。
复制
- 删除 dir1 这个空目录
复制
【任务要求】
- 在 cdc 用户的主目录下创建以下结构的目录。
| / |
| |-home |
| |-cdc |
| |-dir2 |
| |-dir21 |
| |-dir211 |
复制
请把 /home/cdc
下的所有空目录删除
请在报告详细记录你的每一步的命令和结果。
提示1:可以了解 mkdir -p
提示2:tree 命令可以用于查看目录层级结构,安装命令是dnf install tree -y
任务2.2 相对路径和绝对路径
【任务目的】
【任务环境】
【任务实例】
- 以下为一些特殊目录
| . 代表此层目录 |
| .. 代表上一层目录 |
| - 代表前一个工作目录 |
| ~ 代表 “ 目前使用者身份 ” 所在的主文件夹 |
复制
- 进入根目录,查看根目录下所有目录。
复制
- 进入相对路径目录
复制
- 查看当前目录
复制
- 进入前一个访问过的目录,并查看当前目录。
复制
- 直接通过绝对路径进入目录。
复制
【任务要求】
- 在 cdc 用户的主目录下创建以下结构的目录。
| / |
| |-home |
| |-cdc |
| |-dir3 |
| |-dir31 |
| |-dir32 |
复制
进入工作目录/home/cdc/dir3/dir32
,使用相对路径删除空目录dir31
。
使用绝对路径删除空目录dir32
。
请在报告详细记录你的每一步的命令和结果。
任务2.3 文件创建、复制、删除与移动
【任务目的】
【任务环境】
【任务实例】
- 在 cdc 用户的主目录下创建文件
file1
复制
复制
- 复制文件
file1
为file2
。并查看是否复制成功
复制
- 移动(重命名)
file1
为 file1.txt
复制
- 删除
file2
,按下y确认删除。
复制
【任务要求】
- 在 cdc 用户的主目录下创建文件
file3
。 - 复制
file3
到 /var/tmp
目录下,并改名为file4
。 - 删除
file4
。 - 请在报告详细记录你的每一步的命令和结果。
任务2.4 文件内容的编辑和查看
【任务目的】
【任务环境】
【任务实例】
- 在 cdc 用户的主目录下创建一个文件,并同时写入内容。
| cd ~ |
| echo 'life is like a box of chocolates' > life.txt |
复制
- 使用cat 命令输出
life.txt
内容。
复制
【任务要求】
- 承接上面实例,使用
vi
修改life.txt
,在文件第2行加如以下内容。
| You never know what gonna get. |
复制
- 请在报告详细记录你的每一步的命令和结果。
任务2.5 软件的安装与卸载
【任务目的】
【任务环境】
【任务实例】
- 提升到 root 权限,输入 root 的密码。
复制
- 安装配置 MariaDB
| dnf install mariadb mariadb-server -y |
复制
安装成功应该会展示类似以下内容。
| 已安装: |
| mariadb.x86_64 3:10.1.20-1.el7 |
| mariadb-server.x86_64 3:10.1.20-1.el7 |
| |
| 完毕! |
复制
| installed: |
| mariadb.x86 64 3:18.1.20-1.e17 mariadb-server.x86 64 3:10.1.29-1.e17 |
| |
| Dependency Installed: |
| mariadb-common.x8664 3:10.1.29-1.e17 mariadb-errmsg.x8664 3:18.1.29-1.e17 mariadb-conf ig.x8664 3:18.1.28-1.e17 |
| |
| Dependencu Updated: |
| mariadb-libs.x8664 3:18.1.28-1.e17 |
| |
| Complete! |
复制
- 新建 MariaDB 的配置文件。
| echo '[mysqld] |
| bind-address = 10.0.0.70 |
| default-storage-engine = innodb |
| innodb_file_per_table |
| max_connections = 4096 |
| collation-server = utf8_general_ci |
| character-set-server = utf8' >/etc/my.cnf.d/cdc.cnf |
复制
- 设置 MariaDB 为开机启动
复制
- 启动
MariaDB
复制
- 开始 MariaDB 安全配置和初始化。
| mysql_secure_installation |
复制
- 根据以下提示进行输入,修改 MariaDB 的 root 用户密码为123456。
| Enter current password for root (enter for none): -> 直接回车 |
| Set root password? [Y/n] -> 输入y |
| New password: -> 输入123456 |
| Re-enter new password: -> 输入123456 |
| Remove anonymous users? [Y/n] -> 输入y |
| Disallow root login remotely? [Y/n] -> 输入y |
| Remove test database and access to it? [Y/n] -> 输入y |
| Reload privilege tables now? [Y/n] -> 输入y |
复制
- 重新启动
MariaDB
| systemctl restart mariadb |
复制
- 查看
MariaDB
状态是否为active
复制
- 使用root连接
MariaDB
,输入密码123456。
复制
- 使用
exit
命令退出MariaDB
命令行。
复制
【任务要求】
使用systemctl stop
命令停止MariaDB
进程。
使用dnf remove
命令移除MariaDB
相关组件。
移除/etc/my.cnf.d/cdc.cnf
配置文件。
请在报告详细记录你的每一步的命令和结果。
任务2.6 端口和进程的查看
【任务目的】
【任务环境】
【任务要求】
使用dnf
命令重新安装MariaDB
。
使用dnf
命令安装命令lsof
、vim
。
使用cp命令备份/etc/my.cnf.d/cdc.cnf
到/etc/my.cnf.d/cdc.cnf.bak
使用vim 修改/etc/my.cnf.d/cdc.cnf
为以下内容。
| [mysql] |
| default-character-set = utf8mb4 |
| |
| [mysqld] |
| bind-address = 10.0.0.70 |
| default-storage-engine = innodb |
| innodb_file_per_table |
| max_connections = 4096 |
| collation-server = utf8mb4_unicode_ci |
| character-set-server = utf8mb4 |
复制
重启MariaDB
。
使用lsof -i:3306
命令查看3306端口的进程是否存在。
使用netstat -tulpn|grep 3306
命令查看3306端口的进程是否存在。
如果提示没有找到命令,可以用以下命令安装
复制
使用 MariaDB
的root 用户进行登录。
请在报告详细记录你的每一步的命令和结果。
任务2.7 实现完全备份、差异备份和增量备份
【任务目的】
- 掌握完全备份、差异备份和增量备份三者的概念和区别
- 掌握 bsdiff 和 bspatch 命令的使用
【任务说明】
- bsdiff 是用于比较2个二进制文件之间的差异的命令,并且可以生成差异补丁(patch)文件。
- bspatch 是可以通过应用补丁(patch)文件把文件进行恢复。
【任务环境】
- 内存:至少4G
- 硬盘:至少空余40G
- 操作系统: 64位 Windows系统。
【任务资源】
- FinalShell
- CentOS 7.9系统镜像
- VirtualBox 或 VMWare Workstation
- bsdiff-4.3.tar.gz
【任务步骤】
安装 bsdiff 和 bspatch
- 使用 cdc 用户登录虚拟机,并查看当前用户名。
复制
- 安装一些 bsdiff 需要的编译和依赖包。
| sudo dnf -y install gcc automake autoconf libtool make bzip2-devel |
复制
注意前面的sudo
命令是提升至root权限去运行后面的命令,这里需要输入密码。
- 从网盘下载
bsdiff-4.3.tar.gz
,通过 FinalShell 上传到 cdc 用户的工作目录/home/cdc
。
复制
rz
命令是用于文件上传,如果rz命令失效,可以使用 FinalShell 自带的上传功能进行上传。

- 解压
bsdiff-4.3.tar.gz
。
| tar -zxvf bsdiff-4.3.tar.gz |
复制
如果提示“Command Not Found”,那就使用命令dnf install tar -y
进行安装
- 进入解压出来的目录,修改
Makefile
。
复制
复制
- 在
Makefile
倒数第1和倒数第3行的首字符前,分别加入一个tab
符号。
| install: |
| ${INSTALL_PROGRAM} bsdiff bspatch ${PREFIX}/bin |
| .ifndef WITHOUT_MAN |
| ${INSTALL_MAN} bsdiff.1 bspatch.1 ${PREFIX}/man/man1 |
| .endif |
复制
| install: |
| ${INSTALL_PROGRAM} bsdiff bspatch ${PREFIX}/bin |
| .ifndef WITHOUT_MAN |
| ${INSTALL_MAN} bsdiff.1 bspatch.1 ${PREFIX}/man/man1 |
| .endif |
复制
- 编译生成命令 bsdiff 和 bspatch
复制
| cc -O3 -lbz2 bsdiff.c -o bsdiff |
| cc -O3 -lbz2 bspatch.c -o bspatch |
复制
- 查看是否命令已经编译成功,并保存载目录下。
复制
- 把目录移到
/usr/local/sbin/
目录,该目录已经声明在环节变量 PATH 中,可以在任何地方调用该目录下的命令。
| sudo cp bsdiff bspatch /usr/local/sbin/ |
复制
bsdiff 和 bspatch 命令示范
下载并上传chp1_2_data.tar
。
解压该压缩包。
复制
- 解压以后,查看目录下有3个文件,分别代表第1天(Day1.txt),第2天(Day2.txt),第3天(Day3.txt)的内容。
| Day1.txt Day2.txt Day3.txt |
| |
复制
- 通过 bsdiff 的帮忙命令查看命令的使用方法
复制
- 从以下输出的内容来看,bsdiff的第1个参数是旧文件名,第2个参数是新的文件名,第三个参数是补丁文件名。
| usage: bsdiff oldfile newfile patchfile |
复制
- 通过 bspatch 的帮忙命令查看命令的使用方法
复制
- 从以下输出的内容来看,bspatch的第1个参数是旧文件名,第2个参数是新的文件名,第三个参数是补丁文件名。
| usage: bspatch oldfile newfile patchfile |
复制
- 使用
cat
和diff
命令查看 Day1.txt 和 Day2.txt 的内容差异。
| cat Day1.txt |
| cat Day2.txt |
| diff Day1.txt Day2.txt |
复制
diff 如果没有任何输出,表示2个文件内容相同。
- 使用 bsdiff 计算 Day1.txt 和 Day2.txt 的差异补丁
Day2-Day1.patch
。
| bsdiff Day1.txt Day2.txt Day2-Day1.patch |
复制
- 对比 Day1.txt、Day2.txt、Day2-Day1.patch 三个文件的大小
| ll Day1.txt Day2.txt Day2-Day1.patch |
复制

- 使用 bspatch在 Day1.txt 上应用差异补丁,还原 Day2 的内容。
| bspatch Day1.txt Day2-recov.txt Day2-Day1.patch |
复制
- 使用
cat
和diff
命令对比 Day2.txt 和 Day2-recov.txt 的内容,查看是否有差异。
【任务要求】
请同学们参考上面的例子,按以下要求完成任务。
创建目录fullbackup
,使用命令分别完全备份Day1、Day2、Day3的内容到该目录下。
创建目录diffbackup
,使用命令实现以下备份到该目录下。
- 完全备份 Day1
- 比较并生成 Day2 与 Day1 的差异补丁
Day2-Day1.patch
,并使用该补丁恢复出文件Day2-recov.txt
,比较恢复文件和 Day2.txt 的区别。 - 比较并生成 Day3 与 Day1 的差异补丁
Day3-Day1.patch
,并使用该补丁恢复出文件Day3-recov.txt
,比较恢复文件和 Day3.txt 的区别。
- 创建目录
increbackup
,使用命令实现以下备份到该目录下。
- 完全备份 Day1
- 比较并生成 Day2 与 Day1 的差异补丁
Day2-Day1.patch
。 - 比较并生成 Day3 与 Day2 的差异补丁
Day3-Day2.patch
。 - 使用上面2个差异补丁,恢复出文件
Day3-dump.txt
,比较恢复文件和 Day3.txt 的区别。
提示:创建目录命令为 mkdir
【常见问题】
1. 安装软件失败提示Error dowloading packages
或者 [Errno 256] No more mirrors to try.
答:这是因为没有正确挂载光盘内的镜像文件导致的。重新挂载就可以了。
复制
2. 安装 MariaDB 出错,执行命令dnf install mariadb mariadb-server -y
提示“No module named sqlitecachec”。
答:这是因为没有安装上yum-metadata-parser
包。
- (1)执行以下命令完成
yum-metadata-parser
包的安装。
| sudo rpm -ivh /mnt/Packages/yum-metadata-parser-1.1.4-10.el7.x86_64.rpm --force |
复制
| dnf clean all |
| dnf install mariadb mariadb-server -y |
复制
3. 安装软件不成功,提示“Error downloading packages:” 或者“ No more mirrors to try”
答:
(1)检查虚拟光驱是否已经插入镜像文件。

(2)解挂,再重新挂载。
复制
复制
| cat /etc/yum.repos.d/local.repo |
复制
正常会展示以下内容
| [local-baseos] |
| name=Rocky Linux $releasever - Local - BaseOS |
| baseurl=file:///mnt/BaseOS |
| gpgcheck=1 |
| enabled=1 |
| gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-rockyofficial |
| |
| [local-appstream] |
| name=Rocky Linux $releasever - Local - AppStream |
| baseurl=file:///mnt/AppStream |
| gpgcheck=1 |
| enabled=1 |
| gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-rockyofficial |
复制
| dnf clean all |
| dnf makecache |
复制
4. 无法修改 MariaDB root 用户密码
答:
可以尝试卸载MariaDB 和 删除 MariaDB 数据,重新安装MariaDB。
- (1)使用 root 用户登录,卸载 MariaDB
| dnf remove mariadb mariadb-server -y |
复制
复制
| dnf install mariadb mariadb-server -y |
复制