面试题答案
一键面试#!/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 源目录路径 目标目录路径
。
- 脚本首先检查源目录是否存在,如果不存在则报错退出。
- 接着检查目标目录,不存在则创建。
- 使用
cp -r
命令将源目录下所有文件复制到目标目录。 - 通过
ls -l
命令结合grep
和wc
统计备份文件数量。 - 使用
date +"%Y-%m-%d %H:%M:%S"
获取当前时间。 - 最后将备份时间和备份文件数量写入日志文件。