编写一个Linux shell脚本,每小时自动备份所有用户编辑过的文档(后缀是.doc,.docx,.c,.cpp,.txt,这些后缀信息可以由用户指定),放到一个目录,此目录可以由用户方便指定,不重复备份。(50分)
时间: 2023-06-12 16:04:56 浏览: 120
1一个脚本工具可以是用于自动化任务的简单Shell脚本--备份目录并压缩.docx
以下是一个简单的Linux shell脚本示例,可以满足基本要求:
```shell
#!/bin/bash
# 用户指定需要备份的文件后缀,多个后缀用空格分隔
suffix=".doc .docx .c .cpp .txt"
# 用户指定备份目录
backup_dir="/path/to/backup/dir"
# 获取当前时间
date=$(date +%Y%m%d%H%M%S)
# 遍历所有用户的home目录下的文件,找出需要备份的文件
for user_dir in /home/*; do
# 如果home目录下的文件夹不是用户自己的目录,则跳过
if [[ ! -d "$user_dir" || $(basename "$user_dir") == "lost+found" ]]; then
continue
fi
# 遍历用户目录下的所有文件,找出需要备份的文件
for file in "$user_dir"/*; do
if [[ ! -f "$file" ]]; then
continue
fi
# 如果文件后缀不在用户指定的后缀列表中,则跳过
if [[ "${suffix[@]}" != *"$(echo "${file##*.}" | tr '[:upper:]' '[:lower:]')"* ]]; then
continue
fi
# 获取文件的md5值
md5=$(md5sum "$file" | cut -d ' ' -f 1)
# 如果这个md5值已经备份过了,则跳过
if [[ -f "$backup_dir/$md5" ]]; then
continue
fi
# 备份文件
cp "$file" "$backup_dir/$date-$md5"
done
done
```
这个脚本会在每个小时的第1分钟备份所有用户编辑过的文档,备份文件的命名格式为`时间戳-md5值`,如果同一个文件已经备份过了,则不会重复备份。用户可以在脚本中指定备份目录和需要备份的文件后缀。
阅读全文