我们有几千个小文件(2-20KB)需要在服务器之间复制到一个文件夹中以进行备份。目前,该过程以 cron 作业的形式自动完成,并将每个文件通过 SCP 复制到远程服务器。
这些文件大多是基于文本的,所以我认为SCP -C ...
可能可行,但我不确定是否有办法将所有这些小文件批处理(显然尝试压缩每个 5KB 文件是没有意义的)。
我可以压缩这些文件,但是我需要在另一端解压缩它们(需要运行一些进程来监视 SCP 复制何时完成以及触发和解压缩)。
另一个选择是使用 ssh 并通过管道传输 zip 和 unzip
所以问题是,通过 WAN 将大量小文件复制到远程服务器,同时尽量减少需要在远程主机上进行的更改次数,最有效的方法是什么?
干杯!
答案1
最有效的方法是通过连接传输它们。在 Unix 上,最简单的方法是:
tar vc source-dir/ | ssh -C target.example.com 'tar xC /target-dir'
这将使用 tar 将文件捆绑和解绑为单个流,从而允许通过您可以从 SSH 中获得的链接进行最有效的压缩和 TCP 带宽使用 - 并且存档文件的空间开销为零。