当前位置: 首页 > news >正文

【开源项目】Rust开发复制文件夹目录结构工具

说明

  • 由于我经常需要在多个大容量的移动硬盘中查找和新增文件,我希望把硬盘的目录结构放到服务器的自建网盘中,因此开发了这个工具,使得在不同硬盘之间的文件管理变得更加便捷

  • 项目地址:https://github.com/VinciYan/folder_cloner.git

  • Rust语言开发,编译EXE文件体积小,只有747KB(链接:https://pan.baidu.com/s/1jT6W74d2lbAdToa0QjmnZw?pwd=fp4q 提取码:fp4q )

项目简介

这个项目通过复制文件目录结构、查找非空文件和对比目录结构差异,为用户提供了一个高效、便捷的文件管理工具,适用于数据迁移、远程查询和版本控制等多种场景

  • 快速定位:通过复制目录结构和识别非空文件,用户可以快速定位到所需文件的位置,减少寻找文件的时间,提高工作效率。可以使用Everything等工具快速查找文件,提高效率和管理便捷性

  • 节省存储空间:由于仅复制目录结构而不是实际文件内容,可以在不占用大量存储空间的情况下,轻松管理和查看大容量硬盘上的文件目录。源文件可以存放在服务器、NAS、网盘或大容量硬盘等设备中

  • 远程存储查询:通过将目录结构存储在便携设备中,比如U盘等,可以随时随地查询远程服务器或大容量硬盘上的文件情况,方便进行远程管理和操作

  • 新增文件同步:当在复制的文件夹中添加新的非空文件时,可以扫描复制的文件夹,找出这些非空文件,从而将其同步复制到源文件夹中,确保数据一致性

  • 变更文件识别:在复制文件夹中删除或添加文件后,可以扫描出新增和删除的文件路径,便于识别和管理目录结构的变化。这样可以有效地同步和备份目录,确保文件的完整性和一致性

  • 版本控制:通过定期对比源文件夹和复制文件夹的结构差异,可以有效地进行版本控制,跟踪文件的新增和删除情况

实际应用

使用OpenCASCADE源码的文件夹OpenCASCADE-7.7.0-vc14-64用来测试

复制文件夹中创建104529个文件耗时47.35s

folder_cloner-v0.1.0-x86_64-pc-windows-msvc.exe --src-folder=D:\OpenCASCADE-7.7.0-vc14-64 --dst-folder=C:\Users\sywq6\Downloads\test
Number of files: 104529
Number of directories: 2203
Elapsed time: 47.35s

在复制文件夹中新增一个非空文件,104530个文件中扫描非空文件,耗时6.74s

Number of non-empty files: 1
Non-empty files list written to: C:\Users\sywq6\Downloads\non_empty_files.txt
Time taken to write non-empty files to txt: 6.74s

non_empty_files.txt为非空文件结果

C:\Users\sywq6\Downloads\test\NewFile.txt

在复制文件夹中新增一个文件,并且删除文件“test\vtk-6.1.0-vc14-64\lib\vtk.jar”,对比源文件夹和复制文件夹,耗时738.83ms

Number of added files: 1
Number of removed files: 1
Differences written to: C:\Users\sywq6\Downloads\directory_differences.txt
Time taken to compare folders: 735.96ms

directory_differences.txt为对比结果

Added files:
NewFile.txtRemoved files:
vtk-6.1.0-vc14-64\lib\vtk.jar

相关文章:

  • 新款S32K3 MCU可解决汽车软件开发的成本和复杂性问题(器件编号包含S32K322E、S32K322N、S32K328)
  • 【linux】服务器ubuntu安装cuda11.0、cuDNN教程,简单易懂,包教包会
  • 秋招突击——7/12——复习{每日温度、完全平方数、无重复最长子串}——新作{字节面试——控制多线程按照顺序输出}
  • Spring的AOP
  • ASP.NET Core----基础学习06----将所有数据在页面中显示 布局页面的使用
  • 基于Faster R-CNN的安全帽目标检测
  • Redis分布式锁-Redisson可重入锁原理的个人见解。
  • 【全面介绍Pip换源】
  • 【密码学】密码学数学基础:剩余系
  • 【学习笔记】无人机(UAV)在3GPP系统中的增强支持(十四)-无人机操控关键绩效指标(KPI)框架
  • Vue3 前置知识
  • 基于hive数据库的泰坦尼克号幸存者数据分析
  • starRocks搭建
  • 14、Python之super star:一颗星、两颗星,满天都是小星星
  • Rust 版本升级:rustup update stable 报错
  • Android 控件背景颜色处理
  • angular组件开发
  • javascript从右向左截取指定位数字符的3种方法
  • Linux Process Manage
  • ucore操作系统实验笔记 - 重新理解中断
  • 百度小程序遇到的问题
  • 聊聊redis的数据结构的应用
  • 猫头鹰的深夜翻译:JDK9 NotNullOrElse方法
  • 前嗅ForeSpider教程:创建模板
  • 驱动程序原理
  • 应用生命周期终极 DevOps 工具包
  • 源码安装memcached和php memcache扩展
  • hi-nginx-1.3.4编译安装
  • mysql面试题分组并合并列
  • ​MySQL主从复制一致性检测
  • ​软考-高级-信息系统项目管理师教程 第四版【第19章-配置与变更管理-思维导图】​
  • # 利刃出鞘_Tomcat 核心原理解析(八)-- Tomcat 集群
  • #知识分享#笔记#学习方法
  • (2)(2.4) TerraRanger Tower/Tower EVO(360度)
  • (2024,Flag-DiT,文本引导的多模态生成,SR,统一的标记化,RoPE、RMSNorm 和流匹配)Lumina-T2X
  • (C语言)输入自定义个数的整数,打印出最大值和最小值
  • (day 12)JavaScript学习笔记(数组3)
  • (四)React组件、useState、组件样式
  • (四)图像的%2线性拉伸
  • (学习日记)2024.01.09
  • (转)EXC_BREAKPOINT僵尸错误
  • .aanva
  • .NET 6 在已知拓扑路径的情况下使用 Dijkstra,A*算法搜索最短路径
  • .NET Core WebAPI中封装Swagger配置
  • .net core 连接数据库,通过数据库生成Modell
  • .net 调用php,php 调用.net com组件 --
  • .net 桌面开发 运行一阵子就自动关闭_聊城旋转门家用价格大约是多少,全自动旋转门,期待合作...
  • .NET/C# 使用 SpanT 为字符串处理提升性能
  • .Net小白的大学四年,内含面经
  • /dev下添加设备节点的方法步骤(通过device_create)
  • @vueup/vue-quill使用quill-better-table报moduleClass is not a constructor
  • [Algorithm][动态规划][简单多状态DP问题][按摩师][打家劫舍Ⅱ][删除并获得点数][粉刷房子]详细讲解
  • [C++11 多线程同步] --- 条件变量的那些坑【条件变量信号丢失和条件变量虚假唤醒(spurious wakeup)】
  • [DEBUG] spring boot-如何处理链接中的空格等特殊字符
  • [Docker]十一.Docker Swarm集群raft算法,Docker Swarm Web管理工具