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赋予变量,以此类推。

目录
相关文章
|
1月前
|
存储 Linux 开发工具
Linux环境下使用Buildroot配置软件包
使用Buildroot可以大大简化嵌入式Linux系统的开发和维护工作,但它需要对Linux系统和交叉编译有深入的理解。通过上述步骤,可以有效地配置和定制软件包,为特定的嵌入式应用构建高效、稳定的系统。
202 11
|
3月前
|
存储 监控 Linux
Linux环境锁定关键文件防止误删操作流程。
总结以上内容,在Linux环境下锁定重要文档避免误删涉及到多种技术手段与策略组合运作, 包括但不限于利用chatter指挥官固化文档状态至只读模式、运作ACL精准调整访问权利列表、编排自动化流程简
150 20
|
3月前
|
Linux
Linux环境下的UDEV机制及其与守护进程的关联
实际使用时管理员需要熟悉编写合适udev rules去满足特殊需求;同时也需要注意避免编写过度复杂导致无法预料结果rules.UDEVD虽然稳健但错误配置可能导致无法预料问题因此需谨慎处理相关配置工作.
154 16
|
3月前
|
存储 Linux
Linux环境下删除大文件后磁盘空间未释放问题诊断流程。
以上诊断流程涉及Linux底层机制与高级管理技能结合之处,并需要管理员根据实际环境灵活调整诊断策略与解决方案。
265 8
|
4月前
|
Linux 数据安全/隐私保护 iOS开发
推荐Linux环境下效能优良的双向文件同步工具
综合上述条件,对于Linux环境下的双向文件同步需求,Unison 和 Syncthing 是两个非常出色的选择。它们都有良好的社区支持和文档资源,适用于不同规模的环境,从个人使用到商业部署。Unison 特别适合那些需要手动干预同步过程、需要处理文件冲突解决的场景。而 Syncthing 更加现代化,适合需要自动、实时的数据同步与备份的环境。对于选择哪一个,这将取决于个人的使用场景和具体需求。
520 16
|
4月前
|
安全 应用服务中间件 网络安全
在Linux环境部署Flask应用并启用SSL/TLS安全协议
至此,你的Flask应用应该能够通过安全的HTTPS协议提供服务了。记得定期更新SSL证书,Certbot可以帮你自动更新证书。可以设定cronjob以实现这一点。
333 10
|
3月前
|
Ubuntu 安全 Linux
Ubuntu 24.10 发行版登场:Linux 6.11 内核、GNOME 47 桌面环境
Ubuntu 24.10 还带来了 GNOME 47,增强了性能和稳定性,并引入了新功能。此版本的 Ubuntu 还默认在采用 Nvidia 显卡的硬件上切换到 Wayland,并在支持的硬件上默认使用开源的 Nvidia 560 内核模块。 另外需要注意的是,Ubuntu 24.10 是稳定版本,但作为非 LTS 版本,仅支持 9 个月。
|
3月前
|
安全 Linux 网络安全
Linux系统初步设置本地Git环境和生成SSH密钥的步骤。
现在您的Linux系统已经配置好了Git环境,并创建并添加了SSH密钥,可以安全地与远端仓库进行交互,无论是克隆、推送还是拉取操作。此过程确保了数据传输的安全并使版本控制流程更为顺畅。使用Git时应考虑定期更新并管理您的凭据,以确保安全性。
496 0