Перемещение файлов в локальной сети - улучшит ли сжатие скорость?

1775
Adam Matan

Я перемещаю около 20 Гб в моей локальной сети (100 Мбит / с). Файлы взяты из типичной настольной системы Linux.

Будет ли сжатие их с помощью Tar \ Gzip, а затем отправка их улучшить производительность?

РЕДАКТИРОВАТЬ: я перемещаю рабочее пространство разработчика, то есть много исходного и PDF-файлов, а не много мультимедиа

7
Полезным обновлением может быть обновление вашей локальной сети до гигабитного Ethernet. Я обновил свой коммутатор и некоторые сетевые карты несколько лет назад, и это определенно стоило того. Теперь большинство материнских плат даже имеют встроенные порты 10/100/1000, поэтому вам может потребоваться только обновить коммутатор. Chris W. Rea 14 лет назад 2

8 ответов на вопрос

5
nik

Это во многом зависит от типа файлов, которые вы перемещаете.

  • Если ваши файлы похожи на PDF, JPEG-фильмы, установочные файлы и т. Д.,
    Они, вероятно, уже сжаты и не дадут вам большого преимущества.
  • Если его сжатие исходных файлов будет весьма полезным.
  • Если в нем много мелких файлов, то хотя бы tarархив будет полезен.

Наконец, если ваша исходная машина имеет много вычислительной мощности и памяти,
сжатие будет в полезное время, иначе tarбудет достаточно только (на основе вышеупомянутых пунктов).

Поскольку ваша сеть - всего 100 Мбит / с, вам следует склоняться к сжатию, если это поможет.
Но если вы передаете файлы, которые не могут быть сильно сжаты,
вы должны начать учитывать время передачи

Кроме того, вы можете рассмотреть другие носители для передачи (например, USB / DVD).

5
pilif

Помимо типа файла, это особенно зависит от количества файлов. Хотя передача объемных данных теоретически возможна на скорости сети, существует много накладных расходов, связанных с операциями файловой системы, такими как перечисление файлов и свойств, их создание и удаление.

Если у вас большое количество небольших файлов, накладные расходы могут даже превысить объем передаваемых данных.

В таких случаях архивирование данных перед передачей может быть огромным преимуществом. Если это плохо сжимаемые данные (зашифрованные и / или уже сжатые данные), я рекомендую не сжимать архив, чтобы сэкономить много времени - просто используйте tar.

Если файлы являются сжимаемыми (несжатые растровые изображения, текст), также может иметь смысл сжатие.

Согласовано. Размер сохраняемых данных от сжатия будет ограничен. Почти всегда быстрее xfer файл 1 20 ГБ, чем 100 000 файлов, которые при сложении вместе равны 20 ГБ. Tony 14 лет назад 0
2
peterb

Ник прав, это зависит от данных. Вообще говоря:

  • Фотографии JPEG, фильмы и музыка вряд ли будут дополнительно сжаты tar или zip, поскольку они уже эффективно сжаты.
  • Сжатие текстовых файлов и двоичных файлов программы значительно экономит место (и, следовательно, время передачи).
2
Szetak

Технически да, хотя вокруг локальной сети выгоды были бы небольшими.

В основном при сетевых передачах вы проходите несколько этапов запроса о том, готов ли пункт назначения к получению вашей информации, затем вы отправляете некоторые данные и проверяете, все ли они получили нормально. Каждый отдельный файл генерирует дополнительный шаг «Входящий новый файл» и «Завершающий этот файл». Таким образом, если вы объедините их все вместе, вы получите только одно «новое поступление файла» и одно «завершение этого файла» вместо сотен или тысяч тезисов для отправки несжатых файлов.

По локальной сети вам может понадобиться больше времени, чтобы сжать файлы, а затем отправлять их, а не просто отправлять. смените среду отправки на глобальную сеть, и способ архивации - это то, что нужно.

2
Peter

Вероятно, самая быстрая техника - это обработка данных, их передача по каналу, а затем распаковка на другом конце.

Что-то вроде этого

$ tar -czf - root_dir | ssh -c blowfish remote_machine (cd parent_dir ; tar -xzf -) 

Флаг -z указывает tar на сжатие, что должно быть очень похоже на отдельный шаг gzip, который вы включаете отдельно, если хотите.

Если вам нужно скопировать или синхронизировать данные в следующий раз, вы можете использовать rsync (-z дает сжатие). В частности, если вышеуказанная команда прервана, rsync подтвердит ваши данные и отправит все, что вы пропустили.

Будет намного чище, если ssh не запрашивает у вас пароли, но я думаю, что он будет работать даже с паролями.

1
Nicolas S.

Сжатие может потребовать больше времени для фактического сжатия / отправки / распаковки, чем для перемещения исходных файлов ... Однако, часто, несколько больших файлов отправляются лучше, чем большое количество очень маленьких файлов, поэтому сжатие их вместе в один файл, а затем передача может быть хорошим вариантом.

1
user5954

В дополнение к предыдущим ответам вы также должны учитывать нагрузку, которую вы будете оказывать на сеть, и то, как это повлияет на других пользователей. Для такого количества данных, особенно если одни и те же данные собираются в нескольких местах назначения, я бы серьезно подумал об использовании внешнего диска в качестве среды передачи.

+1 для здравого смысла: внешние накопители отлично подходят для локального копирования. Chris W. Rea 14 лет назад 0
1
user2667656

Да. Я испытал это и использую этот метод для резервного копирования большого объема данных. Если ваша единственная цель - скопировать файл для резервного копирования файлов на внешний жесткий диск, то, безусловно, сжатие всех файлов / папок в один или несколько файлов ZIP / rar и копирование их на внешний диск сэкономит огромное количество времени.

Запись одного большого файла на внешний диск намного эффективнее, чем запись миллионов крошечных отдельных файлов.