Той самий файл, різний розмір файлу


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 повідомляє про місце для зберігання, щоб відповідати методу, який виробляє жорсткий диск. Замість 1 МБ = 1024 КБ вони використовують 1 МБ = 1000 КБ. Інший розмір може повідомити ваш хост Linux за допомогою іншої методології, тому файли, схоже, мають різний розмір. Не впевнений, чи стосується це у вашому випадку, але все ж цікаво.
WebDevKev

Це не те. Просто подивіться на файли, які він надав, як частину запитання, або на різний скріншот моєї відповіді. Файли не є достатньо великими, щоб змінити їх, до речі, в 1800-1900 байт кожен.
Даніель Бек

Відповіді:


25

deadcow_seo.phpвикористовує закінчення рядків Unix ( LF), а deadcow_seo.php_2.phpвикористовує закінчення рядків DOS / Windows ( CR LF).

FTP має декілька "режимів передачі", з яких два загальні для використання 1 - двійковий (також його називають "зображення") та текстовий (або "ASCII"). У режимі "двійковий" файл передається точно так, як він є, байт-байт, тоді як "ASCII" спричиняє інтерпретацію файлу як такий, що складається з рядків тексту - закінчення рядків CR LFпри передачі перетворюються на мережевий стандарт , і перетворюється на початкові закінчення машини при отриманні.

Передача файлів у вигляді тексту може спочатку мати певний сенс, але це спричиняє проблеми лише пізніше - насправді деякі FTP-сервери видалили його повністю або роблять його еквівалентом двійковим на стороні сервера. Крім того, більшість текстових редакторів (крім Блокнота) можуть читати та зберігати файли у форматах 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. Більшість редакторів здатні змінити режим закінчення рядків.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.