问题标签 [rsync]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
8 回答
22846 浏览

python - 用 Python 控制 rsync?

我一直想编写一个 python 脚本,它会依次运行多个 rsync 实例,以便将数据备份到另一台计算机。

目前我只有这个带有我使用的命令的文本文件,我只是将它们复制粘贴到终端中,这看起来有点傻。

我希望能够使用 python 为我做这件事。我非常模糊地知道如何使用 subprocess.popen,但我不知道如何让 python 直接与 rsync 交互,比如为我输入密码。蟒蛇能做到吗?

就像是:

或者我能做的最好的事情就是拥有它,甚至是一个 bash 脚本,只需按顺序运行 rsyncs 并且必须一遍又一遍地输入我的密码?

提前致谢。

0 投票
2 回答
5519 浏览

unix - 如何在没有回车的情况下从日志文件中显示 rsync 进度?

我有一个来自 rsync 命令的日志文件,其中有进度。运行时,此进度会更新同一行上的显示信息。当我捕获此命令的输出时,我得到一个在终端上正常显示的文件cat(所有退格键和重新编辑都被重播),但我希望能够grep 在文件上使用并处理它,以便我看到所有退格键编辑命令。如何处理文件以删除所有进度更新并获得具有最终编辑的文件?

0 投票
1 回答
500 浏览

php - rsync 同步省略目录

好的,我可能不是第一个尝试将基于 PHP 的 Web 界面与 rsync 放在一起以简化部署的人,但确实如此。

我们在本地有一个“QA”服务器,在 Rackspace 有一个“Staging”服务器。我已经设置了 SSH 密钥配对,所以我可以在两台服务器之间进行 rsync 并且一切正常。问题是 rsync 对于它决定需要更新的内容有点不稳定。

我编写的脚本首先使用“--dry-run”参数执行 rsync,以获取需要传输的所有内容的列表。命令如下:

现在一切正常,我可以将返回的字符串解析为需要删除的内容和需要添加/更新的内容。然后,我构建了一个 HTML 表格,该表格会根据每个复选框在层次结构中的位置自动缩进它。我还使用了一些 javascript,因此我可以允许用户选择文件夹中的所有文件。

如果要添加/删除文件夹本身,则将其包含在列表中。例如:

这很好,因为“/newfolder/”将显示一个缩进,而“/newfolder/file1.php”和“/newfolder/file2.php”将分别在“/newfolder/”下方显示两个缩进。“/newfolder/”旁边的复选框会自动选择两个“子”文件,每个人都很高兴。

但是,如果它只是将文件添加/更新到文件夹,它会忽略文件夹本身:

...

这意味着“/oldfolder/”中的所有文件都将有两个缩进,但是没有可见的机制来选择文件夹中的所有文件。

所以我的问题是:在可用的 rsync 参数中我是否缺少某些东西,我可以强制它包含任何更新文件的文件夹,还是我必须在循环遍历数组时添加它们?如果是后者,那么最好的方法是什么?

帮助我 Obi Stack Overflowbi,你是我唯一的希望......

0 投票
7 回答
19420 浏览

rsync - rsync --delete --files-from=list /dest/ 不会删除不需要的文件

正如您在标题中看到的那样,我尝试将文件夹与文件列表同步。我希望这个命令会删除 dest/ 中所有不在列表中的文件,但它没有。

所以我搜索了一下,现在知道了,rsync 不能做到这一点。

但我需要它,所以你知道有什么方法吗?

PS:该列表是由python脚本创建的,因此可以想象您的解决方案使用了一些python代码。

编辑,让我们具体一点:

该列表如下所示:

和这样的命令:

这可行,但如果我删除一行,它不会在 foobar/.

编辑2:

这既不工作......

0 投票
2 回答
41950 浏览

rsync - Rsync 加密

我知道 rsync 可以在文件传输期间启用/禁用 ssh 加密协议。那么,如果 ssh 加密协议被禁用,是不是意味着 rsync 根本不做任何加密呢?

另外,我问上述问题的原因是我们使用 rsync 模块作为文件传输的一部分,并且模块中没有任何内容指定将使用 ssh 加密。

如果 rsync 不使用任何加密,那么理论上我可以在源机器和目标机器上打开一个端口并将文件从源推送到目标。

0 投票
3 回答
9221 浏览

rsync - 仅使用 rsync 报告已更新的文件

当 rsync 打印出它对每个文件所做的详细信息(使用详细标志之一)时,它似乎包括已更新的文件和未更新的文件。例如,我使用-v标志的输出片段如下所示:

