在本地和远程文件之间运行差异

fdu*_*uff 49 bash ssh diff

我通过主机连接ssh,我想将diff某个配置文件与另一台主机上的对应配置文件进行比较(比方说),也可以通过 访问ssh,而无需在运行差异之前先手动下载远程文件。

pol*_*lym 63

ssh user@remote_host "cat remote_file.txt" | diff - local_file.txt
Run Code Online (Sandbox Code Playgroud)

来源


cuo*_*glm 28

尝试:

diff local_file <(ssh user@server 'cat remote_file')
Run Code Online (Sandbox Code Playgroud)

或使用vimdiff

vimdiff local_file scp://server//path/to/remote_file
Run Code Online (Sandbox Code Playgroud)


小智 9

也许这对您的具体情况没有帮助,但我经常简单地使用

sum -r
Run Code Online (Sandbox Code Playgroud)

在每台机器上,并手动比较校验和。即使文件无法通过 ssh 连接访问,这也允许对文件进行比较。当然,它的所有回答都是“它们是否相同”,但这通常足以满足我的需求。它还可以轻松验证单个文件在 3 台或 4 台或更多台机器上是否相同。

  • 我可以想象,对于大文件或慢速连接,这可能非常有用。当文件实际不同时,它会保存整个文件的下载。比我更好的 Bash 脚本编写者可能可以将此答案与涉及远程“cat”的上述答案结合起来,以便仅在确定文件不同时才实际运行“cat”命令。 (2认同)
  • 命令“info coreutils 'sum incall'”除其他外,表示:“提供'sum'是为了兼容性;'cksum'程序(参见下一节)在新应用程序中更可取。” (2认同)