Как создать целевой файл

Обновлено: 21.11.2024

Обычно мы копируем файлы из одного места в другое существующее, используя такие команды, как cp , rsync , scp и т. д. Если целевое расположение не существует, мы сначала создаем его, а затем копируем файл в это новое место. До сих пор я обычно копировал файлы из одного места в другое из командной строки именно так. Знаете ли вы, что мы можем скопировать файл и автоматически создать каталог назначения, если он не существует? Нет? Без проблем! В этом руководстве мы увидим, как одновременно копировать файлы и создавать целевые каталоги с помощью одной команды в Linux.

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

Но это не одна команда. Здесь мы использовали две команды, то есть mkdir и cp. На самом деле это однострочная команда. Теперь позвольте мне показать, как выполнить ту же задачу, используя только одну команду.

Одновременное копирование файлов и создание целевых каталогов в Linux

Мы можем сделать это тремя разными способами. Сначала мы увидим, как это сделать с помощью команды install.

Способ 1 — с помощью команды установки

Команда install копирует файлы в любое место по вашему выбору в Linux. Он специально используется для этой цели такими системами сборки, как automake. Это часть GNU coreutils, поэтому вам не нужно его устанавливать.

Чтобы скопировать файл и одновременно создать каталог назначения с помощью команды установки, просто запустите:

Пример:

Следующая команда копирует файл с именем sk.txt в целевой каталог с именем ostechnix . Обратите внимание, что целевой каталог не существует. Мы собираемся скопировать файл и создать каталог назначения одновременно с командой установки, как показано ниже:

Проверьте, был ли файл скопирован в каталог ostechnix, просмотрев его содержимое с помощью команды ls:

Скопируйте файл и одновременно создайте целевой каталог с помощью команды установки

Видишь? Я не создавал целевой каталог раньше. Команда установки автоматически создала каталог и сохранила в нем файл.

Удобно, правда? Конечно! Это одна из полезных функций команды установки. Это можно использовать в сценариях оболочки.

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

Вы можете копировать по одному файлу за раз. Невозможно скопировать несколько файлов в несколько мест назначения с помощью команды установки.

Мы также можем одновременно копировать файлы и изменять владельца и разрешения с помощью команды установки, как описано в следующем руководстве.

Для получения более подробной информации о команде установки см. ее справочную страницу.

Способ 2 – использование команды cp

Как правило, мы используем команду cp для копирования файлов из одного места в другое. Команда cp имеет параметр --parents, который позволяет нам скопировать всю структуру каталогов исходного файла и сохранить ее в месте назначения.

Например, предположим, что файл sk.txt сохранен в каталоге ~/Downloads, и вы хотели скопировать его в каталог ~/Documents. Если вы скопируете файл с помощью команды cp из ~/Downloads в ~/Documents , файл будет сохранен в такой структуре каталогов -> ~/Documents/Downloads/sk.txt .

Давайте сделаем это в режиме реального времени и посмотрим, что получится.

Теперь запустите команду дерева, чтобы проверить содержимое каталога ~/Documents:

Скопируйте файл и одновременно создайте целевой каталог с помощью команды cp

Помните, что мы не создавали никаких каталогов в папке ~/Documents. Параметр --parents команды cp сохранил структуру каталогов исходного файла.

В отличие от команды установки, вам не нужно указывать имя файла в конце целевого каталога.

Это не имеет прямого отношения к нашей теме. Однако команда cp автоматически создала целевые каталоги, т. е. сохранила структуру каталогов исходного файла.

Способ 3 – использование команды rsync

Rsync — идеальное решение для копирования и резервного копирования данных между локальными и удаленными каталогами. Чтобы скопировать файлы и создать целевые каталоги одновременно с помощью команды rsync, выполните:

Где каталог с именем ostechnix может не существовать.Rsync создаст его автоматически и сохранит в нем исходный файл.

Скопируйте файл и одновременно создайте целевой каталог с помощью команды rsync

Из этих трех команд я предпочитаю команду install. Потому что я могу создавать вложенные каталоги (каталог внутри другого каталога) с помощью команды установки. Насколько мне известно, команды cp и rsync могут создавать только один каталог. Пожалуйста, поправьте меня, если я ошибаюсь.

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

Чтобы создать отдельный выходной файл для каждой транзакции, добавьте порт FileName в определение целевого объекта плоского файла. Когда вы подключаете порт FileName в сопоставлении, служба интеграции создает отдельный целевой файл при каждой фиксации. Служба интеграции присваивает выходному файлу имя на основе значения порта FileName из первой строки каждой транзакции. По умолчанию служба интеграции записывает выходные файлы в каталог $PMTargetFileDir.

