将单个文件夹中的 1000 万张图片复制到另一台服务器

将单个文件夹中的 1000 万张图片复制到另一台服务器

现在我知道你不应该把 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

我认为您有两个选择:使用正则表达式匹配文件名来逐步移动文件集,或者卸载文件系统并复制整个设备。

哇。祝你好运。

相关内容