Ускорение Рекурсивного FTP

Четыре вещи вмешиваются для определения разрешения файла.

  1. Когда приложение создает файл, оно указывает ряд первоначальных полномочий. Эти первоначальные полномочия передаются как аргумент системного вызова, который создает файл (open для регулярных файлов, mkdir для каталогов, и т.д.).
  2. Полномочия маскируются с umask, который является атрибутом рабочего процесса. umask указывает на биты полномочий, которые удалены из полномочий, указанных приложением. Например, umask 022 удаляет разрешение другой-записи и запись группы. umask 007 оставляет разрешение записи группы, но делает файл абсолютно запрещенным другим.
  3. Полномочия могут быть изменены далее списками управления доступом. Я не буду обсуждать их далее в этом сообщении.
  4. Приложение может звонить chmod явно для изменения полномочий на то, что это хочет. Пользователь, который владеет файлом, может установить его полномочия свободно.

Некоторый популярный выбор наборов полномочий для шага 1:

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

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

В случае gcc выходной файл сначала создается с полномочиями 666 (замаскированный umask), затем позже chmod'ed для создания этого исполняемым файлом. Gcc мог создать исполняемый файл непосредственно, но не делает: это только делает исполняемый файл файла, когда это закончило писать это, так, чтобы Вы не рисковали начинать выполнять программу, в то время как это неполно.

8
04.01.2015, 01:11
3 ответа

Вот как я оказался, что занимался этим, используя советы от других. NOAA в этом случае имеет ftp и http-ресурс для этого, так что я написал сценарий, который делает следующее:

  1. NCFTPLS, чтобы получить список файлов
  2. SED для завершения файлов в полный список http Файлы
  3. ARIA2C для быстрого скачивания всех

пример сценария:

# generate file list
ncftpls ftp://path/to/ftp/resources > /tmp/remote_files.txt

# append the full path, use http
sed -i -e 's/^/http:\/\/www1\.website\.gov\/pub\/data\//' /tmp/remote_files.txt

# download using aria2c
aria2c -i /tmp/remote_files.txt -d /filestore/2015

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

6
27.01.2020, 20:12

Да, вы правы. К сожалению, в то время как спецификации FTP предлагают альтернативный режим передачи, который способен использовать несколько файлов на одном соединении на одном передаче данных, в последний раз я проводил опрос имеющегося программного обеспечения (что по общему признанию вернулось в 1998 году), никто не поддержал его. Я не думаю, что ситуация изменилась, потому что интерес к FTP был довольно низким. Большинство организаций с такими настройками данных обеспечивают доступ к ним через http, или в крупных архивах, чтобы избежать этой проблемы. Вы должны проверить, не делает этого NOAA.

1
27.01.2020, 20:12

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

if [ $(uname -m) == 'armv6l' ]; then
    tool-rpi
else
    tool-osx
fi

Тем не менее, если тестирование исполняемого файла - это то, что вы действительно , хотите сделать, GNU файл может сообщить вам архитектуру исполняемого файла:

user@host:~$ file $(whereis cat)
ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.26, BuildID[sha1]=0x4e89fd8f129f0a508afa325b0f0f703fde610971, stripped
-121-----97785-
  1. Ваша оценка правильная. С точки зрения чистых номеров, накладные расходы замедляются на использование
  2. ARIA2C . ARIA2C открывает множество параллельных подключений к FTP-серверу для загрузки набора файлов быстрее. Просто убедитесь, что ваш сервер поддерживает несколько одновременного соединения с одного и того же хоста

, если у вас есть доступ на ваш хост (в этом случае, я бы предположил, что вы входите в систему анонимно и не имеете доступа к записи) Zip / Tar Файлы перед загрузкой

2
27.01.2020, 20:12

Теги

Похожие вопросы