ලබා ගත හැකි එකම සම්බන්ධතාවය ssh බව සපයා ඇති යන්ත්ර හරහා ගොනු / ෆෝල්ඩර වෙනස් කරන්නේ කෙසේද?
ලබා ගත හැකි එකම සම්බන්ධතාවය ssh බව සපයා ඇති යන්ත්ර හරහා ගොනු / ෆෝල්ඩර වෙනස් කරන්නේ කෙසේද?
Answers:
බාෂ්ගේ ක්රියාවලි ආදේශනය සමඟ ඔබට එය කළ හැකිය :
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
මෙන්න තවත් ඉක්මන් හා අපිරිසිදු විධාන රේඛා වට්ටෝරුව. තෝරාගත් පිළිතුර මෙන් නොව, එය Makefiles තුළ ක්රියාත්මක වේ:
ssh [login]@[host] "cat [remote file]" | diff - "[local file]"
ලිපිගොනු පොදු යන්ත්රයකට ගෙන ඒමට scp භාවිතා කර ඒවා වෙනස් කරන්න?
හෝ, ඔබ ගොනු නම් දැන ගැනීමට අවශ්ය නම් වේ , වෙනස් හෝ නැති එක් එක් පරිගණකයේ md5sum සමග එහි පූරක ඔවුන්.
ඔබට SSHFS වැනි දෙයක් ගැනද සොයා බැලිය හැකිය , නමුත් වෙනස වැනි ඇල්ගොරිතමයක් ඊට වඩා හොඳින් ක්රියා කරන බව මම නොදනිමි.
rsync --dry-run
.
එක් ක්රමයක් නම්, ඔබේ පද්ධතියට හැකි නම් දුරස්ථ ගොනු පද්ධතිය sshfs සමඟ සවි කිරීමයි .
වෙනත් පිළිතුරකින්rsync
කෙටියෙන් යෝජනා කර ඇති පරිදි ඔබට වියළි ධාවන මාදිලියේ භාවිතා කළ හැකිය . එය වෙනස් ඕනෑම ගොනු ලැයිස්තුගත කරයි.
ඒ සඳහා rvnc
විකල්ප භාවිතා කරන්න ( r
= පුනරාවර්තන, v
= වාචික, n
= වියලි-ධාවනය, c
= චෙක්සම්). සමග rsync
අදින්න මාදිලිය (දී rsync [OPTION...] [USER@]HOST:SRC... [DEST]
), උදාහරණයක්:
rsync -rvnc root@182.18.158.207:/var/www/html/dev/ .
මතක තබා ගන්න , මෙය දේශීය හෝ දුරස්ථ ගොනුව අලුත්ද යන්න පිළිබඳ කිසිදු තොරතුරක් සපයන්නේ නැත. ඔවුන් වෙනස් නම්.
ඔබේ දේශීය යන්ත්රයේ, ඔබට වෙනස් වීමට අවශ්ය නාමාවලියෙහි පුනරාවර්තන පිටපතක් සාදන්න. උදාහරණයක් වශයෙන්:
cp -R dir replica
දේශීය පිටපත හරහා දුරස්ථ නාමාවලිය අනුකරණය කිරීමට rsync භාවිතා කරන්න:
rsync remote:/path/to/dir replica
දේශීය නාමාවලිය සහ දුරස්ථ එකෙහි දේශීය අනුරුව අතර වෙනස සොයා ගැනීමට වෙනස භාවිතා කරන්න:
diff dir replica
ඔබට sshfs තිබේ නම් සහ නාමාවලි වෙනස් කිරීමට අවශ්ය නම්:
mkdir remote_path
sshfs user@host:/path/ remote_path
diff -r path remote_path
මෙන්න මම එය කළ ආකාරය.
මම දුරස්ථ සේවාදායකයට SFTP භාවිතා කළ අතර විමසූ විට මගේ පරිශීලක නාමය / pwd ඇතුළත් කළෙමි. ඉන්පසු මම මගේ නිවසේ නාමාවලියෙහි .gvfs dir හි සාදන ලද dir වෙනස විධානයෙහි භාවිතා කළෙමි.
diff -r --brief / home / user dir / .gvfs / SFTP \ මත \ freenas.local / dir / dir1 වෙත යන මාර්ගය / දේශීය dir / dir2 වෙත යන මාර්ගය
මෙය දේශීය ෆෝල්ඩරය සහ දුරස්ථ ෆෝල්ඩරය වෙනස් කිරීමට උපකාරී වන ස්ක්රිප්ටයකි.
#!/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'
ඔබේ ~ / .bashrc හි සමහර විට bash ශ්රිතයක් නිර්මාණය කිරීමෙන් ඔබට ප්රවේශය සාමාන්යකරණය කිරීමට උත්සාහ කළ හැකිය.
myrdiff() { ssh root@"$1" cat "$2" | diff -s - "$2" ; }
ඉන්පසු එය වැනි ඉදිකිරීමක් සමඟ එය ආයාචනා කරන්න:
myrdiff vm20-x86-64 /etc/gdm/Init/Default
-S සමඟ වෙනස යෙදීමෙන්, ගොනු සමාන නම් මෙයද වාර්තා කරයි.
චියර්ස්! ජිම්
භාවිතා කිරීම grep
remote ip: 172.16.98.130
remote file: /etc/ssh/keys-root/authorized_keys
local file: ~/.ssh/id_rsa.pub
දැන් දුරස්ථ ගොනුවේ අන්තර්ගතය දේශීය ගොනුව සමඟ සසඳන්න grep
grep -w "$(cat ~/.ssh/id_rsa.pub)" <<< $(sshpass -p "mypassword" ssh root@172.16.98.130 'cat /etc/ssh/keys-root/authorized_keys')
grep විධානයේ සාර්ථකත්වය පරීක්ෂා කරන්න
echo $?
# 0
SSH මුරපද රහිත පිවිසුම සැකසීමට මෙම අදහස භාවිතා කිරීම:
if ! grep "$(cat ~/.ssh/id_rsa.pub)" <<< $(sshpass -p "mypassword" ssh root@172.16.98.130 cat /etc/ssh/keys-root/authorized_keys) &>/dev/null; then
cat ~/.ssh/id_rsa.pub | sshpass -p "mypassword" ssh root@172.16.98.130 "cat >> /etc/ssh/keys-root/authorized_keys"
fi
ssh root@172.16.98.130
සටහන: අණට sshpass
අන්තර්ක්රියාකාරී නොවන මුරපදය යැවීම සඳහා පැකේජය ස්ථාපනය කර ඇති
බවට වග බලා ගන්න ssh
.
rsync -ani --delete / root@remotehost:/
නමුත් සම්පූර්ණ පිළිතුර වඩාත් විස්තර සපයයි.