Linux相当于robocopy?

Ibr*_*him 40 windows linux robocopy

这有点有趣,Linux 命令行工具在很多方面都远远优于 Windows 工具,但我还没有找到与之等效的一件事robocopy。Robocopy 比cp.

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

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

robocopy source destination /XO /E /XD .svn /XF *.pyc
Run Code Online (Sandbox Code Playgroud)

Linux 中是否有与 Robocopy 相同的东西?我进行了rsync简要调查,但似乎我必须在尝试同步文件夹之前设置 rsync 服务器。

Jos*_*unt 41

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

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

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

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

  • 不幸的是,这个答案并不完全正确:虽然它使用 SSH,但它不使用 SFTP。相反,它使用 rsync 协议直接与远程 rsync 实例通信。 (2认同)

Sea*_*ats 18

rsync 将文件从一个目录复制到同一台机器上的另一个目录,如 robocopy。这是相当于您的 robocopy 命令的 rsync 命令:

rsync -auv --exclude '.svn' --exclude '*.pyc' source destination
Run Code Online (Sandbox Code Playgroud)

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

  • 除了它将以单线程方式执行此操作,这可能会导致超过 5 倍的性能损失,具体取决于您的存储解决方案中的间接数量。 (2认同)