我正在尝试通过AmazonS3在多台机器上移动一个大目录的部分内容(大约40 GiB和大约800万个文件),并且由于需要保留符号链接,所以我正在对目录进行锁定,然后上传结果文件,而不是直接同步到S3。
大多数文件已经被压缩,所以我不会用gzip或bzip压缩存档。我的命令是
tar --create --exclude='*.large-files' --exclude='unimportant-directory-with-many-files' --file /tmp/archive.tar /directory/to/archive在运行这个程序时,我注意到tar在八核机器上只使用一个核心。我的印象是,基于这个核心的连接,低负载平均值(~1),以及我从iostat看到的统计数据,这个操作实际上是cpu绑定的,而不是我所期望的磁盘绑定。因为它很慢(大约90分钟),所以我想尝试并行化tar以利用额外的内核。
关于这个主题的其他问题,要么是焦点 on 压缩,要么是创建多个档案 (由于目录结构,在我的情况下并不容易)。似乎大多数人都忘记了,你甚至可以在不压缩它的情况下创建一个油球。
发布于 2016-07-08 20:54:39
由于tar存档的本质是将文件顺序存储在输出中,因此,除非您创建了多个归档文件,否则无法并行化进程。
请注意,操作的瓶颈可能是硬盘驱动器。因此,即使您确实将任务拆分到两个或多个进程中,除非它们在不同的驱动器上运行,否则它不会运行得更快。
https://unix.stackexchange.com/questions/294745
复制相似问题