Настройка цели

Вы добавляете столбец FileName в определение целевого объекта плоского файла в Target Designer.

Чтобы добавить столбец FileName:

  1. Откройте определение цели плоского файла в конструкторе целей.
  2. Перейдите на вкладку "Столбцы".
  3. Нажмите "Добавить столбец FileName".

Конструктор создает строковый порт с именем FileName. Вы можете изменить точность порта.

Настройка сопоставления

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

В сопоставлении соедините целевой порт FileName с портом преобразования, который будет содержать уникальное значение в начале каждой транзакции. Вы можете создать выражение в преобразовании для создания уникальных имен файлов и передачи их в порт FileName.

Запуск сеанса

При настройке порта FileName служба интеграции переопределяет атрибут сеанса Output Filename со значением в столбце FileName. Если значение столбца FileName равно NULL для строки, строка является ошибкой и служба интеграции не обрабатывает ее. Если столбец FileName имеет значение NULL после границы транзакции, служба интеграции присваивает выходному файлу имя выходного файла по умолчанию.

Столбец FileName должен содержать уникальное значение для каждой транзакции. Если значение столбца FileName не меняется между транзакциями, служба интеграции перезаписывает цель плоского файла.

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

Правила и рекомендации по созданию целевых файлов по транзакциям

Используйте следующие правила и рекомендации при создании столбцов FileName:

  • Вы можете использовать столбец FileName с неструктурированными целевыми файлами.
  • Вы можете добавить один столбец FileName в определение целевого объекта плоского файла.
  • Вы можете использовать столбец FileName с данными из источников в реальном времени.
  • Сеанс завершится сбоем, если вы используете столбец FileName с файлами слияния, списками файлов или целевыми объектами FTP.
  • Если вы передаете одно и то же имя файла целевым объектам в нескольких разделах, вы можете получить неожиданные результаты.
  • Когда преобразование удаляет границы входящих транзакций и не создает фиксации, служба интеграции записывает все строки в один и тот же выходной файл. Имя выходного файла — это начальное значение порта FileName.

Пример

Источник содержит заказы для нескольких городов. Вы хотите записать заказы в отдельные выходные файлы в зависимости от города.

На следующем рисунке показано сопоставление для обработки заказов:

Сопоставление имеет следующие объекты:

  • Преобразование сортировщика. Сортирует исходные данные по городам.
  • Преобразование выражений. Определяет, когда в строке появляется новый город, и передает целое число порту New City преобразования Transaction Control. По умолчанию принимает значение 0 и принимает значение 1, если строка содержит новый город.
  • Преобразование управления транзакциями.Оценивает значение New City из преобразования Expression.

Если Новый город равен 1, преобразование "Управление транзакциями" фиксирует все заказы в транзакции в целевом объекте.

Преобразование "Управление транзакциями" передает город и номер заказа в цель плоского файла. Он также передает город в столбец FileName в целевом объекте.

Службы Integration Services передают целевому объекту транзакцию для каждого города. В этом примере данные содержат следующие города и номера заказов:

Брисбен, 100,
Сан-Франциско, 101,
Сан-Франциско, 104,
Сан-Франциско, 105,
Сан-Франциско, 107,
Тибурон, 102,
Тибурон , 106
Тибурон, 102

Перейдите к Target Designer или Warehouse builder и отредактируйте определение файла. Вы должны нажать на кнопку, обозначенную красным кружком, чтобы добавить специальный порт.

Теперь мы увидим несколько примеров сопоставления информатики для динамического создания имени целевого файла и загрузки данных.

<р>1. Создавайте новый файл для каждого запуска сеанса.

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

ШАГ 1. Подключите квалификатор источника к преобразованию выражения. В преобразовании выражения создайте выходной порт (назовите его File_Name) и назначьте выражение как 'EMP_'||to_char(sessstarttime, 'YYYYMMDDHH24MISS')||'.dat'

STPE2: Теперь подключите преобразование выражения к целевому объекту и подключите порт преобразования выражения File_Name к порту FileName определения целевого файла.

ШАГ 3. Создайте рабочий процесс и запустите его.

Здесь я использовал sessstarttime, так как он остается постоянным на протяжении всего сеанса. Если вы использовали sysdate, новый файл будет создаваться всякий раз, когда в ходе сеанса возникает новая транзакция.

Имена созданных целевых файлов будут выглядеть как EMP_20120101125040.dat.

<р>2. Создавайте новый файл для каждого запуска сеанса. Имя файла должно содержать суффикс в виде цифр (EMP_n.dat)

