Unix系统上备份

简介: 【4月更文挑战第30天】

》》》》》魏红斌带你学shell脚本《《《《《


更多shell脚本学习点击个人主页


作为一个资深程序猿,我将带领您从零开始,一步步踏上运维之旅,无论您是否拥有现成的服务器,都将学会如何轻松购买、部署,并通过编写及应用精心设计的Shell脚本,解决实际工作中遇到的问题。这些脚本不仅源自真实的业务场景,经历了反复实践与严格测试,确保了其简洁高效、易于理解且便于使用。更重要的是,我们将全程免费分享,并深度解析背后原理,助您深入理解并灵活运用,每一款脚本均经过真实业务场景的反复打磨与严格测试,秉持着简洁高效、易于理解和使用的理念设计,无偿提供并且提供相关解析过程,让读者能更深入了解相关内容

无服务器的朋友们

让我们先从选购并部署服务器开始。只需简单三步,即可拥有您的专属云服务器:

  1. 访问ECS官网:点击链接直达阿里云ECS网站:ECS选择网址。这是您获取高质量云服务器的第一站。
  2. 选择并购买:在琳琅满目的服务器配置中,挑选符合您需求的那一款,一键下单,完成支付。整个过程犹如在线购物般便捷。
  3. 进入ECS控制台:支付成功后,您将被引导至ECS管理控制台。在这里,您可以全面掌控您的服务器资源,后续的所有运维操作都将在此展开。

已有服务器的朋友们

如果您已拥有ECS实例,那么请直接登录ECS管理控制台在左侧导航栏中,依次选择“实例与镜像” > “实例”,确保您已定位到目标资源所在的资源组和地域。接下来,在实例列表中找到待连接的实例,点击操作列下的“远程连接”,选择“通过Workbench远程连接”并点击“立即登录”。

登录实例

无论是新购还是已有服务器,接下来都需要进行实例登录。这里支持多种认证方式,以最常见的“密码认证”为例:

  • 输入用户名(通常为rootecs-user)。
  • 接着,输入登录密码。如果您忘记了密码,无需担忧,您可以在ECS实例详情页面查询,或者通过“更改密码”功能进行修改。

编写与运行Shell脚本

成功登录后,您将看到一个熟悉的命令行界面——这就是您的运维主战场。现在,键入vim test.sh,我们便进入了文本编辑模式,准备创建第一个Shell脚本。

按下键盘上的i键,进入插入模式,此刻您可以自由地复制粘贴今天要学习的脚本代码,粘贴后按ecs后,按:wq保存脚本,可以用./ test.sh或者sh test.sh进行脚本执行。

今天我们要学习的脚本是(脚本内容直接复制粘贴即可):

#!/bin/bash
# 备份脚本示例
# 使用方法:./backup_script.sh [源目录] [目标压缩文件]
# 检查是否提供了两个参数
if [ "$#" -ne 2 ]; then
    echo "错误:需要提供源目录和目标压缩文件作为参数。"
    exit 1
fi
# 定义源目录和目标压缩文件变量
src_dir="$1"
dest_zip="$2"
# 检查源目录是否存在
if [ ! -d "$src_dir" ]; then
    echo "错误:源目录 $src_dir 不存在。"
    exit 1
fi
# 创建目标目录(如果不存在)
dest_dir="$(dirname "$dest_zip")"
mkdir -p "$dest_dir"
# 使用tar命令备份源目录到目标压缩文件
tar -czvf "$dest_zip" -C "$src_dir" .
# 检查tar命令是否成功执行
if [ $? -eq 0 ]; then
    echo "备份成功!已将 $src_dir 备份到 $dest_zip"
else
    echo "备份失败!"
    exit 1
fi
# 脚本结束
echo "脚本执行完毕。"

逐行解析:

  1. #!/bin/bash:指定脚本使用的shell解释器为bash。

2-4. # 备份脚本示例 ... # 使用方法:./backup_script.sh [源目录] [目标压缩文件]:注释,说明脚本的用途和使用方法。

6-8. if [ "$#" -ne 2 ]; then ... exit 1:检查是否提供了两个参数(源目录和目标压缩文件)。如果没有,输出错误信息并退出脚本。

10-11. src_dir="$1" ... dest_zip="$2":将第一个和第二个参数分别赋值给变量src_dir(源目录)和dest_zip(目标压缩文件)。

13-17. if [ ! -d "$src_dir" ]; then ... exit 1:检查源目录是否存在。如果不存在,输出错误信息并退出脚本。

