首页 > 系统相关 >Linux 高级Shell脚本与用户管理(linux文件夹备份脚本)

Linux 高级Shell脚本与用户管理(linux文件夹备份脚本)

时间:2023-11-28 13:00:45浏览次数:47  
标签:脚本 Shell root 备份 sh linux test backup

本文,我们将要学习 Linux 高级 Shell 脚本以及用户管理(重点)。下面,我们将开始探索几个使用的 Shell 脚本,然后介绍 Linux 中的用户管理。

Shell 脚本

1 创建动态目录

首先,我们创建一个名为 create_directories.sh的脚本文件,这个将本将用于生成指定数量且具有动态名称的目录。以下是脚本的内容:

#!/bin/bash

# 检查是否由 3 个参数
if [ "$#" -ne 3 ]
then
    echo "Please use the following sequence: ./createDirectories.sh <directory-name> <start-number> <end-number>"
    exit 1
fi

# 保存 3 个参数的变量
# 目录成成
directory_name=$1
# 起始编号
start_number=$2
# 结束编号
end_number=$3

# 循环创建目录
for ((i=start_number; i<=end_number; i++)); do
    mkdir "$directory_name$i"
done

# 输出目录创建成功
echo "The directories have been successfully created"

解释:上面脚本采用三个参数:目录名称、起始编号和结束编号。然后,脚本使用指定的目录名称以及起始和结束编号,循环创建目录。例如,如果目录名称为 directory,起始编号和结束编号分别为 1 和 3,则将创建目录名称为directory1directory2以及 directory33 个目录。

以下是操作和执行的结果:

[root@localhost test]# vim create_directories.sh
[root@localhost test]# chmod 700 create_directories.sh
[root@localhost test]# ./create_directories.sh dicrectory 1 3
The directories have been successfully created
[root@localhost test]# ls
case1.sh  case3.sh   create_directories.sh  dicrectory2  fruits.txt  test.txt
case2.sh  color.txt  dicrectory1            dicrectory3  readme.md

2 自动备份脚本

自动备份,可用于备份我们需要备份的资料,还是非常实用的。创建一个名称为auto_backup.sh的脚本文件,以下是脚本的内容:

#!/bin/bash

# 设置将要备份的目录路径
backup_dir="/root/test"

# 设置带时间戳的文件名称
backup_filename="backup_$(date +"%Y%m%d_%H%M%S").tar.gz"

# 创建压缩文件
tar -czf $backup_dir/$backup_filename -C /root/test/backup .

# 如果备份文件创建成功
if [ -f "$backup_dir/$backup_filename" ]; then
    echo "备份文件创建成功"
else
    echo "备份失败"
    exit 1
fi

解释:上面的脚本通过将指定目录压缩成压缩包(.tar.gz)来创建备份。备份文件名称包含一个时间戳,以确保唯一性。脚本使用带有 c(创建)、z(使用 gzip 压缩)和 f(指定输出文件)选项的 tar 命令。然后它会检查备份文件是否创建成功,并提供相应的信息。

我使用的是如下(备份/var/lib/docker/volumes/uptime-kuma )

vim bak.sh
#!/bin/bash 
  
# 备份文件或目录 
backup_dir="/var/lib/docker/volumes/uptime-kuma"

# 备份文件名 
backup_name="backup_$(date +%Y%m%d%H%M%S).tar.gz"

# 备份目录 
backup_dir="/var/lib/docker/volumes"

# 创建备份目录 
#mkdir -p $backup_dir 

# 执行备份 
tar -czf $backup_dir/$backup_name $backup_file $backup_dir
增加执行权限
chmod +x  bak.sh
执行脚本
./bak.sh

以下是运行的过程及结果:

[root@localhost test]# ./auto_backup.sh
备份文件创建成功
[root@localhost test]# ls
auto_backup.sh                 case1.sh  color.txt              dicrectory2  readme.md
backup                         case2.sh  create_directories.sh  dicrectory3  test.txt
backup_20231126_094004.tar.gz  case3.sh  dicrectory1            fruits.txt

3 使用 Cron 自动执行备份脚本

Cron 是 Linux 中基于时间的作业调度程序。可以用它定期自动执行备份脚本。下面是具体操作方法:

  1. 打开中单或命令提示符。
  2. 输入命令:crontab -e编辑 crontab 文件。
  3. 添加一行新内容来安排备份脚本。例如,要在每天凌晨 2:00 运行备份,可以添加如下行:

0 2 * * * /bin/sh /root/test/auto_backup.sh

将 /root/test/auto_backup.sh替换为你自己备份脚本的实际路径。

  1. 保存 crontab 文件并退出文本剪辑器。

现在,备份脚本将根据指定的计划自动运行。

提示:Cronitor[1] 提供快速简便的 cron 计划表达式编辑器。

用户管理

1 基本命令

在 Linux 系统中,用户管理对于控制访问和权限至关重要。以下是一些基本命令:

  • 要创建用户,需要使用 useradd命令。例如:
sudo useradd username
  • 要删除用户,请使用 userdel命令。例如:
sudo userdel username
  • 要修改用户属性,例如密码或主目录,请使用 usermod命令。例如:
sudo usermod -d /new/home/directory username
  • 要显示用户信息,请使用 id或 finger命令。例如:
