设计一个shell程序,在每月第一天备份并压缩/etc目录的所有内容,存放在/root/bak目录里,且文件名为如下形式yymmdd_etc,yy为年,mm为月,dd为日。Shell程序fileback存放在/usr/bin目录下。
时间: 2024-02-27 20:54:02 浏览: 17
好的,这是一个简单的 shell 脚本,可以实现您的要求。请将以下脚本保存为 fileback 并放在 /usr/bin 目录下,然后给它执行权限。
```bash
#!/bin/bash
# 获取当前日期
now=$(date +"%y%m%d")
# 压缩/etc目录并保存到/root/bak目录下
tar -czf /root/bak/${now}_etc.tar.gz /etc
# 输出备份完成信息
echo "Backup complete: /root/bak/${now}_etc.tar.gz"
```
然后,您可以在每月第一天通过以下方式运行此脚本:
```bash
sudo fileback
```
这将压缩并备份 `/etc` 目录,并将备份文件保存在 `/root/bak` 目录下,文件名格式为 `yymmdd_etc.tar.gz`。
相关问题
下面给出了一个SHELL程序,试对其行后有#()形式的语句进行解释,并说明程序完成的功能。 #!/bin/bash DIRNAME='1s /root|grep bak' #(1) if [-z "SDIRNAME"then #(2) mkdir /root/bak cd /root/bak (3) f YY='date +%y';MM='date +%m'DD='date +%d#(4) BACKETC=YYMMSDD etc.tar.gz #(5) tar zevf SBACKETC /etc #(6)
下面是对该SHELL程序的解释:
```
#!/bin/bash
# 搜索/root目录下包含"bak"的目录
DIRNAME='1s /root|grep bak' #(1)
# 如果DIRNAME为空,则创建/root/bak目录并进入
if [-z "$DIRNAME"then #(2)
mkdir /root/bak
cd /root/bak #(3)
# 获取当前日期,并以YYMMDD格式保存为变量
YY='date +%y';MM='date +%m';DD='date +%d' #(4)
# 构建备份文件名
BACKETC=$YY$MM$DD etc.tar.gz #(5)
# 备份/etc目录
tar zevf $BACKETC /etc #(6)
fi
```
该脚本的功能是在/root目录下查找包含"bak"的目录,如果找不到则创建/root/bak目录,并在其中备份/etc目录。下面是对程序中使用的语句的解释:
1. 使用ls命令列出/root目录下的所有文件和目录,通过grep命令过滤出包含"bak"的目录,并将其保存为DIRNAME变量。
2. 检查DIRNAME变量是否为空,如果为空则说明未找到包含"bak"的目录,此时创建/root/bak目录并进入该目录。
3. 进入/root/bak目录。
4. 使用date命令获取当前日期,并使用+%y、+%m、+%d参数分别获取年、月、日,并将其保存为YY、MM、DD三个变量。
5. 使用YY、MM、DD三个变量构建备份文件名BACKETC,其格式为YYMMDD etc.tar.gz。
6. 使用tar命令备份/etc目录,并将备份文件保存为BACKETC变量指定的文件名。
总体来说,该脚本用于自动备份/etc目录,并将备份文件保存在/root/bak目录中。如果/root/bak目录不存在,则会自动创建该目录。
Linux:查看系统配置文件/etc/passwd和/etc/shadow,观察内容变化情况
在Linux系统中,/etc/passwd和/etc/shadow是两个重要的系统配置文件,用于存储用户的账号信息和密码信息。
/etc/passwd文件中包含所有用户的账号信息,每个用户的账号信息占用一行,每行包含七个字段,分别为用户名、密码占位符、用户ID、组ID、用户描述、主目录和默认Shell。在系统中添加、删除或修改用户账号时,/etc/passwd文件的内容会发生变化。
/etc/shadow文件存储用户的密码信息,包括加密后的密码、密码修改时间、密码过期时间等。只有系统管理员才能访问此文件。在用户更改密码时,/etc/shadow文件的内容也会发生变化。
为了观察/etc/passwd和/etc/shadow文件的内容变化情况,可以使用以下命令:
1. 查看/etc/passwd文件的内容变化:使用diff命令比较两个/etc/passwd文件的差异,例如:
```
diff /etc/passwd /etc/passwd.bak
```
其中,/etc/passwd.bak是备份文件的名称,可以根据实际情况进行修改。
2. 查看/etc/shadow文件的内容变化:同样使用diff命令比较两个/etc/shadow文件的差异,例如:
```
diff /etc/shadow /etc/shadow.bak
```
注意,为了安全起见,/etc/shadow文件只有root用户才有权限进行修改和查看。因此,在使用diff命令比较/etc/shadow文件差异时,需要使用sudo或者root用户进行操作。