사용 가능한 유일한 연결이 ssh 인 경우 여러 시스템에서 파일 / 폴더를 어떻게 비교합니까?
사용 가능한 유일한 연결이 ssh 인 경우 여러 시스템에서 파일 / 폴더를 어떻게 비교합니까?
답변:
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 도 참조하십시오 .
//
후에 remotehost
중요합니다. 단일 슬래시가 작동하지 않습니다
vimdiff /path/to/file scp://username@remotehost//path/to/file
여기에 또 다른 빠르고 더러운 명령 행 레시피가 있습니다. 선택한 답변과 달리 makefile 내에서 작동합니다.
ssh [login]@[host] "cat [remote file]" | diff - "[local file]"
scp를 사용하여 파일을 일반 컴퓨터로 가져 와서 다른 곳으로 옮깁니 까?
또는 파일 이 다른지 여부를 알고 싶다면 각 시스템에서 md5sum으로 해시하십시오.
SSHFS 와 같은 것을 살펴볼 수도 있지만 diff와 같은 알고리즘이 그 기능을 얼마나 잘 수행하는지 모르겠습니다.
rsync --dry-run
입니다.
한 가지 방법은 시스템에서 가능한 경우 sshfs로 원격 파일 시스템을 마운트하는 것 입니다.
다른 답변rsync
에서 간략히 제안한대로 드라이 런 모드에서 사용할 수 있습니다 . 다른 파일을 나열합니다.
이를 위해 rvnc
옵션 ( r
= recursive, v
= verbose, n
= dry-run, c
= checksum)을 사용하십시오. 함께 rsync
풀 모드 (에 rsync [OPTION...] [USER@]HOST:SRC... [DEST]
), 예이다 :
rsync -rvnc root@182.18.158.207:/var/www/html/dev/ .
기억 이 로컬 또는 원격 파일이 최신 여부에 아무런 정보를 제공하지 않습니다. 그들이 다른 경우에만.
이것은 로컬 폴더와 원격 폴더를 구별하는 데 도움이되는 스크립트입니다.
#!/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/
diff <(/ 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:/
을 제외한 전체 대답은 자세한 내용을 제공합니다.