В приведенном выше сценарии сопоставления имя целевого плоского файла содержит суффикс 'timestamp.dat'. Здесь мы должны создать суффикс как число. Таким образом, имена файлов должны выглядеть как EMP_1.dat, EMP_2.dat и так далее. Выполните следующие шаги:

STPE1: перейдите к параметрам сопоставления и переменным -> создайте новую переменную, $$COUNT_VAR и ее тип данных должен быть целым числом

STPE2: подключение исходного квалификатора к преобразованию выражения. В преобразовании выражения создайте следующие новые порты и назначьте выражения.


ШАГ 3. Теперь подключите преобразование выражения к цели и соедините порт o_file_name преобразования выражения с портом FileName цели.

<р>3. Создавайте новый файл один раз в день.

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

Это похоже на первую проблему. Просто измените выражение в преобразовании выражения на 'EMP_'||to_char(sessstarttime, 'ГГГГММДД')||'.dat'. Чтобы избежать перезаписи файла, используйте параметр «Добавить, если существует» в свойствах сеанса.

<р>4. Создайте плоский файл на основе значений порта.

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

ШАГ 1. Отсортируйте данные по id_отдела. Для сортировки данных можно использовать квалификатор источника или преобразование сортировщика.

ШАГ 2. Подключитесь к преобразованию выражения. В преобразовании выражений создайте указанные ниже порты и назначьте выражения.


ШАГ 4. Теперь соедините преобразование выражения с преобразованием управления транзакциями и укажите условие управления транзакциями как


ШАГ 5. Теперь подключитесь к определению целевого файла.

Если вам понравилась эта запись, поделитесь ею в Google, нажав кнопку +1.

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

Можно использовать файлы любого типа. Наиболее распространенными типами локальных файлов являются текст ( .txt ), CSV ( .csv ), XML ( .xml ) и JSON ( .json ).

ПРИМЕЧАНИЕ. Для использования локального целевого файла необходимо использовать частный агент. Облачные агенты не могут использовать локальные целевые файлы.

Необходимое условие

Прежде чем вы сможете использовать цель «Локальный файл», вы должны включить «Местоположение локального файла» в своем частном агенте Jitterbit. Дополнительные сведения см. в разделе Включение локального расположения файлов.

Создание локального целевого файла

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

Создание нового локального файлового целевого объекта в качестве отдельного целевого объекта

В рамках своего проекта в Jitterbit Design Studio вы создаете новую цель общего доступа к файлам одним из следующих способов:

Выберите «Файл» > «Создать» > «Новая цель»; или

На верхней панели инструментов нажмите синий значок мишени .

Во всплывающем окне выберите тип общего доступа к файлам:

Ваша новая цель появится на отдельной вкладке "Новая цель" в правой части окна.

ПРИМЕЧАНИЕ. Если вы создаете автономную цель с помощью любого из этих методов, обратите внимание, что она не связана с операцией. См. Использование существующего локального целевого файла в существующей операции ниже, чтобы использовать новый целевой объект.

Создание нового локального целевого файла в существующей операции

Цель обычно создается по умолчанию при создании новой операции. (Исключение составляет операция, состоящая только из сценария.) Для существующей операции вы можете указать тип ее цели следующим образом:

Двойной щелчок по значку цели; во всплывающем окне выберите «Создать новую цель»; или

На появившемся экране конфигурации в раскрывающемся списке «Тип» выберите «Локальный файл», как показано выше.

Использование существующего локального целевого файла в существующей операции

Чтобы использовать существующую цель "Локальный файл" в существующей операции с целью, вы можете установить ее любым из следующих способов:

Двойной щелчок по целевому значку в ходе операции и выбор нужного целевого локального файла в появившемся всплывающем окне из списка; или

В рамках операции щелкните правой кнопкой мыши значок цели, выберите «Выбрать существующую цель» и в появившемся всплывающем окне выберите нужный целевой локальный файл из списка; или

Настройка локального целевого файла

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

Базовая конфигурация

