Linux相当于robocopy?


34

这很有趣,Linux命令行工具在很多方面都大大优于Windows命令行工具,但是我还没有找到等效的方法是robocopy。Robocopy比拥有更多的通用性cp,而且我不知道如何使用Linux工具来完成我想做的事情。

一个特定的用例是,我有两个目录,文件大多相似,但是一个目录具有较新的源文件,一个目录具有另一个目录所没有的内容文件,并且可能还有较新的源文件(用于网站)。我想将文件从后一个目录复制到前一个目录,添加新的内容文件等,但不覆盖目标目录中的新文件。

我试图弄清楚如何在Linux中进行大约半小时的操作,决定可能必须学习bash脚本或做一些我想做的事情,然后才意识到可以使用robocopy。我也有其他要求。我基本上是将Python(Django)网站从SVN储存库转换为Git储存库,并且我想确保自己没有对SVN进行未提交的更改。但是,我想有条件地排除.svn目录和.pyc编译的Python文件。以下robocopy命令完全符合我的要求:

robocopy source destination /XO /E /XD .svn /XF *.pyc

在Linux中有与Robocopy等效的东西吗?我rsync简要地调查了一下,但似乎我必须在尝试同步文件夹之前设置一个rsync服务器。


1
您不需要设置rsync服务器,rsync over ssh会在服务器模式下在远程计算机上自动运行rsync(这种方式仅用于该连接,在您自己的帐户下运行,并在完成后自动关闭) 。
CesarB

“……但似乎在尝试同步文件夹之前,我必须先设置rsync服务器。”我已经使用Rsync多年了,并且从未安装过正式的Rsync服务器。实际上,macOS上的许多同步/备份工具都以Rsync为核心,而无需设置服务器,例如Carbon Copy Cloner和SuperDuper!
JakeGould '17

Answers:


38

听起来rsync绝对是您所追求的。您无需设置“ rsync服务器”即可将文件从一台计算机复制到另一台计算机。Rsync支持通过SFTP(SSH文件传输)复制文件,大多数linux机顶盒已启用(如果未手动禁用)。

有关更多详细信息,请参见使用rsync跨系统的 Lifehacker 镜像文件

无论您是要备份数据,安全地分发文件,还是要通过互联网从办公室到办公室,在本地网络上的计算机之间或从计算机到Web服务器镜像工作文档,rsync都可以完成工作。今天,我们将使用rsync在命令行上通过安全连接在Mac和PC之间镜像文件夹。

Rsync是免费的(如在语音中一样)并且是跨平台的,这意味着它可以在操作系统(Windows / Cygwin,Mac OS,Linux)之间同步文件;它可以在ssh上工作,因此它是加密的和安全的;不像FTP它的增量,因此只有部分改变的文件被转移,而不是整个文件,这使得它去像飞毛腿冈萨雷斯; 它是命令行的事实使它易于编写脚本并易于自动化。


阅读rsync手册页-要使用ssh(不带显式rsync服务器),您将使用“ -e ssh”
Doug Harris 2009年

1
rsync很棒!而且您不需要使用-e,因为诸如user@host.com:/ blah /之类的任何路径都会自动使用它。
《 How-To Geek》,

嗯,很酷。因此,它可以使用基本scp类似的语法通过ssh进行传输吗?我实际上是在尝试在一台计算机上传输文件,但这很高兴。
Ibrahim

1
不幸的是,这个答案并不完全正确:尽管它确实使用SSH,但并未使用SFTP。而是直接使用rsync协议与远程rsync实例进行通信。
Daniel B

15

rsync会将文件从一个目录复制到同一台计算机上的另一个目录,例如robocopy。这是与您的robocopy命令等效的rsync命令:

rsync -auv --exclude '.svn' --exclude '*.pyc' source destination

这将递归地将源复制到目标,并排除较旧的文件以及“ .svn”和“ * .pyc”目录/文件。


除非它将以单线程方式进行,否则可能导致性能下降超过5倍,具体取决于存储解决方案中的间接访问量。
米哈伊尔(Mikhail)

从源中删除文件后,该文件不会同步到目标。
Jirong Hu
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.