【版本】
当前版本号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