【版本】
当前版本号v20231010
| 版本 | 修改说明 | 
|---|---|
| v20231010 | 增加一些提示和常见问题 | 
| v20230918 | 修正个别步骤的描述 | 
| v20230611 | 换用 RockyLinux 8 | 
任务2.1 目录管理命令
【任务目的】
- 掌握目录相关的 Linux 命令的使用
 
【任务环境】
- RockyLinux 8
 
【任务实例】
启动任务1制作的虚拟机。
使用 Final Shell 连接虚拟机,并使用 cdc 用户登录。
登录以后,查看当前所在路径。
pwd
一般用户登录以后都默认进入当前用户的主目录 /home/用户名
- 创建一个新的目录
 
mkdir dir1
- 进入 dir1 目录
 
cd dir1
- 进入 dir1 目录
 
cd dir1
- 返回上一级目录。
 
cd ..
- 删除 dir1 这个空目录
 
rmdir dir1
【任务要求】
- 在 cdc 用户的主目录下创建以下结构的目录。
 
/
|-home
  |-cdc
    |-dir2
       |-dir21
         |-dir211
请把
/home/cdc下的所有空目录删除请在报告详细记录你的每一步的命令和结果。
提示1:可以了解 mkdir -p 提示2:tree 命令可以用于查看目录层级结构,安装命令是
dnf install tree -y
任务2.2 相对路径和绝对路径
【任务目的】
- 掌握 Linux 的相对路径和绝对路径访问方式
 
【任务环境】
- RockyLinux 8
 
【任务实例】
- 以下为一些特殊目录
 
. 代表此层目录
.. 代表上一层目录
- 代表前一个工作目录
~ 代表 “ 目前使用者身份 ” 所在的主文件夹
- 进入根目录,查看根目录下所有目录。
 
cd /
ls
- 进入相对路径目录
 
cd var/tmp
- 查看当前目录
 
pwd
- 进入前一个访问过的目录,并查看当前目录。
 
cd -
pwd
- 直接通过绝对路径进入目录。
 
cd /var/tmp
pwd
【任务要求】
- 在 cdc 用户的主目录下创建以下结构的目录。
 
/
|-home
  |-cdc
    |-dir3
       |-dir31
       |-dir32
进入工作目录
/home/cdc/dir3/dir32,使用相对路径删除空目录dir31。使用绝对路径删除空目录
dir32。请在报告详细记录你的每一步的命令和结果。
任务2.3 文件创建、复制、删除与移动
【任务目的】
- 掌握 Linux 文件复制、删除与移动相关命令
 
【任务环境】
- RockyLinux 8
 
【任务实例】
- 在 cdc 用户的主目录下创建文件
file1 
cd ~
touch file1
- 复制文件
file1为file2。并查看是否复制成功 
cp file1 file2
ls
- 移动(重命名)
file1为file1.txt 
mv file1 file1.txt
- 删除
file2,按下y确认删除。 
rm file2
【任务要求】
- 在 cdc 用户的主目录下创建文件
file3。 - 复制
file3到/var/tmp目录下,并改名为file4。 - 删除
file4。 - 请在报告详细记录你的每一步的命令和结果。
 
任务2.4 文件内容的编辑和查看
【任务目的】
- 掌握 Linux 文件内容的编辑的相关命令
 
【任务环境】
- RockyLinux 8
 
【任务实例】
- 在 cdc 用户的主目录下创建一个文件,并同时写入内容。
 
cd ~
echo 'life is like a box of chocolates' > life.txt
- 使用cat 命令输出
life.txt内容。 
cat life.txt
【任务要求】
- 承接上面实例,使用
vi修改life.txt,在文件第2行加如以下内容。 
You never know what gonna get.
- 请在报告详细记录你的每一步的命令和结果。
 
任务2.5 软件的安装与卸载
【任务目的】
- 掌握 RockyLinux 的软件的安装与卸载
 
【任务环境】
- RockyLinux 8
 
【任务实例】
- 提升到 root 权限,输入 root 的密码。
 
su
- 安装配置 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 为开机启动
 