19-20. dest_dir="$(dirname "$dest_zip")" ... mkdir -p "$dest_dir":获取目标压缩文件的目录部分,并使用mkdir -p命令确保该目录存在。

  1. tar -czvf "$dest_zip" -C "$src_dir" .:使用tar命令将源目录备份为一个压缩文件。-c表示创建新的压缩文件,-z表示使用gzip压缩,-v表示显示详细信息,-f指定压缩文件名,-C改变到指定目录后再进行操作,最后的.表示当前目录(即源目录)。

24-28. if [ $? -eq 0 ]; then ... exit 1:检查上一个命令(tar命令)的执行状态。如果返回值为0(表示成功),则输出成功信息;否则,输出失败信息并退出脚本。

  1. echo "脚本执行完毕。":脚本执行完毕,输出总结信息。

总结:

这个脚本是一个简单的目录备份脚本,它接受两个参数:要备份的源目录和目标压缩文件的路径。脚本首先检查参数的数量和源目录的存在性,然后创建一个目标目录(如果不存在),接着使用tar命令将源目录压缩为一个文件,并检查该操作是否成功。最后,脚本输出相应的成功或失败信息,并结束执行。这个脚本可以在Linux或Unix系统上运行,用于自动化备份任务。

如果想上手操作练代码的同学们可以通过阿里云ecs服务器免费试用参与!

入口:新老同学免费试用

相关实践学习
借助OSS搭建在线教育视频课程分享网站
本教程介绍如何基于云服务器ECS和对象存储OSS,搭建一个在线教育视频课程分享网站。
7天玩转云服务器
云服务器ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,可降低 IT 成本,提升运维效率。本课程手把手带你了解ECS、掌握基本操作、动手实操快照管理、镜像管理等。了解产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
监控 关系型数据库 Shell
Linux/Unix shell 自动 FTP 备份档案
       使用shell脚本实现对Oracle数据库的监控与管理将大大简化DBA的工作负担,如常见的对实例的监控,监听的监控,告警日志的监控,以及数据库的备份,AWR report的自动邮件等。
1378 0
|
5月前
|
缓存 网络协议 Unix
Linux(UNIX)五种网络I/O模型与IO多路复用
Linux(UNIX)五种网络I/O模型与IO多路复用
162 0
|
5月前
|
Unix Shell Linux
在Unix/Linux操作系统中,Shell脚本广泛用于自动化任务
在Unix/Linux操作系统中,Shell脚本广泛用于自动化任务
63 2
|
2月前
|
Unix Linux 程序员
Unix:Linux的“逗趣祖师爷”与它的不凡传承
在科技长河中,Unix犹如一颗恒星,既是历史见证者也是未来的启发者。1969年,因程序员肯·汤普森想在他的PDP-7上玩“Space Travel”游戏,意外创造了Unix,以简洁优雅的代码改变了操作系统的世界。进入90年代,林纳斯·托瓦兹受Unix启发,开发了开源免费的Linux,像是Unix调皮的孙子,不仅继承其精髓还增添了开放共享的精神。Unix与Linux之间的传承,就像是智者与追蝶孩童的故事,充满了岁月的智慧与新生的活力,提醒我们科技传奇往往源于不起眼的小事。下次使用Linux时,不妨会心一笑吧!
39 0
|
2月前
|
开发框架 Unix Linux
LangChain 构建问题之在Unix/Linux系统上设置OpenAI API密钥如何解决
LangChain 构建问题之在Unix/Linux系统上设置OpenAI API密钥如何解决
41 0
|
5月前
|
Unix Shell Linux
在Linux和类Unix系统中,Shell提供了多种命令用于用户和权限管理
在Linux和类Unix系统中,Shell提供了多种命令用于用户和权限管理
72 4
|
5月前
|
Oracle Ubuntu Unix
Unix与Linux区别
Unix: Unix是一个操作系统家族的名称,最早由贝尔实验室(Bell Labs)的肖像电机公司(AT&T)开发。最早的Unix版本是在1969年创建的。 Linux: Linux是由芬兰计算机科学家Linus Torvalds在1991年创建的。它是作为一个免费、开放源代码的Unix克隆而开始的。
73 1
|
Unix 大数据 Linux
【Linux is not Unix】Linux前言
【Linux is not Unix】Linux前言
|
5月前
|
Unix Shell Linux
在Unix/Linux Shell中,管道(`|`)和重定向
在Unix/Linux Shell中,管道(`|`)和重定向
72 1