【版本】
当前版本号v20210926
版本 | 修改说明 |
---|---|
v20210926 | 添加常见问题,修正从网盘下载bsdiff |
v20210922 | 修改实验2.7 hadoop用户为cdc用户,修正部分命令错误 |
v20210920 | 添加常见问题 |
v20210901 | 初始化版本 |
实验2.1 目录管理命令
【实验目的】
- 掌握目录相关的 Linux 命令的使用
【实验环境】
- CentOS 7.X
【实验实例】
启动实验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
下的所有空目录删除请在实验报告详细记录你的每一步的命令和结果。
提示:可以了解 mkdir -p
实验2.2 相对路径和绝对路径
【实验目的】
- 掌握 Linux 的相对路径和绝对路径访问方式
【实验环境】
- CentOS 7.X
【实验实例】
- 以下为一些特殊目录
. 代表此层目录
.. 代表上一层目录
- 代表前一个工作目录
~ 代表 “ 目前使用者身份 ” 所在的主文件夹
- 进入根目录,查看根目录下所有目录。
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 文件复制、删除与移动相关命令
【实验环境】
- CentOS 7.X
【实验实例】
- 在 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 文件内容的编辑的相关命令
【实验环境】
- CentOS 7.X
【实验实例】
- 在 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 软件的安装与卸载
【实验目的】
- 掌握 CentOS 的软件的安装与卸载
【实验环境】
- CentOS 7.X
【实验实例】
- 提升到 root 权限,输入 root 的密码。
su
- 安装配置 MariaDB
yum 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
进程。使用
yum remove
命令移除MariaDB
相关组件。移除
/etc/my.cnf.d/cdc.cnf
配置文件。请在实验报告详细记录你的每一步的命令和结果。
实验2.6 端口和进程的查看
【实验目的】
- 掌握 CentOS 查看端口和进程的命令
【实验环境】
- CentOS 7.X
【实验要求】
使用
yum
命令重新安装MariaDB
。使用
yum
命令安装命令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端口的进程是否存在。
如果提示没有找到命令,可以用以下命令安装
yum install net-tools -y
使用
MariaDB
的root 用户进行登录。请在实验报告详细记录你的每一步的命令和结果。
实验2.7 实现完全备份、差异备份和增量备份
【实验目的】
- 掌握完全备份、差异备份和增量备份三者的概念和区别
- 掌握 bsdiff 和 bspatch 命令的使用
【实验说明】
- bsdiff 是用于比较2个二进制文件之间的差异的命令,并且可以生成差异补丁(patch)文件。
- bspatch 是可以通过应用补丁(patch)文件把文件进行恢复。
【实验环境】
- 内存:至少4G
- 硬盘:至少空余40G
- 操作系统: 64位 Windows系统。
【实验资源】
- FinalShell
- CentOS 7.9系统镜像
- VirtualBox 6 或 VMWare Workstation
- bsdiff-4.3.tar.gz
链接:https://pan.baidu.com/s/1kw7nT7dbonUTSlPqIHVwhQ
提取码:heis
【实验步骤】
安装 bsdiff 和 bspatch
- 使用 cdc 用户登录虚拟机,并查看当前用户名。
whoami
- 安装一些 bsdiff 需要的编译和依赖包。
sudo yum -y install gcc automake autoconf libtool make bzip2-devel
注意前面的
sudo
命令是提升至root权限去运行后面的yum命令,这里需要输入密码。
- 从实验资源网盘下载
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
- 进入解压出来的目录,修改
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
到 hadoop 用户的工作目录。解压该压缩包。
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 出错,执行命令yum 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。
yum clean all
yum 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]
name=local
baseurl=file:///mnt
gpgcheck=0
- (4)清理源缓存
yum makecache
- (5)重新执行安装命令