systemctl enable mariadb
- 启动
MariaDB 
systemctl start 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 
systemctl status mariadb
- 使用root连接
MariaDB,输入密码123456。 
mysql -u root -p
- 使用
exit命令退出MariaDB命令行。 
MariaDB [(none)]> exit;
【任务要求】
使用
systemctl stop命令停止MariaDB进程。使用
dnf remove命令移除MariaDB相关组件。移除
/etc/my.cnf.d/cdc.cnf配置文件。请在报告详细记录你的每一步的命令和结果。
任务2.6 端口和进程的查看
【任务目的】
- 掌握 CentOS 查看端口和进程的命令
 
【任务环境】
- RockyLinux 8
 
【任务要求】
使用
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端口的进程是否存在。
如果提示没有找到命令,可以用以下命令安装
dnf install net-tools -y
使用
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 用户登录虚拟机,并查看当前用户名。
 
whoami
- 安装一些 bsdiff 需要的编译和依赖包。
 
sudo dnf -y install gcc automake autoconf libtool make bzip2-devel 
注意前面的
sudo命令是提升至root权限去运行后面的命令,这里需要输入密码。
- 从网盘下载
bsdiff-4.3.tar.gz,通过 FinalShell 上传到 cdc 用户的工作目录/home/cdc。 
cd ~
rz
rz命令是用于文件上传,如果rz命令失效,可以使用 FinalShell 自带的上传功能进行上传。

- 解压
bsdiff-4.3.tar.gz。 
tar -zxvf bsdiff-4.3.tar.gz
如果提示“Command Not Found”,那就使用命令
dnf install tar -y进行安装
- 进入解压出来的目录,修改
Makefile。 
cd bsdiff-4.3
vi 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
 
make
- 正常会输出以下内容
 
cc -O3 -lbz2    bsdiff.c   -o bsdiff
cc -O3 -lbz2    bspatch.c   -o bspatch
- 查看是否命令已经编译成功,并保存载目录下。
 
ls
- 把目录移到
/usr/local/sbin/目录,该目录已经声明在环节变量 PATH 中,可以在任何地方调用该目录下的命令。 
sudo cp bsdiff bspatch /usr/local/sbin/
bsdiff 和 bspatch 命令示范
下载并上传
chp1_2_data.tar。解压该压缩包。
tar -xvf chp1_2_data.tar
- 解压以后,查看目录下有3个文件,分别代表第1天(Day1.txt),第2天(Day2.txt),第3天(Day3.txt)的内容。
 
Day1.txt  Day2.txt  Day3.txt
- 通过 bsdiff 的帮忙命令查看命令的使用方法
 
bsdiff -h
- 从以下输出的内容来看,bsdiff的第1个参数是旧文件名,第2个参数是新的文件名,第三个参数是补丁文件名。
 
usage: bsdiff oldfile newfile patchfile
- 通过 bspatch 的帮忙命令查看命令的使用方法
 
bspatch -h
- 从以下输出的内容来看,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.
答:这是因为没有正确挂载光盘内的镜像文件导致的。重新挂载就可以了。
mount /dev/cdrom /mnt
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
- (2)执行清理操作,重新安装 MariaDB。
 
dnf clean all
dnf install mariadb mariadb-server -y
3. 安装软件不成功,提示“Error downloading packages:” 或者“ No more mirrors to try”
答:
(1)检查虚拟光驱是否已经插入镜像文件。

(2)解挂,再重新挂载。
umount /mnt
mount /dev/cdrom /mnt
- (3)检查源的内容是否正确。
 
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
- (4)清理源缓存
 
dnf clean all
dnf makecache
- (5)重新执行安装命令
 
4. 无法修改 MariaDB root 用户密码
答: 可以尝试卸载MariaDB 和 删除 MariaDB 数据,重新安装MariaDB。
- (1)使用 root 用户登录,卸载 MariaDB
 
dnf remove mariadb mariadb-server -y
- (2)删除 MariaDB 数据
 
rm /var/lib/mysql -rf
- (3)重新安装 MariaDB
 
dnf install mariadb mariadb-server -y
