Как развернуть каталоги по ssh
Я пытаюсь рекурсивно сравнивать каталог в локальном узле с каталогом на удаленной машине linux. Однако, когда я выполняю следующую команду:
diff -r 'ssh [email protected]:/home/admin' /home/admin
он не работает, говоря:
diff: ssh [email protected]:/home/admin: нет такого файла или каталога
Каков правильный способ сравнения рекурсивно содержимого каталогов?
Заранее спасибо
Ответы
Ответ 1
Если вам не нужно различать детали в файле, просто получите разницу между именем dir/file и попробуйте следующее:
(Примечание: нужно установить "SSH логин без пароля", для получения дополнительной информации просмотрите этот URL-адрес: http://www.linuxproblem.org/art_9.html)
diff <(ssh [email protected] ls -R /home/admin) <(ls -R /home/admin)
Ответ 2
Попробуйте использовать "rsync" с параметром "-n", который просто выполняет "сухой запуск" и сообщает вам, что он будет делать.
Ответ 3
Вы можете установить удаленный каталог через sshfs
, затем вы можете использовать diff -r
для сравнения двух каталогов, как вы хотите это сделать.
В качестве альтернативы вы можете запускать похожие команды find
на обеих машинах для печати деревьев файлов (например, имена файлов, размеры и даты), а затем сравнивать выходы как с помощью diff
. Конечно, это не будет сравнивать содержимое файла:
diff <(ssh host find /home/admin -printf '"%8s %P\n"') \
<(find /home/admin -printf '%8s %P\n')
Обратите внимание на двойное цитирование строки формата printf в вызове ssh
. Один слой удаляется реле ssh
.
Ответ 4
Я считаю, что krusader очень полезен для такой задачи, если вам нужен графический интерфейс.
Подробнее см. https://www.linux.com/news/synchronize-directories-komparator-and-kdiff3 http://krusador.org.
пример сравнения папок