Alexey Timanovsky Asked: 2009-08-27 09:17:20 +0800 CST2009-08-27 09:17:20 +0800 CST 2009-08-27 09:17:20 +0800 CST 如何区分 ssh? 772 如果唯一可用的连接是 ssh,我如何跨机器区分文件/文件夹? ssh 16 个回答 Voted Kyle Brandt 2009-08-27T09:22:25+08:002009-08-27T09:22:25+08:00 您可以使用 Bash 的进程替换来做到这一点: diff foo <(ssh myServer 'cat foo') 或者,如果两者都在远程服务器上: diff <(ssh myServer1 'cat foo') <(ssh myServer2 'cat foo') Best Answer Alexey Timanovsky 2010-05-16T00:55:38+08:002010-05-16T00:55:38+08:00 最后我找到了很好的解决方案: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。 Amandasaurus 2009-09-05T03:14:23+08:002009-09-05T03:14:23+08:00 如果您只想查看哪些文件不同,而不是实际文件的差异,那么您可以使用rsync --dry-run Steve Dickinson 2010-12-28T10:43:28+08:002010-12-28T10:43:28+08:00 这是另一个快速而肮脏的命令行配方。与选择的答案不同,它在 makefile 中工作: ssh [login]@[host] "cat [remote file]" | diff - "[local file]" Ian Clelland 2009-08-27T09:19:48+08:002009-08-27T09:19:48+08:00 使用 scp 将文件带到普通机器并在那里进行比较? 或者,如果您只想知道文件是否不同,请在每台机器上使用 md5sum 对它们进行哈希处理。 您也可以研究类似SSHFS的东西,但我不知道像 diff 这样的算法在这方面的表现如何。 Zoredache 2009-08-27T09:19:56+08:002009-08-27T09:19:56+08:00 一种方法是,如果在您的系统上可能的话,只需使用sshfs挂载远程文件系统。 zzapper 2014-04-30T04:21:46+08:002014-04-30T04:21:46+08:00 正如另一个答案rsync中简要建议的那样,您可以在试运行模式下使用。它列出了所有不同的文件。 为此,请使用rvnc选项(r=recursive、v=verbose、n=dry-run、c=checksum)。在rsync拉模式 ( rsync [OPTION...] [USER@]HOST:SRC... [DEST]) 中,示例如下: rsync -rvnc [email protected]:/var/www/html/dev/ . 请记住,这不提供有关本地文件还是远程文件是否较新的信息。只要他们不同。 salva 2013-01-31T05:16:19+08:002013-01-31T05:16:19+08:00 在您的本地机器上,制作您想要区分的目录的递归副本。例如: cp -R dir replica 使用 rsync 在本地副本上复制远程目录: rsync remote:/path/to/dir replica 使用 diff 查找本地目录和远程目录的本地副本之间的差异: diff dir replica metrix 2014-11-10T21:22:40+08:002014-11-10T21:22:40+08:00 如果您有 sshfs 并且需要区分目录: mkdir remote_path sshfs user@host:/path/ remote_path diff -r path remote_path Peter 2012-01-02T12:30:57+08:002012-01-02T12:30:57+08:00 这是我的做法。 我使用 SFTP 连接到远程服务器,并在出现提示时输入了我的用户名/密码。然后我.gvfs在 diff 命令中使用了在我的主目录中的目录中创建的目录。 diff -r --brief /home/user dir/.gvfs/SFTP\ on\ freenas.local/path to dir/dir1 /path to local dir/dir2
您可以使用 Bash 的进程替换来做到这一点:
或者,如果两者都在远程服务器上:
最后我找到了很好的解决方案:vimdiff
感谢http://linux.spiney.org/remote_diff_with_vim_and_ssh 另见http://www.vim.org/scripts/script.php?script_id=1075。
如果您只想查看哪些文件不同,而不是实际文件的差异,那么您可以使用
rsync --dry-run
这是另一个快速而肮脏的命令行配方。与选择的答案不同,它在 makefile 中工作:
使用 scp 将文件带到普通机器并在那里进行比较?
或者,如果您只想知道文件是否不同,请在每台机器上使用 md5sum 对它们进行哈希处理。
您也可以研究类似SSHFS的东西,但我不知道像 diff 这样的算法在这方面的表现如何。
一种方法是,如果在您的系统上可能的话,只需使用sshfs挂载远程文件系统。
正如另一个答案
rsync
中简要建议的那样,您可以在试运行模式下使用。它列出了所有不同的文件。为此,请使用
rvnc
选项(r
=recursive、v
=verbose、n
=dry-run、c
=checksum)。在rsync
拉模式 (rsync [OPTION...] [USER@]HOST:SRC... [DEST]
) 中,示例如下:请记住,这不提供有关本地文件还是远程文件是否较新的信息。只要他们不同。
在您的本地机器上,制作您想要区分的目录的递归副本。例如:
使用 rsync 在本地副本上复制远程目录:
使用 diff 查找本地目录和远程目录的本地副本之间的差异:
如果您有 sshfs 并且需要区分目录:
这是我的做法。
我使用 SFTP 连接到远程服务器,并在出现提示时输入了我的用户名/密码。然后我
.gvfs
在 diff 命令中使用了在我的主目录中的目录中创建的目录。