美文网首页
linux shell 附有明细的文件复制

linux shell 附有明细的文件复制

作者: 风吟空城 | 来源:发表于2019-07-18 11:42 被阅读0次

业务需求

在linux执行文件夹或文件复制时,有时需要知道哪些文件更新了,哪些文件没有更新,哪些文件是新建的。基于此需求决定编写一个shell脚本来达到此目的。

shell 代码

1.扫描文件夹

function scan_src_dir_folder  {
  ls "$SRC_DIR" | while read file
  do
    if [ -d "$SRC_DIR/$file" ];
      then
        if [ ! -d "$DST_DIR/$file" ] ;
          then
            out_i "Mkdir $DST_DIR/$file"
            mkdir -p $DST_DIR/$file
        fi
    fi

    if [ -f "$SRC_DIR/$file" ];
      then
        copy_on_modify "$SRC/$file" "$DST_DIR/$file"
    fi
  done
}

2.递归扫描文件

function scan_src_dir_file {
  ls "$1" | while read file
  do
    if [ -d "$1/$file" ];
      then
        if [ ! -d "$2/$file" ];
          then
            out_i "mkdir $2/$file"
            mkdir - p $2/$file
        fi
        scan_src_dir_file "$1/$file" "$2/$file"
    fi
    
    if [ -d "$1/$file" ]
      then
        copy_on_modify "$1/$file" "$2/$file"
    fi
  done
}

3.复制文件

function copy_on_modify {
  if [ -f $2 ]
    then
      cmp "$1" "$2" > /dev/null 2>&1
      if [ $? = 0 ]
        then
          touch "$2"
      else
        echo "CP-F -> $1"
        cp -f "$1" "$2"
      fi
  else
    echo "CP-N -> $1"
    cp -f "$1" "$2"
  FI
}

4.日志输出

COLOR_INFO="echo -en \\033[1;32m"
COLOR_RESET="echo -en \\033[0m"

function out_i {
  $COLOR_INFO
  echo $*
  $COLOR_RESET
}

shell 指令附录

  1. -d filename 如果filename为目录,则为真;
  2. -f filename 如果filename为常规文件,则为真;
  3. cmp 命令是用于比较2个文件是否有差异;
  4. touch 命令是用于更改文件的时间属性;
  5. /dev/null 2>&1 cmp的比较结果命令将不会输出任何信息到控制台,也不会有任何信息输出到文件中;

相关文章

  • linux shell 附有明细的文件复制

    业务需求 在linux执行文件夹或文件复制时,有时需要知道哪些文件更新了,哪些文件没有更新,哪些文件是新建的。基于...

  • linux shell批量注释

    用到的工具:vim linux 批量注释linux shell 1.将/etc/passwd文件复制一份,当做此次...

  • Linux下的shell

    Shell 和 Linux shell程序是包含若干行shell或linux命令的文件。linux命令语句只能一行...

  • linux如何复制移动文件

    linux如何复制文件夹和移动文件夹 linux下文件的复制、移动与删除命令为:cp,mv,rm 一、文件复制命令...

  • Linux第一天

    Linux第一天 linux目录 Shell指令 就是Linux指令 常用的shell指令 目录 删除 查看文件 ...

  • docker中COPY和VOLUME细节分析

    COPY COPY即复制的意思,和linux中的cp类似。linux中可复制如下 文件 ---》 文件夹 文件夹 ...

  • Linux文件管理

    Linux教程 Linux文件管理 本文介绍如何在Linux上创建文件、删除文件、复制文件、移动文件 使用touc...

  • Linux 的 scp 命令详解

    从本地Linux复制文件到远程另一台Linux上: 比如将本地Linux的aa.txt文件复制到远程192.168...

  • Linux命令之文件管理 (三十四)

    Linux rcp命令 Linux rcp命令用于复制远程文件或目录。 rcp指令用在远端复制文件或目录,如同时指...

  • Shell笔记1

    Linux 就会依据 /etc/passwd 文件的配置给我们一个 shell 1. 基础 Shell文件以.sh...

网友评论

      本文标题:linux shell 附有明细的文件复制

      本文链接:https://www.haomeiwen.com/subject/lfyklctx.html