随笔 - 363, 文章 - 0, 评论 - 2, 阅读 - 23万
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

文件shell脚本备份及替换

Posted on   心默默言  阅读(103)  评论(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"
复制代码

 

相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)
历史上的今天:
2019-07-25 java数据结构复习01
点击右上角即可分享
微信分享提示