博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

文件shell脚本备份及替换

Posted on 2023-07-25 16:03  心默默言  阅读(73)  评论(0编辑  收藏  举报
#!/bin/bash
# Backup and Upload Script
# Author: zhaozhuang

time_now=$(date +%Y-%m-%d)
packages_path="./packages"

function delete_files() {
    local filename=$1
    local work_path=$2
    files=$(ls "$work_path")
    for f in $files; do
        if [[ $f == *bak2022-* && $f == $filename* ]]; then
            echo "删除之前备份的文件$f"
            rm "$work_path/$f"
        fi
    done
}

function backup_and_upload() {
    num=0
    while IFS= read -r file; do
        file=${file//\\//}
        file_name=$(basename "$file")
        file_bak="$file"_bak"$time_now"
        file_name_bak="$file_name"_bak"$time_now"
        parent_file_path=$(dirname "$file")
        echo "文件$file的父路径为$parent_file_path"
        delete_files "$file_name" "$parent_file_path"
        if [ -e "$file" ]; then
            mv "$file" "$file_bak"
            echo "将$file_name重命名为$file_name_bak"
        else
            echo "源文件$file不存在,该文件为新增"
        fi
        cp "$packages_path/$file_name" "$file"
        echo "成功复制:$file_name"
        ((num++))
    done <<< "$1"
    echo "num=$num"
}

# 读取 config.txt 文件中的两行路径,并调用 backup_and_upload 函数
while IFS= read -r line; do
    backup_and_upload "$line"
done < "config.txt"