首页 > 系统相关 >Linux多线程复制目录

Linux多线程复制目录

时间:2024-09-28 13:37:00浏览次数:6  
标签:.. -- find 复制 Linux 多线程 目录

比如有一个目录a需要复制:

mkdir a
touch a/a
mkdir a/b
touch a/b/c
tree a
a
├── a
└── b
    └── c

将其复制为目录d只需要用find找出目录下所有的文件,然后用gnu-parallel开多线程逐个复制即可:

mkdir d
cd a
find . -type f | parallel -j4 cp --parents {} ../d
tree ../d
../d
├── a
└── b
    └── c

-type f: 只打印文件,不打印目录
-j4: 最多并行跑4个任务。这个并行数可以改成其他值,改成0表示越多越好(一个CPU核心跑一个任务)。
--parents: 路径也一起复制

或者用xargs

find . -type f | xargs -P 4 -I {} cp --parents {} ../d

-P: --max-procs

这种方法的缺点是分配给各个线程的文件总大小可能很不均匀。所以我写了mcp,先扫描目录然后尽量均匀地分配文件给各个线程:https://github.com/light-Dedup/mcp

标签:..,--,find,复制,Linux,多线程,目录
From: https://www.cnblogs.com/searchstar/p/18437446

相关文章

  • 编译安装linux内核
    下载内核https://www.kernel.org/一般下载tarball,也就是.tar.xz格式的源码包。如果/够大,可以直接解压到/usr/src,也可以解压到机械盘上。配置.config里面是一些flag,内核编译的时候会读取这个文件,根据这些flag来配置。常用的有:CONFIG_LOCALVERSION附加在在内核的version......
  • 加速clone linux kernel
    tunagitclonehttps://mirrors.tuna.tsinghua.edu.cn/git/linux.gitgiteegitee.com有一个码云极速下载的用户,id是mirrors。这个用户维护了很多github的仓库的镜像,其中就有linuxkernel:[email protected]:mirrors/linux.git实测可以跑满带宽。建议不要用https的方式......
  • 使得两次编译linux内核产生一样的结果
    exportINSTALL_MOD_STRIP=-sexportKBUILD_BUILD_TIMESTAMP=0exportKBUILD_BUILD_USER=rootexportKBUILD_BUILD_HOST=localhostmakemrpropermakeallnoconfigmake-j4其中makeallnoconfig表示除必须的选项外,其它选项一律不选。然后就可以发现vmlinux和arch/x86/bo......
  • 解决linux下latex无法使用consolas的问题
    在网上找了好久都没有合适的解决方案TT。结合报错信息,发现其实/usr/local/texlive/2019中已经有inconsolata,但是编译时xelatex找的是/usr/share/texlive,里面有一些字体没有(我也不懂为什么官方要这样搞)。于是我们只需要把/usr/share下的相关文件夹替换成/usr/local/texlive/2019中......
  • linux性能优化实践1
    理解应用程序和系统的少数几个基本原理,再进行大量的实战练习,建立起整体系统性能的全局观。你不需要了解每个组件的所有实现细节,只要能理解它们最基本的工作原理和协作方式。性能指标:应用负载的视角:高并发、响应快,影响产品终端用户体验系统资源的视角:资源使用率、饱和度性能问......
  • [正点原子-I.MX6ULL]嵌入式 Linux 通过 nfs 下载出现 T T T T
    [正点原子-I.MX6ULL]嵌入式Linux通过nfs下载出现TTTT问题叙述但是有几个地方要注意1.安装驱动应该是2.修改GRUB_DEFAULT时,后面的引号是英文字符,直接复制过去会有语法报错3.最后就是重启linux时,如果你是在vmware上运行的,记得按shift进入boot界面问题叙述其实......
  • 在Linux上安装Cliosoft SOS的具体步骤是什么?
    在Linux上安装ClioSoftSOS的具体步骤如下。这些步骤包括了从下载软件包到完成安装的全过程,确保您能够顺利地在Linux系统上安装和配置SOS。1.准备工作检查系统要求:确保您的Linux系统满足SOS的硬件和软件要求。创建安装目录:建议使用一个专用目录来存放SOS的安装文件。例如:......
  • Linux 进程控制
    目录1.fork函数2.getpid/getppid函数3.父进程与子进程创建子进程:PID和PPID:资源继承:独立性:执行流程:退出和终止:僵尸进程:孤儿进程:进程组和会话:fork()的用途:4.父进程与子进程的应用场景:1.fork函数    一个进程,包括代码,数据和分配给进程的资源。    ......
  • Linux:环境变量
    一、环境变量1.1PATH的引入问题1:为什么我们平时输入的指令可以直接运行,但是自己编译出来的程序却要加./?——>因为指令所需要的相关程序是存储在系统能够查找得到的底下,而我们自己编译出来的程序是在当前的工作目录的,系统并不能直接找到。问题2:凭什么系统可以找到指令的......
  • Java多线程
    进程与线程一个程序有一个进程一个进程包含多个线程(必须有一个主线程)查看线程Threadt=Thread.currentThread();//获得当前线程线程创建方式1.继承Thread类,重写run方法,调用start方法2.实现Runnable接口,重写run方法,创建Thread对象newThread(Runnable),调用start方法......