现在我知道你不应该把 1000 万个文件放在一个目录中。这要怪开发人员,但就目前情况而言,这就是我的情况。我们将修复它并将它们移动到文件夹组中,但首先我们必须将它们从生产箱中复制出来。
我首先尝试了 rsync,但失败了。我猜是因为在内存中存储文件的名称和路径大于 RAM 和交换空间。
然后我尝试将其全部压缩成 tar.gz 但无法解压,文件太大错误(它是 60gigs)。
我尝试只进行 tar 到 tar 的压缩,但收到“无法打开:文件太大”的错误提示
tar c images/ | tar x –C /mnt/coverimages/
额外信息:
/mnt/coverimages/ 是我们想要将图像移动到的 nfs 共享。
所有文件都是图像
操作系统:Gentoo
答案1
如果您安装 rsync 3+ 版本,它将滚动列出要传输的文件,而不需要将整个文件列表保存在内存中。将来,您可能需要考虑对文件名进行哈希处理,并根据这些哈希的部分内容创建目录结构。
您可以看到这个答案来了解一下我所说的散列是什么意思。
答案2
如果我可以安排停机时间,我会简单地暂时移动磁盘。
答案3
您是否尝试过使用 find 和 -exec (或 xargs),例如
find images/ -exec cp "{}" /mnt/coverimages/ \;
?
答案4
我认为您有两个选择:使用正则表达式匹配文件名来逐步移动文件集,或者卸载文件系统并复制整个设备。
哇。祝你好运。