如何在两台服务器之间快速复制大量文件

如何在两台服务器之间快速复制大量文件

我需要在两个服务器(Ubuntu)之间传输大量 mp3。所谓大量,是指大约一百万个文件,平均大小为 300K。我尝试过,scp但大约需要一周时间。(大约 500 KB/s)如果我通过 HTTP 传输单个文件,速度为 9-10 MB/s,但我不知道如何传输所有文件。

有没有办法可以快速地转移它们全部?

答案1

我建议使用 tar。当文件树已经相似时,rsync 会执行非常很好。但是,由于 rsync 将对每个文件进行多次分析,然后复制更改,因此对于初始副本来说,它比 tar 慢得多。此命令可能会执行您想要的操作。它将在机器之间复制文件,并保留权限和用户/组所有权。

tar -c /path/to/dir | ssh remote_server 'tar -xvf - -C /absolute/path/to/remotedir'

根据 Mackintosh 的以下评论,这是您将用于 rsync 的命令

rsync -avW -e ssh /path/to/dir/ remote_server:/path/to/remotedir

答案2

外部硬盘和当日快递。

答案3

无需多言,使用 netcat,网络瑞士军刀。没有协议开销,您可以直接复制到网络套接字。示例

srv1$ tar cfv - *mp3 | nc -w1 remote.server.net 4321

srv2$ nc -l -p 4321 |tar xfv -

答案4

昨天移动了 80 TB 的数据(数百万个小文件),从切换rsynctar 事实证明速度更快因为我们不再尝试

# slow
rsync -av --progress /mnt/backups/section01/ /mnt/destination01/section01

并改为tar...

# fast
cd /mnt/backups/
tar -cf - section01 | tar -xf - -C /mnt/destination01/ 

由于这些服务器位于同一个 LAN 上,因此目标在执行推送的源系统上通过 NFS 挂载。为了加快速度,我们决定不保留文件atime

mount -o remount,noatime /mnt/backups
mount -o remount,noatime /mnt/destination01

下图展示了从 rsync 到 tar 的转变所带来的差异。这是我的老板的想法和我的同事既执行了它,又创造了伟大的在他的博客上写我只是喜欢漂亮的图片。 :)

rsync_vs_tar

相关内容