我只对更新的文件感兴趣。在上述情况下是sorry.html. 即使该目录中没有更新的文件,它也会在输入目录名称时打印出来。有没有办法从这个输出中过滤掉没有更新文件的最新文件和目录?

0 投票
1 回答
3634 浏览

gettext - Snow Leopard 上的 MacPorts:rsync 库未加载 libintl

升级到 OS X 10.6 后,我遇到了各种与 MacPorts 相关的特殊问题,但大多数问题都已通过根据需要简单地重建库来解决。有一个问题我似乎无法通过该方法解决,甚至重新构建所有端口,完全删除旧的 /opt 目录,也没有任何效果:

但是,有问题的库确实存在,这确实令人沮丧:

这是来自安装的 gettext 包:

文件在那里:

我已经搜索过此类错误,但它们似乎都已过时。以前有没有人解决过这个问题?

0 投票
2 回答
2510 浏览

rsync - Rsynch 和 SSH:仅在从源重命名时重命名文件夹

我已经阅读了 rsync 文档几个小时,但我不知道如何向 rsync 传达如何在源文件夹重命名时只重命名(而不是重新上传文件夹及其内容)目标文件夹。

我正在使用 SSH 连接到目标,本地文件夹是源 - 而远程服务器是目标。如果我重命名包含文件的文件夹,rsync 会自动重新上传源文件夹的所有内容。我没有使用 rsync 的服务器部分,如果这样做可能会起作用?

我在使用 lftp 时遇到过同样的行为,而且这个工具似乎没有这些选项。即使它基于文件的日期规则,重命名文件夹中的文件也会被删除/重新上传。

如果有人知道如何管理这个,请提前感谢:)

0 投票
2 回答
348 浏览

python - 如何部署高度迭代的更新

我有一组大约 150Kb 大小的二进制资产(swf 文件)。我正在我的家用计算机上本地开发它们,我想定期部署它们以供审查。我目前的策略是:

  1. 将 .swf 复制到一个传输目录中,该目录也是一个 hg (mercurial) 存储库。
  2. hg push我的 slicehost VPN 的变化
  3. ssh到我的 slicehost VPN
    • cd到我的传输目录和hg up
    • su www并将cp更改后的文件放入我的公共文件夹以供查看。

我想自动化这个过程。最好的情况是:

  1. 将 .swf 复制到“快速部署”目录中
  2. 运行一个本地脚本来完成上述所有操作。

我对感兴趣:

  • 关于将密码放在哪里的建议,因为我需要su www将文件传输到公共网络目录。
  • 如何处理本地机器和服务器之间的责任划分。

我认为使用 rsync 是比 hg 更好的工具,因为我真的不需要这些类型更改的修订历史。我可以将其编写为 python 脚本、shell 脚本,或者被认为是最佳实践。

最终,我想将它构建到一个可以处理我适度部署需求的系统中。也许有一个开源部署系统可以处理这种情况和其他类型的情况?我可能会为当前的需求自行开发,但从长远来看,我想要一些相对灵活的东西。

注意:我的家用开发计算机是 OS X,目标服务器是一些最新版本的 Ubuntu。我更喜欢基于 python 的解决方案,但如果最好从 shell 处理,我可以毫无问题地将它放在一起。

0 投票
3 回答
2265 浏览

svn - 通过高延迟网络连接同步许多(小)文件的方法

我们通常使用 Subversion(客户端上的 svn 更新;单向)将我们的软件应用程序部署到我们的客户端。由于延迟高(大文件下载速度很好),我们的一位客户目前遇到问题,因为他们在中国,而我们的服务器在加拿大。Subversion 只是在很长一段时间后因错误而超时。

我们的应用程序有很多小文件(.aspx、.config 等)和一些较大的文件(.dll、.jpg),总大小约为 100mb-200mb。

我目前正在考虑执行以下操作:

  1. 在服务器上执行本地 svn checkout
  2. 压缩结果
  3. FTP或rsync大zip文件到外机
  4. 将文件解压缩到临时文件夹中。
  5. 从该临时文件夹执行本地 rsync 到我们的典型安装文件夹。

有没有更好的解决方案?

  • 设置一个靠近目的地的 Subversion 镜像?(我每个月只需要几个小时,但可能很难找到)
  • 使用另一个版本控制系统?(对于高延迟连接,git 是否更好)?
  • 有没有办法打包颠覆补丁(包括二进制文件)以在目的地重新应用而不是发送所有数据?
  • 使用 DropBox(使用 Amazon S3)将文件传输到临时文件夹会更好吗?