Преимущества для загрузки файлов к/tmp перед отъездом к постоянному хранению?

Самый быстрый уклончивый способ начать при запуске Windows, состоит в том, чтобы запустить Linux как виртуальную машину.

  1. Загрузите и установите VirtualBox.
  2. Загрузите предварительно созданный образ диска, такой как отсюда или здесь.
  3. В VirtualBox создайте виртуальную машину, указав образ диска, который Вы загрузили ранее.
  4. Запустите виртуальную машину!

Начальный пароль перечислен вместе со ссылкой на загрузку для образа диска. Обязательно измените его как можно скорее.

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

Аромат Linux, который Вы выбираете, является делом вкуса. Ubuntu является разумным выбором для новичков, так как это все еще довольно популярно, и можно задать вопросы об этом на, Спрашивает Ubuntu.

2
18.06.2014, 21:25
3 ответа
  1. Для производительности в случае, если указанный каталог хранения является сетевым хранилищем?
    • Да, может быть, хотя обычно это не так. Производительность фактической загрузки редко является основной заботой кода.
  2. Обычно ли Linux сканирует [свой] каталог /tmp для удаления старых файлов, сохраняя разработчика/администратора за то, что он должен учитывать это в другом месте?
    • Да, обычно. Это также касается случая, когда процесс загрузки-менеджера рушится и оставляет после себя частичный файл, который в противном случае не был бы очищен.
  3. Это так и есть?
    • Да. :-)
  4. Если дать возможность просто записать файл в каталог, то в конечном итоге он будет сохранен в (например, с помощью модуля node.js fs), должен ли я, или это "нет-нет"?
    • Есть веские причины для использования каталога временного хранения, а также для его размещения в той же файловой системе, что и целевой каталог. Многие приложения помещают этот каталог в то же самое файловое дерево, что и конечный целевой каталог, так что конечная операция "перемещения" будет практически мгновенной (и потенциально атомной). Таким образом, вы часто увидите такие вещи, как /var/spool/myapp/tmp и /var/spool/myapp/data. Но потом приложение часто добавляет задачу cron для очистки старых файлов в .../tmp.
3
27.01.2020, 21:54

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

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

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

BTW: Помните, что имя файла, предоставленное клиентом, является недоверенными данными. Вредоносный пользователь может легко дать вам имя файла .../.../.../something, и если вы не будете осторожны, вы можете закончить запись на что-то, на что не намереваетесь.

.
1
27.01.2020, 21:54

При записи 2 > & 1 вы говорите «стандартная ошибка переходит к стандартному выводу».

Давайте сломаем это.

Сначала необходимо запомнить стандартную ошибку 2 , а стандартный вывод - 1 .

Так что у вас есть 2 что-то 1 .

«goes to» записывается > .

Итак, у вас есть 2 > что-то 1 .

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

Поэтому 2 > & 1 .

Вы также можете думать об этом так, как вы делали задание, где > подобен равному и & подобен $ , сравните:

f=$1
2>&1

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

-121--34079-

Есть много способов сделать это, вот решение с gawk 4 .x :

$ awk '
    FNR < 2 { next }
    FNR == NR {
        for (i = 2; i <= NF; i++) {
            a[$1][i] = $i;
        }
        next;
    }
    ($1 in a) {
      for (i = 2; i <= NF; i++) {
          if (a[$1][i] == $i) {
              printf("%s->Col%d: Equal\n", $1, i-1);
          } else {
              printf("%s->Col%d: Not Equal\n", $1, i-1);
          }
       }
  }
' file1.txt file2.txt
row2->Col1: Not Equal
row2->Col2: Not Equal
row2->Col3: Not Equal
row1->Col1: Not Equal
row1->Col2: Not Equal
row1->Col3: Not Equal

Объяснение

  • FNR < 2 {next} : пропустить первые две строки
  • FNR = = NR : верно только при обработке первого файла. Каждое значение столбца сохраняется в ассоциативном массиве a с формой a [ROW] [COLUMN] .
  • ($1 в a) : проверьте, существует ли строка в file2 в file1. Если значение равно true, мы пролистываем все его значения столбца, сравниваем со значением в file1.

В более старой версии gawk вы можете попробовать:

$ awk '
    FNR < 2 { next }
    FNR == NR {
        for (i = 2; i <= NF; i++) {
            a[i,$1] = $i;
            b[$1];
        }
        next;
    }
    ($1 in b) {
      for (i = 2; i <= NF; i++) {
          if (a[i,$1] == $i) {
              printf("%s->Col%d: Equal\n", $1, i-1);
          } else {
              printf("%s->Col%d: Not Equal\n", $1, i-1);
          }
       }
  }
' file1.txt file2.txt
-121--120368-

Это действительно зависит от того, что еще на системе и как вещи используются.

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

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

Преимущество при записи на /tmp состоит в том, что гарантировано наличие локальной файловой системы на компьютере, ее присутствие и патрулирование (сценарии, которые будут автоматически обходить и удалять старые файлы). Системы нуждались в a /tmp для загрузки и быстрый доступ к этому был необходим для разумной производительности системы. Таким образом, вы хотите быстро записать файл где-нибудь и затем сдвинуть его с места? Поместите его в /tmp .

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

Однако другое соображение заключается в том, что «быстрый» бит. Диски стали быстрее с днями старых. Немного быстрее - хороший твердотельный накопитель может выбросить все, что угодно... но действительно ли вам нужен твердотельный накопитель для записи загрузочных файлов? Не только погружения стали быстрее, но и сеть стала быстрее. Запись файлов загрузки в сетевую область места хранения может помочь в одной точке, где вы можете иметь несколько систем загрузки их файлов в центральное место, где другие процессы могут затем взять на себя ответственность за сканирование и перемещение их в надлежащее место.

Так что... подытожить:

  • Имел преимущества в старые дни
    • быстрее сети, всегда существует
  • Может вызвать проблемы
  • Дней давности больше нет
    • Диски и сети быстрее
    • Люди глупые и больше злоумышленников

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

2
27.01.2020, 21:54

Теги

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