id username
finger username

切记使用 sudo 管理权限执行这些命令,以确保正确的用户管理。

2 创建和显示用户名

要创建用户并显示它们的用户名,可以按照下列步骤操作:

  1. 打开终端或命令提示符。
  2. 运行以下命令创建第一个用户:
  • 运行命令:sudo useradd user1,出现提示时提供所需的信息。
  • 重复上一步创建第二个用户:sudo useradd user2
  • 要显示用户名,可以使用命令:awk -F '{print $1}' /etc/passwd,此命令将从 etc/passwd文件中检索用户名。

以下是执行过程:

[root@localhost test]# sudo useradd user1
[root@localhost test]# sudo useradd user2
[root@localhost test]# awk -F: '{print $1}' /etc/passwd
root
bin
daemon
adm
lp
sync
shutdown
halt
mail
operator
games
ftp
nobody
systemd-network
dbus
polkitd
libstoragemgmt
abrt
rpc
apache
sshd
postfix
chrony
ntp
tcpdump
huang
nginx
user1
user2

通过熟悉以上用户管理命令,我们就可以高效处理 Linux 系统上的用户帐户。

参考资料

Cronitor: https://crontab.guru/

标签:脚本,Shell,root,备份,sh,linux,test,backup
From: https://blog.51cto.com/u_64214/8599750

相关文章

  • linux的期末总结
    简介Linux是目前最流行的操作系统之一,在服务器、桌面、移动等领域都有广泛的应用。为了深入了解Linux内核的运行机制,我参加了学校的Linux内核分析课程。通过八周的学习,我对Linux内核有了比较深入的了解,并在以下几个方面取得了进步:掌握了Linux内核的基本概念和结构理解......
  • Linux 03
    第三章用户管理本章学习目标:1.了解用户和组的意义2.掌握创建、修改与删除用户/组的方法3.熟悉用户相关配置文件4.熟悉用户身份切换与提权一、用户/组概览Linux系统是多用户、多任务的分时操作系统,系统上每一个进程都有一个特定的文件,每个文件都被一个特定的所拥有。如果需......
  • Linux课堂知识总结
    这是学习Linux的第五节课,老师跟我们讲述了Linux的进程管理操作。程序(program)是一个普通文件,是为了完成特定任务而准备好的指令序列与数据的集合,这些指令和数据以“可执行映像”的格式保存在磁盘中。例如:hello.c源程序文件经过编译后产生a.out程序,其中a.out文件为可执行镜像格式......
  • Linux课堂知识总结
    这是学习Linux的第六节课,老师跟我们讲述了Linux的i/o重定向操作。cat:合并文件。sort:对文本行排序。uniq:报告或删除文件中重复的行。wc:打印文件中的换行符、字和字节的个数。grep:打印匹配行。head:输出文件的第一部分内容。tail:输出文件的最后一部分内容。tee:读取标准输入的数据,并......
  • shellscript-14-检测网段内在线ip
    shellscript-14-检测网段内在线ip脚本内容#!/bin/bash#author:yolo#检测网段内在线ip,并罗列示例网段:192.168.10.0/24#遍历网段1到254foriin`seq1254`do #如果ping通,执行成功条件为真 #-c2ping两次-W2指定超时时间 ifping-c2-W2192.168.10.$i>......
  • 学习linux的好处
    1.引言Linux操作系统是一种开源、免费的操作系统,广泛应用于服务器、嵌入式系统和个人计算机等领域。学习Linux不仅仅是获取一项技能,更是一种对计算机科学世界的深入理解。本报告将探讨学习Linux的各种好处,从技术、职业和学术角度分析其价值。2.技术好处2.1开源理念Lin......
  • Linux--存储管理
    存储管理:硬盘在分区之后,系统通过分区表来管理硬盘的使用。存储方式(连接方式层面与工作原理层面)连接方式:存储分为以下3种类型。本地存储:直接插在服务器上的硬盘,系统文件存放在本地。本章主要介绍本地存储。外部存储:可以理解为平时使用的移动硬盘,不过移动硬盘用的是USB接口......
  • linux 文件共享盘以及备份机制
    NFS minio  glusterFile 1.NFSNFS服务器搭建  目录NFS服务器1、NFS简介2、NFS工作机制2.1.RPC3、/etc/exports文件的格式4、实操1)手动挂载2)自动挂载autofs NFS服务器1、NFS简介NFS(NetworkFileSystem)即网络文件系统,是FreeBSD支持的文件......
  • # linux系统读写速度检测
    前言记录一下在Linux下测试硬盘读写速度的命令和方法。测试的工具是linux系统自带的dd命令工具+time命令工具正文dd命令介绍dd命令是一个功能强大的Linux命令,用于复制文件、转换格式和计算文件和设备的吞吐量。它的基本语法如下:dd[选线]以下是dd命令中常用的选项:if=<输入......
  • 初识Linux
    1.在这里我了解到了云计算的概念:云计算是基于互联网的相关服务的增加、使用和交付模式,通常涉及通过互联网来虚拟化资源。2.云计算的服务特征以及发展现状。(1)可以随时随地使用任何网络设备进行访问。(2)可以多人共享资源。(3)可以快速重新部署服务,十分灵活。(4)服务自动化。(5)服务......