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

将文件移动到远程Ubuntu Web服务器的最佳方式/工具是什么? 显然是一个新手问题,但是我应该创build一个SMB安装,使用FTP或SSH?

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

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

这会做的是tar会创build一个数据stream,只是通过encryption的ssh发送,但没有压缩。 如果您通过互联网链接推送,最好通过省略-o选项来保留压缩。

欲了解更多信息,请看这里

rsync是一个不错的select。 它通常使用SSH,聪明只需要复制需要的东西,最好的是如果被中断,你可以简单地重新启动它。

如果你想复制几个文件,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”,以便在通过networking发送数据之前压缩数据。 如果你在千兆位,我不会打扰压缩。 如果它死了,你必须从头开始,但是如果你已经复制的话,你可能会发现你可以使用rsync。

值得指出的是,这没有scp或rsync-over-ssh所具有的安全性,所以如果不希望其他人看到数据,请确保相信端点和其中的所有内容。

为什么不使用scp? 因为比较起来速度非常慢。 上帝知道scp在做什么,但是它不会以线速复制数据。 它不是encryption和解密,因为那只是使用CPU,当我完成它没有CPU绑定。 我只能假设scp进程有很多握手和ssh协议开销。

为什么不rsync? Rsync在第一个副本上并不会真的给你买的太多。 这只是rsync真正发光的后续运行。 但是,rsync要求源在开始复制任何数据之前将完整的文件列表发送到目标。 如果你的文件系统有大量的文件,这是一个非常大的开销,尤其是当目标主机必须将它保存在内存中。

如果要将文件从Windows桌面移动到远程Ubuntu服务器,则可以尝试WinSCP

WinSCP是一个开源免费的SFTP客户端和Windows的FTP客户端。 传统的SCP协议也被支持。 它的主要function是在本地和远程计算机之间安全地复制文件。

确保在Ubuntu服务器上安装了ssh。

sudo apt-get install ssh

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

recursion目录复制

 scp -r locadir [email protected]:~/ 

单个文件副本

 scp localfile [email protected]:~/ 

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

 scp [email protected]:~/localfile . 

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