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服务器免费试用参与!

入口:新老同学免费试用

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