将文件移动到远程 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,它应该可用。