MST
星途 面试题库

面试题:Bash脚本中如何实现简单的文件备份

编写一个Bash脚本,实现将指定目录下的所有文件备份到另一个指定目录,并在备份完成后生成备份日志记录备份时间和备份文件数量。
50.3万 热度难度
编程语言Bash

知识考点

AI 面试

面试题答案

一键面试
#!/bin/bash

# 源目录
source_dir=$1
# 目标目录
target_dir=$2
# 日志文件路径
log_file="backup_log.txt"

# 检查源目录是否存在
if [ ! -d "$source_dir" ]; then
    echo "源目录 $source_dir 不存在"
    exit 1
fi

# 检查目标目录是否存在,不存在则创建
if [ ! -d "$target_dir" ]; then
    mkdir -p "$target_dir"
fi

# 备份文件
cp -r "$source_dir"/* "$target_dir"

# 获取备份文件数量
file_count=$(ls -l "$target_dir" | grep -v '^d' | wc -l)

# 获取当前时间
backup_time=$(date +"%Y-%m-%d %H:%M:%S")

# 写入日志
echo "备份时间: $backup_time, 备份文件数量: $file_count" >> "$log_file"

echo "备份完成,日志已记录到 $log_file"

使用方法:将上述脚本保存为一个文件(如 backup.sh),赋予执行权限 chmod +x backup.sh,然后执行 ./backup.sh 源目录路径 目标目录路径

  1. 脚本首先检查源目录是否存在,如果不存在则报错退出。
  2. 接着检查目标目录,不存在则创建。
  3. 使用 cp -r 命令将源目录下所有文件复制到目标目录。
  4. 通过 ls -l 命令结合 grepwc 统计备份文件数量。
  5. 使用 date +"%Y-%m-%d %H:%M:%S" 获取当前时间。
  6. 最后将备份时间和备份文件数量写入日志文件。