Linux环境下通过Shell实现文件目录复制进度监控

简介: Linux环境 Shell脚本 FOR循环

需求:Linux环境下,有一目录A下存放某类文件N个,现需将该目录A下文件复制到新建目录B中,由于文件数量较大,需通过Shell监控复制进度。

Shell实现:
方法1:while无限循环(目的目录下无限期执行)

#!/bin/bash
#
while :
do 
    CountN=$(ls -lR|grep "^-"|wc -l)
    echo -e "已复制文件数;$CountN"
    sleep 10
done

方法2:while无限循环(指定目录参数与停止条件)

#!/bin/bash
#
sdir=$1 #原始目录
ddir=$2    #目的目录
while : #while无限循环用":"
do 
    SN=$(ls -lR $sdir|grep "^-"|wc -l) #原始目录下文件总数
    DN=$(ls -lR $ddir|grep "^-"|wc -l) #目的目录下文件总数
    R=$(awk 'BEGIN{printf "%.2f%\n",('$DN'/'$SN')*100}') #完成比例
    echo -e "总文件数:SN  已复制文件数;DN 完成率:R"
    if [ $DN -eq $SN ] #如果文件已传完,则退出循环
    then
        echo -e "传输完成!"
        break
    else
        sleep 10 #间隔时间,单位秒
    fi
done

方法3,采用for条件循环(传输完成自动停止)

#!/bin/bash
#
sdir=$1    #参数,原始目录
ddir=$2    #参数,目的目录
SN=$(ls -lR $1|grep "^-"|wc -l) #原始目录下文件总数
DN=$(ls -lR $2|grep "^-"|wc -l) #目的目录下文件总数
for (((i=DN;i<=SN;i=DN)) #如果文件已传完,则退出循环
do 
    DN=$(ls -lR $2|grep "^-"|wc -l) #目的路径下文件总数
    R=$(awk 'BEGIN{printf "%.2f%\n",('$DN1'/'$SN1')*100}')    #完成比例
    echo -e "总文件数:$SN  已复制文件数;$DN 完成率:$R"
    sleep 10 #间隔时间,单位秒
done
echo -e "传输完成!"

扩展

for循环:

形式1:条件循环
for ((初始值;循环控制条件;变量变化))
do
程序
done

其中:
1)初始值:在循环开始时,需要给某个变量赋予初始值,如 i=1。
2)循环控制条件:用于指定变量循环的次数,如 i<=100,则只要 i 的值小于等于 100,循环就会继续。
3)变量变化:每次循环之后,变量该如何变化,如 i=i+1,代表每次循环之后,变量的值都加 1。

形式2:数值性循环
for 变量 in 值1 值2 值3…
do
程序
done

其中:
环的次数取决于in后面值的个数(以空格分隔),有几个值就循环几次,并且每次循环都把值赋予变量。 in 后面有三个值,for 会循环三次,第一次循环会把值1赋予变量,第二次循环会把值2赋予变量,以此类推。

目录
相关文章
|
15天前
|
Linux Shell 网络安全
Kali Linux系统Metasploit框架利用 HTA 文件进行渗透测试实验
本指南介绍如何利用 HTA 文件和 Metasploit 框架进行渗透测试。通过创建反向 shell、生成 HTA 文件、设置 HTTP 服务器和发送文件,最终实现对目标系统的控制。适用于教育目的,需合法授权。
52 9
Kali Linux系统Metasploit框架利用 HTA 文件进行渗透测试实验
|
1天前
|
Ubuntu Linux Go
golang编译成Linux可运行文件
本文介绍了如何在 Linux 上编译和运行 Golang 程序,涵盖了本地编译和交叉编译的步骤。通过这些步骤,您可以轻松地将 Golang 程序编译成适合 Linux 平台的可执行文件,并在目标服务器上运行。掌握这些技巧,可以提高开发和部署 Golang 应用的效率。
34 14
|
2天前
|
存储 NoSQL Linux
linux之core文件如何查看和调试
通过设置和生成 core 文件,可以在程序崩溃时获取详细的调试信息。结合 GDB 等调试工具,可以深入分析 core 文件,找到程序崩溃的具体原因,并进行相应的修复。掌握这些调试技巧,对于提高程序的稳定性和可靠性具有重要意义。
41 6
|
6天前
|
Prometheus 运维 监控
Prometheus+Grafana+NodeExporter:构建出色的Linux监控解决方案,让你的运维更轻松
本文介绍如何使用 Prometheus + Grafana + Node Exporter 搭建 Linux 主机监控系统。Prometheus 负责收集和存储指标数据,Grafana 用于可视化展示,Node Exporter 则采集主机的性能数据。通过 Docker 容器化部署,简化安装配置过程。完成安装后,配置 Prometheus 抓取节点数据,并在 Grafana 中添加数据源及导入仪表盘模板,实现对 Linux 主机的全面监控。整个过程简单易行,帮助运维人员轻松掌握系统状态。
57 3
|
1月前
|
存储 Shell Linux
Linux 如何更改默认 Shell
Linux 如何更改默认 Shell
40 0
Linux 如何更改默认 Shell
|
1月前
|
Linux 开发工具 Perl
在Linux中,有一个文件,如何删除包含“www“字样的字符?
在Linux中,如果你想删除一个文件中包含特定字样(如“www”)的所有字符或行,你可以使用多种文本处理工具来实现。以下是一些常见的方法:
41 5
|
7月前
|
Linux 数据安全/隐私保护
linux(二十三)用户权限管理chmod修改文件及目录权限
linux(二十三)用户权限管理chmod修改文件及目录权限
177 0
|
4月前
|
Linux Go
在Linux中,文件和目录的权限有何作用以及如何修改?
在Linux中,文件和目录的权限有何作用以及如何修改?
|
5月前
|
Linux 数据安全/隐私保护 iOS开发
Linux的root用户,普通用户无法在根录中创建文件,一般在其HOME目录里是不受限的,一旦出了HOME目录,大多数地方,仅有读和执行的权限,ctrl + d回到上一个用户,Exit,su - ro
Linux的root用户,普通用户无法在根录中创建文件,一般在其HOME目录里是不受限的,一旦出了HOME目录,大多数地方,仅有读和执行的权限,ctrl + d回到上一个用户,Exit,su - ro
|
Linux
【Linux命令200例】chmod设置文件或目录的访问权限
在Linux系统中,chmod命令用于设置文件或目录的访问权限。它允许你控制谁可以读取、写入和执行文件。
475 0