1、 每12小时备份并压缩/etc/目录至/backup目录中,保存文件名称格式为,“etc-年-月-日-时-分.tar.gz”
• tar:
o 打包:tar -cf something.tar something
o 解包:tar -xf something.tar
o -c:创建 .tar 格式的包文件
o -x:解开.tar格式的包文件
o -v:输出详细信息
o -f:表示使用归档文件
o -p:打包时保留原始文件及目录的权限 –P绝对路径
o -t:列表查看包内的文件
常见压缩格式及对应参数
*.tar.gz | *.tar.xz | *.tar.bz2 |
---|---|---|
-z | -J | -j |
[root@localhost backup]#tar -czvf /backup/etc-`date +%Y-%m-%d-%H-%M.tar.gz` /etc //测试一下打包压缩的功能
[root@localhost backup]# ll
total 10760
-rw-r--r--. 1 root root 11017766 Dec 23 19:40 etc-2018-12-23-19-40.tar.gz
[root@localhost backup]# crontab -e //设置每过12小时执行一次备份压缩任务
0 */12 * * * tar -czvf /backup/etc-`date +%Y-%m-%d-%H-%M.tar.gz` /etc
2、rpm包管理功能总结以及实例应用演示。
rpm命令:rpm [OPTIONS] [PACKAGE_FILE]
安装:-i, --install
-v:verbose,详细信息
-vv:更详细的输出
-h:hash marks输出进度条;每个#表示2%的进度;
--test:测试安装,检查并报告依赖关系及冲突消息等;
--nodeps:忽略依赖关系;不建议;
--replacepkgs:重新安装
--nosignature:不检查包签名信息,不检查来源合法性;
--nodigest:不检查包完整性信息;
--noscripts:不带脚本信息
升级:-U, --update, 升级或安装
-F, --freshen 纯粹升级,必须存在老版本,不支持安装操作
--oldpackage:降级;
--force:强制升级;
卸载:-e, --erase
--allmatches:卸载所有匹配指定名称的程序包的各版本;
--nodeps:忽略依赖关系
--test:测试卸载,dry run模式
查询:-q, --query
-qi PACKAGE --info:查询程序包相关的信息,版本号、大小、所属的包组等
-qf FILE 查询指定的文件由哪个程序包安装生成
-qc PACKAGE --configfiles:查询指定的程序包提供的配置文件
-ql PACKAGE --list:查询程序安装生成的所有文件列表
-qd PACKAGE --docfiles:查询指定的程序包提供的文档
-qR PACKAGE --requires: 查询指定的程序包的依赖关系
-qpi PACKAGE_FILE 查询未安装的程序包的相关信息
-qpl PACKAGE_FILE 查询未安装的程序若安装生成的所有文件列表
-qpc PACKAGE_FILE 查询未安装的程序若安装生成的所有文件列表
-q --changelog: 查询rpm包的changlog
[root@localhost backup]# rpm -ql php
/etc/httpd/conf.d/php.conf
/usr/lib64/httpd/modules/libphp5.so
/var/lib/php/session
/var/www/icons/php.gif
[root@localhost backup]# rpm -qi php
Name : php Relocations: (not relocatable)
Version : 5.3.3 Vendor: Red Hat, Inc.
Release : 47.el6 Build Date: Tue 15 Dec 2015 06:01:38 PM CST
Install Date: Sun 23 Dec 2018 08:28:51 PM CST Build Host: x86-029.build.eng.bos.redhat.com
Group : Development/Languages Source RPM: php-5.3.3-47.el6.src.rpm
Size : 3702253 License: PHP
Signature : RSA/8, Sat 12 Mar 2016 12:31:10 AM CST, Key ID 199e2f91fd431d51
Packager : Red Hat, Inc.
URL : http://www.php.net/
Summary : PHP scripting language for creating dynamic web sites
Description :
PHP is ...(省略)
[root@localhost backup]# rpm -qc php
/etc/httpd/conf.d/php.conf
[root@localhost backup]# rpm -qf /bin/ls
coreutils-8.4-43.el6.x86_64
[root@localhost backup]# rpm -ql /misc/cd/Packages/vsftpd-2.2.2-21.el6.x86_64.rpm
package /misc/cd/Packages/vsftpd-2.2.2-21.el6.x86_64.rpm is not installed
[root@localhost backup]# rpm -qpl /misc/cd/Packages/vsftpd-2.2.2-21.el6.x86_64.rpm
warning: /misc/cd/Packages/vsftpd-2.2.2-21.el6.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID fd431d51: NOKEY
/etc/logrotate.d/vsftpd
/etc/pam.d/vsftpd
/etc/rc.d/init.d/vsftpd
/etc/vsftpd
/etc/vsftpd/ftpusers
/etc/vsftpd/user_list
/etc/vsftpd/vsftpd.conf
/etc/vsftpd/vsftpd_conf_migrate.sh
/usr/sbin/vsftpd
/usr/share/doc/vsftpd-2.2.2
....(省略)
校验:-V, --verify
包来源合法性验正和完整性验证: -K PACKAGE_FILE
[root@localhost Packages]#rpm -K /php-5.3.3-47.el6.x86_64.rpm
php-5.3.3-47.el6.x86_64.rpm: RSA sha1 ((MD5) PGP) md5 NOT OK (MISSING KEYS: (MD5) PGP#fd431d51)
[root@localhost Packages]# rpm -ivh --nodeps php-5.3.3-47.el6.x86_64.rpm
warning: php-5.3.3-47.el6.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID fd431d51: NOKEY
Preparing... ########################################### [100%]
1:php ########################################### [100%]
[root@localhost Packages]# rpm -V php
Unsatisfied dependencies for php-5.3.3-47.el6.x86_64:
php-cli(x86-64) = 5.3.3-47.el6 is needed by php-5.3.3-47.el6.x86_64
php-common(x86-64) = 5.3.3-47.el6 is needed by php-5.3.3-47.el6.x86_64
3、yum的配置和使用总结以及yum私有仓库的建设。
YUM: Yellowdog Update Modifier,完成RHEL系列前端自动解决依赖关系安装工具,依赖rpm存在。
1、YUM配置文件路径
/etc/yum.conf:为所有yum仓库提供公共配置
/etc/yum.repos.d/*.repo:为仓库的指向提供配置
2./etc/yum.conf主配置定义
[main] #通用主配置段
cachedir=/var/cache/yum/$basearch/$releasever # 缓存文件路径
keepcache=0 # 缓存到本地的文件是否保存
debuglevel=2 # 调试级别
logfile=/var/log/yum.log # 安装的日志文件
exactarch=1 # 精确严格的平台release匹配
obsoletes=1
gpgcheck=1 #检测来源合法性和完整性
plugins=1 #支持插件机制
installonly_limit=5 #同时安装多少程序包
bugtracker_url=http://bugs.centos.org/set_project.php?project_id=23&ref=http://bugs.centos.org/bu # 追踪bug路径
distroverpkg=centos-release # 当前发行版版本号从哪儿获取
# This is the default, if you make this bigger yum won't see if the metadata
# is newer on the remote and so you'll "gain" the bandwidth of not having to
...
*3.yum仓库(.repo)配置文件定义**
[repositoryID] #仓库ID,唯一标识别,不能重复
name=Some name for this repository # 完整的仓库名称
baseurl=url://path/to/repository/ # yum仓库指明的访问路径
enabled={1|0} #是否启用此yum仓库,默认启用
gpgcheck={1|0} #是否检查完整性和来源合法性
gpgkey=URL #秘钥文件位置,可能是对方仓库提供
enablegroups={1|0} #是否基于组来批量管理程序包
failovermethod={roundrobin|priority} #故障转移方法:轮询、根据优先级选择; 默认roundrobin随机
cost=# #设置开销,默认为1000
… ...
至少需要三行
[repositoryID] #仓库ID
baseurl=url://path/to/repository/ # yum仓库指明的访问路径
gpgcheck=0 #不检查完整性和来源合法性
说明:
1)*.repo可以将多个[repositoryID]的配置信息放在一个而文件内,也可以切成多个方便管理
2)baseurl可以使用:ftp:// 、http:// 、nfs:// 、file:/// 指明URL路径
3)baseurl等号两边不能有空格,其后可以填写多个镜像访问路径,每行一个,不能顶行写
多个访问路径间联系是镜像相同,目的是为了做备用访问
4)更多选项使用man 5 yum.conf查看,基本配置只需前三行就可以
5)发行版光盘镜像安装可能会自动配置网络镜像URL地址
4、YUM常用命令
yum repolist 显示仓库列表
yum list 显示程序包
yum search 模糊查找程序包
yum install 安装程序包
yum remove 卸载程序包
yum update [package1] [package2] [...] 升级操作
yum downgrade package1 [package2] [...] 降级操作
yum info [package1] [package2] [...] 查看程序包简要信息
yum provides | whatprovides feature1 [feature2] [...] 查看指定的特性(可以是某文件)是由哪个程序包所提供
yum clean
[root@localhost backup]# yum repolist //查看yum仓库
Loaded plugins: product-id, refresh-packagekit, search-disabled-repos, security,
: subscription-manager
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
repo id repo name status
rhel-source Red Hat Enterprise Linux 6Server - x86_64 - Source 3,855
repolist: 3,855
[root@localhost backup]# yum search ftp //模糊查询安装包
Loaded plugins: product-id, refresh-packagekit, search-disabled-repos, security,
: subscription-manager
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
=============================== N/S Matched: ftp ===============================
ftp.x86_64 : The standard UNIX FTP (File Transfer Protocol) client
gvfs-obexftp.x86_64 : ObexFTP support for gvfs
tftp.x86_64 : The client for the Trivial File Transfer Protocol (TFTP)
tftp-server.x86_64 : The server for the Trivial File Transfer Protocol (TFTP)
vsftpd.x86_64 : Very Secure Ftp Daemon
...
[root@localhost backup]# yum list *ftp* //查询已安装与未安装的匹配包
Loaded plugins: product-id, refresh-packagekit, search-disabled-repos, security,
: subscription-manager
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
Installed Packages
gvfs-obexftp.x86_64 1.4.3-26.el6 @anaconda-RedHatEnterpriseLinux-201604140956.x86_64/6.8
vsftpd.x86_64 2.2.2-21.el6 @rhel-source
Available Packages
ftp.x86_64 0.17-54.el6 rhel-source
lftp.i686 4.0.9-6.el6 rhel-source
lftp.x86_64 4.0.9-6.el6 rhel-source
...
包组:一堆程序的一个集合,用于一起安装,因为某些程序安装需要依赖包组内容
# yum groupinstall group1 [group2] [...] 安装包组
# yum groupupdate group1 [group2] [...] 升级包组
# yum grouplist [hidden] [groupwildcard] [...] 显示包组列表
# yum groupremove group1 [group2] [...] 移除包组
# yum groupinfo group1 [...] 显示包组信息
5、创建私有yum仓库
第一种:使用发行版光盘作为yum仓库:
1)挂载光盘或ISO文件到某一挂载点
#mkdir /mnt/cdrom
#mount /dev/sr0 /mnt/cdrom
2)备份原来的yum源:
#mkdir /etc/yum.repos.d/bak
#mv /etc/yum.repos.d/* /etc/yum.repos.d/bak/
3)增加一个光盘的yum源
#vi /etc/yum.repos.d/mybase.repo
[mybase]
name=LocalYum
baseurl=file:///mnt/cdrom
gpgcheck=0
enabled=1
第二种,使用本地或网络rpm包手动创建。
第一步:安装createrepo
第二步:确定repository输出方式:有两种,本地输出与网络输出。
本地输出:提供一个放置rpm包的本地路径
网络输出 :提供一个文件服务器,配置好ftp服务或http服务(注意防火墙要开放对应端口) ftp服务:
安装程序包:vsftpd
文件存放路径:/var/ftp/pub
启动服务: service vsftpd start
http服务:
安装程序包:httpd
文件存放路径:/var/www/html
启动服务:service httpd start
第三步:把rpm程序包文件放入准备好的目录中,可以从光盘复制rpm包过去。
第四步:对此目录运行createrepo命令即可,至此就完成了本地仓库的创建。
第五步:测试所创建的yum 仓库是否可用
在/etc/yum.repos.d/目录下创建一个以repo结尾的文件,示例如下:
[root@localhost yum.repos.d]# yum info createrepo//查看已安装的createrepo信息
[root@localhost yum.repos.d]# mkdir -p /yumtest/Packages
[root@localhost yum.repos.d]# cp /media/cdrom/Packages/* /yumtest/Packages/ //下载所需要的所有文件到本地某个路径
[root@localhost yum.repos.d]# createrepo /yumtest/ //创建关联关系,完成后生成repodata
root@localhost yum.repos.d]# cat Local.repo //配置yum源文件
[Local]
name=Local Yum
baseurl=file:///yumtest/
#baseurl=http:///Packages //当为http网络输出时,用此配置。仓库主机IP,Packages为http发布目录下的软件包目录
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
enabled=1
[root@localhost yum.repos.d]# yum repolist //查看配置好的yum仓库
4、写一个脚本实现列出以下菜单给用户:
(1)disk:show disk info信息
(2)mem:show memory info信息
(3)cpu:show cpu info信息
(*)quit
#!/bin/bash
cat<
5、sed用法总结并结合实例演示
sed:Stream Editor 行处理工具,流编辑器
格式:sed [OPTION]… {script-only-if-no-other-script} [input-file]…
其中{script-only-if-no-other-script}:指的是AddressCommands,地址界定执行命令
AddressCommands中间无空格,直接连接为一个选项操作
(1)OPTION常用选项
-n:不输出模式空间中的内容至屏幕;
-e script, --expression=script:多点编辑;
-f /PATH/TO/SED_SCRIPT_FILE : 每行一个编辑命令;
-r, --regexp-extended:支持使用扩展正则表达式;
-i[SUFFIX], --in-place[=SUFFIX]:直接编辑原文件 ;
(2)地址定界
1)空地址:什么都不填写时,表示对全文进行处理
2)单地址
#:表示对指定的行
/pattern/:被此模式所匹配到的每一行,其中模式两边的/不能省略
3)地址范围 (#表示任意数字)
#,#:从某行到某行,第二个#大于第一个#
#,+#:从某行开始加多商行
#,/pattern1/:从某行开始到第一次配到模式的行
/pattern1/,/pattern2/:从第一次匹配到的模式1到第二次匹配到哦的模式2
步进:~,#~# 从第几行
1~2:所有奇数行。从第一行开始,每次加两行读取
2~2:所有偶数行。从第二行开始,每次加两行读取
(4)编辑命令
d: 删除;
p: 显示模式空间中的内容;
a \text: 在行后面追加文本“text”,支持使用\n实现多行追加;
i \text: 在行前面插入文本“text”,支持使用\n实现多行插入;
c \text: 把匹配到的行替换为此处指定的文本“text”;
w /PATH/TO/SOMEFILE: 保存模式空间匹配到的行至指定的文件中;
r /PATH/FROM/SOMEFILE: 读取指定文件的内容至当前文件被模式匹配到的行后面;文件合并;
=: 为模式匹配到的行打印行号;
!: 条件取反;
s///: 查找替换,其分隔符可自行指定,常用的有s@@@, s###等;
替换标记:
g:全局替换;
w /PATH/TO/SOMEFILE:将替换成功的结果保存至指定文件中;
p:显示替换成功的行;
实例
1、删除centos7系统/etc/grub2.cfg文件中所有以空白开头的行行首的空白字符
sed -r 's/^([[:space:]])//g' /etc/grub.conf
2、删除/etc/fstab文件中所有以#开头,后面至少跟一个空白字符的行的行首的#和空白字符
sed -r 's/^#[[:space:]]+//g' etc/fstab
3、在centos6系统/root/install.log每一行行首增加#号
sed '/Installing/i%' /root/install.log 在行的前一行加,而非行首
sed -r 's/(Install)/#\1/' /root/install.log
sed -r 's/^(.*)/#\1/g' /root/install.log
4、在/etc/fstab文件中不以#开头的行的行首增加#号(有问题)
sed -n -r 's/(^[^#].*)/#\1/p' /etc/fstab
sed -n -r 's/^[^#].*/#&/p' /etc/fstab
5、处理/etc/fstab路径,使用sed命令取出其目录名和基名
echo "/etc/sysconfig/network-scripts/" |sed -r 's#(^.*\/)([^\/].*\/?)$#\1#' 基名,可换@
echo "/etc/sysconfig/network-scripts/" |sed -r 's#(^.*\/)([^\/].*\/?)$#\2#' 路径
6、利用sed 取出ifconfig命令中本机的IPv4地址
ifconfig |sed -n '2p' |sed -r 's/.*addr://'| sed -r 's/\ B.*//'
6、用bash实现统计访问日志文件中状态码大于等于400的IP数量并排序
#!/bin/bash
nginx_log='/usr/local/nginx/logs/mynginx.log'
code_400_num=$(grep -o '[4|5][0-9][0-9]' ${nginx_log} | wc -l)
code_400_sort=$(grep '[4|5][0-9][0-9]' ${nginx_log} | sort
echo $code_400_num
echo $code_400_sort
7、 使用自制的yum源安装ftp、openssh、curl、wget、tcpdump等软件包
关闭其它非自制yum源,设置*.repo文件中相应的enabled=0
[root@localhost scripts]# yum install -y ftp --enablerepo=Local Yum
[root@localhost scripts]# yum install -y openssh --enablerepo=Local Yum
...