我想比较两个文本文件,一个在远程,另一个在本地。使用diff命令可以实现:
ssh user@login "cat myfile.txt" | diff - local.txt
有没有一种方法可以使用Beyond Compare执行相同的比较?如果我这样做:
ssh user@login "cat myfile.txt" | bcompare - local.txt
我只能看到本地文件。
我想比较两个文本文件,一个在远程,另一个在本地。使用diff命令可以实现:
ssh user@login "cat myfile.txt" | diff - local.txt
ssh user@login "cat myfile.txt" | bcompare - local.txt
在这种情况下我使用的一个小技巧是用sshfs
将远程目录映射为本地目录,以便在Beyond Compare中访问:
sshfs user@host:/opt/data /tmp/transfer
diff -Nur /local/data/dir /tmp/transfer
或像往常一样使用Beyond Compare 来比较本地数据和远程数据,并根据需要复制文件。请注意,您可能需要通过包管理器安装sshfs,例如在Debian / Ubuntu上通过apt-get install sshfs
。 可能的选项包括:-o PubkeyAuthentication=no
:如果您需要密码验证,但ssh首先尝试太多的私钥验证,则不需要此选项,如果您对此服务器使用私钥验证或根本不使用私钥验证,则不需要此选项。-o sshfs_debug
:如果身份验证/连接失败,则打印更多信息。-o idmap=user
:使用idmap = user选项将连接用户的UID转换为远程用户的UID。-o gid=1000
:uid,gid-将文件的报告所有权设置为给定值; uid是您的用户的数字用户ID,gid是您的用户的数字组ID。-o nomap=error
:如果无法执行用户映射,则失败。Beyond Compare Pro包含内置的SFTP支持,因此您可以将SFTP URL直接作为命令行参数传递给它。
bcompare local.txt sftp://user:password@server/folder/file.txt
bcompare local.txt sftp://user@server/folder/file.txt
ssh name@login.xxx "cd my/directory/"
- Manfredobcompare sftp://name@login.xxx/my/directory/file.ext
。 - Chris Kennedyssh://
开头的网址,而不是BC使用的默认sftp://
。是否有任何解决方法来指定网址中的其他协议?例如 ssh://
或 https://
。 - SteveR