Cùng một tệp, kích thước tệp khác nhau


12

Tôi đã tạo một bản sao lưu từ máy chủ FTP của mình, với lftp và Transmit (ứng dụng Mac). Mọi thứ đều ổn, nhưng có một kích thước tệp khác nhau cho 1-2 tệp, nhưng chúng giống hệt nhau.

Tập tin đầu tiên:

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

Tập tin thứ hai:

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

Sự khác biệt giữa hai tập tin này là gì?


Bạn có chắc vấn đề không chỉ là kích thước được báo cáo ? Apple đã thay đổi cách Mac OS X báo cáo không gian lưu trữ vài năm trước để phù hợp với phương pháp mà các nhà sản xuất ổ cứng sử dụng. Thay vì 1MB = 1024KB, họ sử dụng 1MB = 1000KB. Kích thước khác có thể được báo cáo bởi máy chủ Linux của bạn bằng phương pháp khác để các tệp dường như có kích thước khác nhau. Không chắc chắn nếu điều này áp dụng trong trường hợp của bạn, nhưng nó thú vị không kém.
WebDevKev

Không phải thế đâu. Chỉ cần nhìn vào các tập tin anh ấy cung cấp như một phần của câu hỏi, hoặc ảnh chụp màn hình khác trong câu trả lời của tôi. Nhân tiện, các tệp không đủ lớn để tạo ra sự khác biệt, ở mức 1800-1900 byte mỗi tệp.
Daniel Beck

Câu trả lời:


25

deadcow_seo.phpsử dụng kết thúc dòng Unix ( LF), trong khi deadcow_seo.php_2.phpsử dụng kết thúc dòng DOS / Windows ( CR LF).

FTP có một số "chế độ truyền", trong đó hai chế độ sử dụng chung 1 - nhị phân (còn gọi là "hình ảnh") và văn bản (hoặc "ASCII"). Trong chế độ "nhị phân", tệp được truyền chính xác như từng byte, trong khi "ASCII" làm cho tệp được hiểu là bao gồm các dòng văn bản - các kết thúc dòng được chuyển đổi thành tiêu chuẩn mạng CR LFkhi gửi và chuyển đổi thành kết thúc dòng gốc của máy khi nhận.

Việc chuyển các tệp dưới dạng văn bản lúc đầu có thể có ý nghĩa, nhưng nó chỉ gây rắc rối về sau - trên thực tế, một số máy chủ FTP đã xóa hoàn toàn hoặc làm cho nó tương đương với nhị phân ở phía máy chủ. Ngoài ra, hầu hết các trình soạn thảo văn bản (không bao gồm Notepad) có thể đọc và lưu tệp ở cả định dạng Windows và Unix.

Chỉ cần định cấu hình ứng dụng khách FTP của bạn để luôn sử dụng chế độ nhị phân - lệnh thường là binhoặc mode i, trong khi các máy khách đồ họa có thể có hộp kiểm hoặc danh sách loại tệp trong cài đặt của chúng.


1 Một số chế độ cũ là "Tenex" ( dài lỗi thời, cho Tenex trang dựa trên file) và "nén" (mà dường như được định nghĩa là một thuật toán RLE đơn giản). Các máy chủ FTP gần đây hỗ trợ "chế độ z" để nén zlib.


12

Bạn đã sử dụng chế độ truyền văn bản (hoặc ASCII), thay thế ngắt dòng trong quá trình chuyển. Điều này thường hữu ích khi bạn phát triển các tập lệnh và chương trình trên Windows và chuyển các tệp sang Linux hoặc Mac OS X. Đơn giản là chúng sẽ không hoạt động nếu không hệ thống nhìn thấy dữ liệu rác ở cuối mỗi dòng.

Nếu tệp có một ngắt dòng Windows duy nhất, \r\n(hoặc CRLF) và bạn đã tải xuống Linux hoặc Mac OS X, thì tệp đó đã được thay thế bằng \n(hoặc LF), ít hơn 1 byte. Sử dụng FileMerge để so sánh các tệp xác nhận điều này trong thanh trạng thái:

nhập mô tả hình ảnh ở đây

Cũng xem câu trả lời này về giải thích dữ liệu .


Bạn có thể định cấu hình loại tệp nào được hiểu là văn bản trong tùy chọn Truyền:

nhập mô tả hình ảnh ở đây

Bạn có thể xóa tất cả các tiện ích mở rộng tệp khỏi danh sách này và chỉ cần chuẩn hóa khi ngắt dòng Linux / Mac OS X, tức là \nngay cả khi sử dụng Windows. Hầu hết các biên tập viên có khả năng thay đổi chế độ kết thúc dòng.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.