Answers:
您可以使用Bash的流程替换来做到这一点:
diff foo <(ssh myServer 'cat foo')
或者,如果两者都在远程服务器上:
diff <(ssh myServer1 'cat foo') <(ssh myServer2 'cat foo')
终于,我找到了一个很好的解决方案:vimdiff
vimdiff /path/to/file scp://remotehost//path/to/file
多亏了http://linux.spiney.org/remote_diff_with_vim_and_ssh, 另请参见http://www.vim.org/scripts/script.php?script_id=1075。
//
之后的2个斜线remotehost
很重要。单斜杠将不起作用
vimdiff /path/to/file scp://username@remotehost//path/to/file
如果您只想查看哪些文件不同,而不是查看实际文件的差异,则可以使用 rsync --dry-run
这是另一个又快又脏的命令行食谱。与选择的答案不同,它可以在makefile中使用:
ssh [login]@[host] "cat [remote file]" | diff - "[local file]"
这是一个脚本,可以帮助区分本地文件夹和远程文件夹。
#!/bin/bash
LOCALFOLDER=/var/www/tee
REMOTEFOLDER=$(ssh root@111.111.111.1 'ls -lA /hfs/tee'| grep -E '^total' | cut -d " " -f 2 > remotessh.txt)
COMMAND=$(ls -lA $LOCALFOLDER | grep -E '^total' | cut -d " " -f 2 > localssh.txt)
REM=$(cat remotessh.txt)
LOCAL=$(cat localssh.txt)
echo $LOCAL
echo $REM
if [ $REM -eq $LOCAL ]
then
echo Directories are the same
else
echo Directories are differnt
fi
#diff localssh.txt remotessh.txt | grep -E '^total' | cut -d " " -f 2
http://myfedora.co.za/2012/04/diff-two-remote-file-systems/
差异<(/ usr / bin / ssh user1@192.168.122.1'ls / opt / lib /')<(/ usr / bin / ssh user2@192.168.122.1'ls / tmp /')| grep -i“>” | sed's /> // g'
rsync -ani --delete / root@remotehost:/
但是完整答案提供了更多细节。