ฉันเชื่อมต่อกับโฮสต์ผ่านทางssh
และฉันต้องการเปรียบเทียบ (สมมติว่าdiff
) ไฟล์ config บางไฟล์เทียบกับโฮสต์อื่นในโฮสต์อื่นเข้าถึงได้ผ่านทางssh
โดยไม่ต้องดาวน์โหลดไฟล์ระยะไกลด้วยตนเองก่อนที่จะเรียกใช้ diff
ฉันเชื่อมต่อกับโฮสต์ผ่านทางssh
และฉันต้องการเปรียบเทียบ (สมมติว่าdiff
) ไฟล์ config บางไฟล์เทียบกับโฮสต์อื่นในโฮสต์อื่นเข้าถึงได้ผ่านทางssh
โดยไม่ต้องดาวน์โหลดไฟล์ระยะไกลด้วยตนเองก่อนที่จะเรียกใช้ diff
คำตอบ:
ssh user@remote_host "cat remote_file.txt" | diff - local_file.txt
cat
ซึ่งอันที่จริงเป็นเพียงไฟล์ต้นฉบับ?
ssh
คำสั่งรีโมตไปที่diff
ซึ่งกำลังรอการเปรียบเทียบstdin
กับ localfile
ลอง:
diff local_file <(ssh user@server 'cat remote_file')
หรือใช้vimdiff
:
vimdiff local_file scp://server//path/to/remote_file
diff local_file <(ssh user@server 'cat remote_file')
งานได้กับ SSH ที่ไม่มีรหัสผ่านหรือไม่ ดูเหมือนว่าฉันจะไม่ได้รับพร้อมท์รหัสผ่าน ...
cat <(ssh user@server 'cat remote_file')
และcat < <(ssh user@server 'cat remote_file')
ดูความแตกต่าง
บางทีนี่อาจจะไม่เป็นประโยชน์ในกรณีของคุณ แต่ฉันมักจะใช้
sum -r
ในแต่ละเครื่องและเปรียบเทียบเช็คซัมด้วยตนเอง ที่ช่วยให้การเปรียบเทียบไฟล์แม้ว่าพวกเขาจะไม่สามารถเข้าถึงได้ผ่านการเชื่อมต่อ ssh แน่นอนคำตอบทั้งหมดคือ "พวกเขาเหมือนกัน" แต่บ่อยครั้งที่เพียงพอสำหรับความต้องการของฉัน นอกจากนี้ยังทำให้ง่ายต่อการตรวจสอบว่าไฟล์เดียวเหมือนกันในเครื่อง 3 หรือ 4 หรือมากกว่า
cat
เพื่อเรียกใช้cat
คำสั่งจริงเมื่อได้รับการพิจารณาแล้วว่าไฟล์ต่างกัน
info coreutils 'sum invocation'
กล่าวว่าอนึ่ง: "'ผลรวม' มีไว้เพื่อความเข้ากันได้โปรแกรม 'cksum' (ดูหัวข้อถัดไป) จะดีกว่าในแอปพลิเคชันใหม่"
หากคุณต้องการวิธีการมองเห็นที่ชัดเจนยิ่งขึ้นในเซสชันเทอร์มินัลของคุณ ผู้บัญชาการเที่ยงคืนมีตัวเลือกระบบไฟล์ระยะไกล (ตัวเลือก SFTP ลิงค์ ... ในเมนู) และตัวเลือกการเปรียบเทียบไฟล์ภาพ ไม่ได้ติดตั้งตามค่าเริ่มต้นในระบบ Linux ส่วนใหญ่ แต่มีอยู่ในที่เก็บฐานส่วนใหญ่ ขั้นตอน:
mc
ในโฟลเดอร์ที่มีไฟล์ที่จะเปรียบเทียบsftp://<user>@<servername>/<path>
)ins
ปุ่มเลือก / ไฮไลต์ไฟล์ที่จะทำการเปรียบเทียบ ( tab
การเปลี่ยนแปลงระหว่างแผงด้านซ้ายและขวา)หมายเหตุ:โดยปกติเมนูผู้บัญชาการเที่ยงคืนสามารถเข้าถึงได้โดยใช้เมาส์ในเทอร์มินัลเซสชันของคุณ มันไม่ทำงานF9
ทำให้คุณได้รับในเมนูด้วย
SSHFS
จากนั้นเข้าถึงราวกับว่าเป็นโลคัล