ไฟล์เดียวกันขนาดไฟล์แตกต่างกัน


12

ฉันทำสำเนาสำรองจากเซิร์ฟเวอร์ FTP ด้วย lftp และ Transmit (แอพ Mac) ทุกอย่างใช้ได้ดี แต่มีขนาดไฟล์ที่แตกต่างกันสำหรับไฟล์ 1-2 ไฟล์ แต่จะเหมือนกัน

ไฟล์แรก:

http://dl.dropbox.com/u/229956/deadcow_seo.php

ไฟล์ที่สอง:

http://dl.dropbox.com/u/229956/deadcow_seo.php_2.php

ความแตกต่างระหว่างสองไฟล์นี้คืออะไร?


คุณแน่ใจหรือไม่ว่าปัญหาไม่ใช่แค่ขนาดรายงาน Apple เปลี่ยนวิธีที่ Mac OS X รายงานพื้นที่เก็บข้อมูลสองสามปีที่ผ่านมาเพื่อให้ตรงกับวิธีการที่ฮาร์ดไดรฟ์ที่ใช้ผลิต แทน 1MB = 1024KB พวกเขาใช้ 1MB = 1,000KB ขนาดอื่น ๆ อาจถูกรายงานโดยโฮสต์ Linux ของคุณโดยใช้วิธีการอื่นดังนั้นไฟล์ดูเหมือนจะมีขนาดแตกต่างกัน ไม่แน่ใจว่าสิ่งนี้ใช้ได้กับกรณีของคุณหรือไม่ แต่ก็น่าสนใจไม่น้อย
WebDevKev

ไม่ใช่อย่างนั้น เพียงแค่ดูไฟล์ที่เขาให้ไว้เป็นส่วนหนึ่งของคำถามหรือภาพหน้าจอ diff ในคำตอบของฉัน ไฟล์มีขนาดไม่ใหญ่พอที่จะสร้างความแตกต่างในแต่ละครั้งที่ 1,800-2,900 ไบต์
Daniel Beck

คำตอบ:


25

deadcow_seo.phpใช้ปลายสาย Unix ( LF) ในขณะที่deadcow_seo.php_2.phpใช้ปลายสาย DOS / Windows ( CR LF)

FTP มี "โหมดการถ่ายโอน" หลายโหมดโดยที่สองโหมดนี้ใช้งานร่วมกัน1 - ไบนารี (หรือที่เรียกว่า "รูปภาพ") และข้อความ (หรือ "ASCII") ในโหมด "ไบนารี่" ไฟล์จะถูกถ่ายโอนตรงตามที่เป็นอยู่ไบต์ต่อไบต์ในขณะที่ "ASCII" จะทำให้ไฟล์ถูกตีความว่าประกอบด้วยบรรทัดข้อความ - การสิ้นสุดบรรทัดจะถูกแปลงเป็นมาตรฐานเครือข่ายCR LFเมื่อส่งและ แปลงเป็นจุดสิ้นสุดดั้งเดิมของเครื่องเมื่อได้รับ

การถ่ายโอนไฟล์เป็นข้อความอาจทำให้เข้าใจได้ในตอนแรก แต่มันก็ทำให้เกิดปัญหาในภายหลัง - ในความเป็นจริงแล้วเซิร์ฟเวอร์ FTP บางตัวได้ลบไฟล์นั้นอย่างสมบูรณ์หรือทำให้เทียบเท่ากับไบนารีที่ด้านเซิร์ฟเวอร์ นอกจากนี้โปรแกรมแก้ไขข้อความส่วนใหญ่ (ยกเว้น Notepad) สามารถอ่านและบันทึกไฟล์ได้ทั้งในรูปแบบ Windows และ Unix

เพียงกำหนดค่าไคลเอนต์ FTP ของคุณให้ใช้โหมดไบนารีเสมอ - โดยปกติคำสั่งจะเป็นbinหรือmode iในขณะที่ไคลเอ็นต์กราฟิกอาจมีช่องทำเครื่องหมายหรือรายการประเภทไฟล์ในการตั้งค่า


1โหมดเก่าบางโหมดคือ "tenex" ( ล้าสมัยเป็นเวลานานสำหรับไฟล์ที่ใช้หน้า TENEX) และ "บีบอัด" (ซึ่งดูเหมือนว่าจะถูกกำหนดเป็นอัลกอริธึม RLE แบบง่าย) เซิร์ฟเวอร์ FTP ล่าสุดรองรับ "โหมด z" สำหรับการบีบอัด zlib


12

คุณใช้โหมดการถ่ายโอนข้อความ (หรือ ASCII) ซึ่งแทนที่ตัวแบ่งบรรทัดระหว่างการถ่ายโอน สิ่งนี้มักจะมีประโยชน์สำหรับเมื่อคุณพัฒนาสคริปต์และโปรแกรมบน Windows และถ่ายโอนไฟล์ไปยัง Linux หรือ Mac OS X พวกเขาจะไม่ทำงานอย่างอื่นเนื่องจากระบบจะเห็นข้อมูลขยะในตอนท้ายของทุกบรรทัด

หากไฟล์มีตัวแบ่งบรรทัด Windows เดียว\r\n(หรือCRLF) และคุณดาวน์โหลดไปยัง Linux หรือ Mac OS X ไฟล์นั้นจะถูกแทนที่ด้วย\n(หรือLF) ซึ่งน้อยกว่า 1 ไบต์ การใช้ FileMerge เพื่อเปรียบเทียบไฟล์ยืนยันสิ่งนี้ในแถบสถานะ:

ป้อนคำอธิบายรูปภาพที่นี่

ดูคำตอบนี้ในการตีความข้อมูลด้วย


คุณสามารถกำหนดประเภทไฟล์ที่จะตีความเป็นข้อความในการตั้งค่าของการส่ง:

ป้อนคำอธิบายรูปภาพที่นี่

คุณสามารถลบนามสกุลไฟล์ทั้งหมดออกจากรายการนี้และเพียงแค่สร้างมาตรฐานบนตัวแบ่งบรรทัดของ Linux / Mac OS X เช่น\nแม้เมื่อใช้ Windows ผู้แก้ไขส่วนใหญ่สามารถเปลี่ยนโหมดการสิ้นสุดบรรทัดได้

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.