Linux 文件备份
只是备份文件,作为记录,方便后续使用
#!/bin/bash
# 检查参数
if [[ $# -lt 2 ]]; then
echo "用法: $0 文件夹列表 目标目录"
exit 1
fi
# 参数定义
folder_list="$1"
backup_dir="$2"
# 检查文件夹列表是否存在
if [[ ! -f "$folder_list" ]]; then
echo "错误: 文件夹列表 '$folder_list' 不存在"
exit 1
fi
# 获取当前日期作为时间戳
timestamp=$(date +"%Y%m%d_%H%M%S")
# 创建目标备份目录(如果不存在)
mkdir -p "$backup_dir"
# 开始逐个备份
while IFS= read -r folder_path; do
# 忽略空行
[[ -z "$folder_path" ]] && continue
# 检查文件夹是否存在
if [[ -d "$folder_path" ]]; then
# 获取文件夹名称
folder_name=$(basename "$folder_path")
# 生成压缩文件名
backup_filename="${folder_name}_${timestamp}.tar.gz"
# 压缩文件夹
tar -czf "$backup_dir/$backup_filename" -C "$(dirname "$folder_path")" "$folder_name"
echo "已备份并压缩: $folder_path -> $backup_dir/$backup_filename"
else
echo "警告: 文件夹 '$folder_path' 不存在,跳过"
fi
done < "$folder_list"
echo "所有文件夹备份完成!"
定时备份
每天晚上 11 点定时备份
crontab -e
0 23 * * * /bin/bash /path/to/backup.sh /path/to/folders.txt /backup/destination >> /var/log/backup.log 2>&1