Подтвердить что ты не робот

Как развернуть каталоги по ssh

Я пытаюсь рекурсивно сравнивать каталог в локальном узле с каталогом на удаленной машине linux. Однако, когда я выполняю следующую команду:

diff -r 'ssh [email protected]:/home/admin' /home/admin

он не работает, говоря:

diff: ssh [email protected]:/home/admin: нет такого файла или каталога

Каков правильный способ сравнения рекурсивно содержимого каталогов?

Заранее спасибо

4b9b3361

Ответ 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.