除了将远程文件与本地文件进行比较

Beyond compare remote with local file

我想比较两个文本文件,一个在远程,另一个在本地。使用 diff 我会使用

ssh user@login "cat myfile.txt" | diff - local.txt

有没有办法使用Beyond Compare进行同样的比较?如果我这样做

ssh user@login "cat myfile.txt" | bcompare - local.txt

我只显示了本地文件。

Beyond Compare Pro 包含内置 SFTP 支持,因此您可以将 SFTP URL 作为命令行参数直接传递给它。

bcompare local.txt sftp://user:password@server/folder/file.txt

如果您没有在 URL 中提供密码,Beyond Compare 将提示您输入密码。

bcompare local.txt sftp://user@server/folder/file.txt

我在这种情况下使用的一个巧妙技巧是使用 sshfs 使远程目录显示为本地目录,无法比较:

sshfs user@host:/opt/data /tmp/transfer

然后您可以使用任何 diffing 工具通过 diff -Nur /local/data/dir /tmp/transfer 或 beyond compare 将您的本地数据与远程数据进行比较,并且您可以根据需要来回复制文件。

请注意,您可能需要通过包管理器安装 sshfs,例如在 Debian/Ubuntu 通过 apt-get install sshfs

可能的选项:

  • -o PubkeyAuthentication=no: 如果你需要密码验证,但是ssh首先尝试了太多的私钥验证,如果你对这个服务器使用私钥验证或者根本没有私钥验证则不需要
  • -o sshfs_debug:如果authentication/connection失败
  • ,打印出更多信息
  • -o idmap=user: 使用 idmap=user 选项将连接用户的 UID 转换为远程用户
  • -o gid=1000: uid, gid - 将报告的文件所有权设置为给定值; uid 是您用户的数字用户 ID,gid 是您用户的数字组 ID。
  • -o nomap=error: 无法完成用户映射失败

有关详细信息,请参阅 https://wiki.archlinux.org/index.php/SSHFS