将文件移动到远程 Ubuntu 网络服务器的最佳方法是什么?

将文件移动到远程 Ubuntu 网络服务器的最佳方法是什么?

将文件移动到远程 Ubuntu Web 服务器的最佳方法/工具是什么?显然这是一个新手问题,但我应该创建 smb 挂载、使用 ftp 还是 ssh?

答案1

scp、rsync 通过 ssh 都很好,但对于大型数据集(即大量小文件中的大量数据或甚至只是大量大文件),我使用 ssh 上的 tar 而不进行压缩,执行以下操作:

 cd /path/to/localdir && tar -cf - ./| ssh -o “Compression=off” someuser@someotherserver “tar -xf - -C /path/to/remote/dir”

tar 会创建一个通过 ssh 加密发送但没有压缩的数据流。如果你通过互联网链接推送它,你最好通过省略 -o 选项来保持压缩。

有关更多信息请参见此处

答案2

同步是一个不错的选择。它通常使用 SSH,可以智能地仅复制所需的内容,最重要的是,如果它中断了,您只需重新启动它即可。

答案3

如果您要复制一些文件,scp 是个不错的选择。如果您要反复将同一目录复制到不同位置,rsync 是个不错的选择。但是,如果您要在两台机器之间复制大量数据,唯一的方法就是使用 netcat。

在接收机器上,运行:

# cd /dest/dir && nc -l -p 12345 | tar -xf -

在发送机器上您现在可以运行:

# cd /src/dr && tar -xf - | nc -q 0 remote-server 12345

你会发现一切都运行良好,而且速度快了很多。如果带宽比 CPU 更受限制,那么你可以在 tar 选项(“tar -xzf -”等)中添加“z”或“j”,以便在通过网络发送数据之前对其进行压缩。如果你使用的是千兆位,我不会费心进行压缩。如果它死机了,你就必须从头开始,但你可能会发现,如果你复制了足够多的数据,你可以使用 rsync。

值得指出的是,这不具备 scp 或 rsync-over-ssh 那样的安全性,所以如果您不想让任何人看到数据,请确保您信任端点和其间的所有内容。

为什么不使用 scp?因为相比之下它慢得令人难以置信。天知道 scp 在做什么,但它不会以线速复制数据。它不是加密和解密,因为那只会使用 CPU,而当我这样做时,它并没有受到 CPU 的限制。我只能假设 scp 进程有很多握手和 ssh 协议开销。

为什么不使用 rsync?rsync 在第一次复制时实际上不会给你带来太多好处。只有在后续运行中 rsync 才真正大放异彩。但是,rsync 要求源在开始复制任何数据之前将完整的文件列表发送到目标。如果你的文件系统包含大量文件,那么这将是一笔非常大的开销,尤其是当目标主机必须将其保存在内存中时。

答案4

将文件移动到远程系统的最佳方式是SCP

递归目录复制

scp -r locadir [email protected]:~/

单个文件复制

scp localfile [email protected]:~/

如果你想从远程服务器复制文件

scp [email protected]:~/localfile .

scp 是 ssh 套件的一部分,如果远程服务器上有 ssh 和 sshd,它应该可用。

相关内容