linux - 如何有效地将许多文件移动到新服务器?

标签 linux zip gzip tar

我要更换托管服务提供商,需要将数百万上传的文件传输到新服务器。所有文件都在同一个目录中。是的。你没看错。 ;)

过去我这样做过:

  1. 从源服务器压缩所有文件
  2. scp zip 到新服务器
  3. 解压缩
  4. 移动目录到合适的位置
    • 无论出于何种原因,我从第 1 步开始的 zip 总是带着路径并要求我移动。

我上次执行此操作大约需要 4-5 天才能完成,这大约是我现在所用时间的 60%。

我希望有更好的方法。你有什么建议?

文件结构是散列的。像这样的东西:AAAAAAAAAA.jpg - ZZZZZZZZZZ.txt

这是我们正在考虑的一个想法:

根据 3 个字母前缀将 zipper 分成大量的迷你 zipper 。像这样的东西:

AAAAAAAAAA.jpg - AAAZZZZZZZ.gif => AAA.zip

理论优点:

  • 可以加快传输速度,允许同时传输多个 zip
  • 可以限制因传输失败而损失的时间。 (等待 2 天以等待传输最终失败是可怕的)

理论缺点:

  • 可能会大大减慢初始 zip,因为 zip 必须通过通配符 (AAA*) 查找文件,可能会通过同时运行多个 zip 线程来抵消,使用所有 CPU 而不是仅使用一个。
  • 复杂性?

我们也考虑过 rsync 和 scp,但担心手动传输每个文件的费用。由于远程服务器是空的,我不需要担心那里已经有什么。

你怎么看?你会怎么做?

(是的,我最终会把它们转移到 Amazon S3,我只会给它们寄一张磁盘,但与此同时,我昨天就需要它们了!)

最佳答案

您实际上有多种选择,我最喜欢的是使用 rsync

rsync [dir1] [dir2]

此命令实际上会比较目录,并仅同步它们之间的差异。

有了这个,我最有可能使用以下内容

rsync -z -e ssh user@example.com:/var/www/ /var/www/

-z Zip
-e Shell Command

您还可以通过 SSH 使用 SFTP、FTP。

甚至 wget

wget -rc ssh://user@example.com:/var/www/

关于linux - 如何有效地将许多文件移动到新服务器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13216204/

相关文章:

iis-7 - IIS 7 上的 GZip 压缩不起作用 (COMPRESSION_DISABLED) - 如何解决此问题?

python - 即时解压缩下载的 gzip 内容

c++ - 部署到 Windows 和 Linux 时选择哪个安装系统?

c++ - Clang 的 UBSan 和函数指针 : Is this illegal?

java - Android解压功能不起作用

c# - 在 C# 中创建包含内存流/字节数组中的文件的压缩文档

linux - 用于替换两个分隔符位置之间的任何内容的 unix 命令

linux - 如何编写 shell 脚本来复制脚本所在目录中的文件

python - 将文件压缩到内存并将整个存档作为字节读取

php - 如何解压 txt.gz 文件并使用 php 存储到数据库中