Tips

  1. 将大规模数据单独放置在根目录,不要放置在项目代码文件夹下,会增加IDE的索引负担

如何移动大规模数据

mv在移动大规模数据会出现如下报错:

1
2
>mv ssv2/20bn-something-something-v2/* Somethingsomething-v2_root 
zsh: 参数列表过长: mv

解决方案:

使用 rsync 移动文件,rsync 也可以用于移动文件,并且能够处理大量文件而不会遇到参数列表过长的错误:

1
rsync -a --remove-source-files ssv2/20bn-something-something-v2/ Somethingsomething-v2_root/
  • -a:归档模式,保持文件的原始属性。
  • --remove-source-files:在复制文件后删除源文件,达到移动的效果。

统计占用空间

1
2
3
4
5
6
batchcom@ /home/dataset-assist-0
vitra ❯ du -sh vitra_dataset_root
136G vitra_dataset_root

batchcom@ /home/dataset-assist-0 6m 7s
vitra ❯

对于136GB的文件,常规的du -sh命令需要运行高达7分钟的时间,推荐使用diskus进行替代。

用 Go 写的工具,是 du -sh 的并行化版本。开发者声称在多核机器上,cold‑cache(第一次运行)可比 du 快大约 10 倍,warm‑cache 下也快三倍左右。适合快速估算目录整体大小。

实测同一文件夹,最终耗时大约40秒,结果为145GB,适合快速估算。

多线程下载

1
2
3
4
# 安装(Ubuntu/Debian)
sudo apt update && sudo apt install aria2
# 下载大文件(支持多线程、断点续传)
aria2c -x 16 -s 16 -k 1M -c <URL>
  • -x 16:最大连接数(线程)
  • -s 16:分片下载
  • -k 1M:分片大小
  • -c:断点续传(已下载部分不重复)

突然发现要重新组织数据集结构

使用ln -s软链接功能避免文件移动耗费大量时间

请使用绝对地址而非相对地址