Появится экран конфигурации, подобный этому примеру:

  • Имя. Введите подходящее уникальное имя для цели.
  • Тип: используйте раскрывающийся список, чтобы выбрать LocalFile, если он еще не указан.
  • Параметры подключения. Укажите сведения о подключении к локальному файлу:
    • Обзор: кнопка «Обзор», если она включена, может использоваться для быстрого ввода пути к папке. Его можно использовать только в том случае, если агент Jitterbit установлен локально на том же компьютере, на котором работает Design Studio. Если этот параметр отключен, вам может потребоваться включить локальные файлы, как описано в разделе «Включение локального расположения файлов». Если вы выберете папку или файл с помощью «Обзора», поля «Папка» и, возможно, «Имя файла» будут заполнены автоматически.
    • Папка(и): введите локальный путь на компьютере, где установлен Jitterbit Agent, который указывает на папку, в которой должны находиться целевые файлы.
        • Путь не может содержать ни одного из следующих символов: ~ % $ ? " < >:
        • Используемые разделители пути ('/' или '\') должны соответствовать операционной системе компьютера, на котором установлен частный агент.
        • Можно указать несколько путей, используя значения, разделенные запятыми. Если указано несколько путей, один и тот же файл записывается в несколько мест.
          • Имя файла(ов): введите желаемое имя для целевого файла(ов). В этом поле можно использовать переменные. При указании сжатого файла (ZIP) см. раздел «Сжатие» дополнительных параметров подключения в разделе «Параметры» ниже. Файл будет автоматически записан в архив на корневом уровне. (Обязательно.)

          Нажмите кнопку "Сохранить" на главной панели инструментов или на панели инструментов цели, чтобы сохранить конфигурацию.

          Параметры

          Джефферд имеет сертификат MCT (сертифицированный инструктор Microsoft) и эксперт по Azure/O365.

          В этом уроке вы узнаете, как добавить целевую папку в созданное вами пространство имен при реализации DFS (распределенной файловой системы).

          Шаг 1. Создайте основное местоположение целевой папки.

          1. В лаборатории, которую вы используете, перейдите в Проводник. (Просто щелкните значок проводника на панели задач)
          2. В проводнике щелкните правой кнопкой мыши пустое место и выберите "Новая папка". В этом примере будет создана папка с именем «Инструменты DevOps» на диске C:\
          3. .

          Шаг 2. Настройте разрешения для папки.

          Это необходимо для того, чтобы все пользователи или предполагаемая группа пользователей имели право доступа к указанной папке. В этом примере целевая папка, которую мы собираемся использовать, называется «Инструменты DevOps».

          <р>2. В окне «Свойства инструментов DevOps» перейдите на вкладку «Общий доступ» и нажмите «Расширенный общий доступ…».

          <р>3. В окне «Расширенный общий доступ» установите флажок «Поделиться этой папкой» и нажмите «Разрешения».

          <р>4. В разрешениях для инструментов DevOps по умолчанию выбрано значение Все. Вы можете предоставить разрешения выбранной группе людей, нажав кнопку «Добавить», но в этом примере мы просто будем использовать доступные группы по умолчанию. Установите флажок «Полный доступ» в разделе «Разрешить» и нажмите «ОК».

          <р>5. Нажмите «ОК» в окне «Свойства инструментов DevOps» и нажмите «Закрыть» в окне «Свойства инструментов DevOps».

          Шаг 3. Добавьте папку Target Files в созданное вами пространство имен.

          1. Откройте Диспетчер серверов, нажав кнопку Windows и выбрав Диспетчер серверов или выполнив поиск в списке программ.
          2. Перейдите в Инструменты и выберите Управление DFS.
          <р>3. В окне управления DFS щелкните правой кнопкой мыши созданное пространство имен и выберите "Новая папка".

          <р>4. В диалоговом окне «Новая папка» в разделе «Имя» введите имя, которое вы хотите для целевой папки (в этом примере мы назовем ее «Инструменты»), а затем нажмите «Добавить».

          <р>5. В окне «Добавить целевую папку» нажмите «Обзор…» и выберите папку, которую вы создали на первом этапе, в данном примере это «Инструменты DevOps», и нажмите «ОК».

          <р>6. В окне «Добавить целевую папку» убедитесь, что указано правильное поле «Путь к целевой папке». Он должен отображать имя вашего сервера и целевое имя вашей папки. Нажмите "ОК".

          <р>7. Нажмите OK также в окне "Новая папка".

          Шаг 4. Проверьте доступность целевой папки и создайте образец файла.

          1. В используемой лаборатории перейдите в Проводник. (Просто щелкните значок проводника на панели задач).

          <р>3. Откройте созданную целевую папку, дважды щелкнув ее. Щелкните правой кнопкой мыши в любом месте пустого места, выберите «Создать», а затем нажмите «Текстовый документ». Вы можете назвать его как угодно, но для этого урока мы назовем его «Образец текстового файла — целевая папка»

          <р>4. Убедитесь, что созданный вами текстовый файл также существует в локальной папке, которую вы создали на первом шаге. Перейдите к расположению локальной папки вашей целевой папки. В этом примере он находится на диске C:\, а имя локальной папки — DevOps Tools.

          Получите электронную книгу "Intro to IT" БЕСПЛАТНО!

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

          Читайте также: