Команда применяемая при склейке нескольких файлов в большой линукс

Обновлено: 04.07.2024

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

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

Как работает команда dd?

Сначала нужно понять как работает команда dd и что она делает. Фактически, это аналог утилиты копирования файлов cp только для блочных данных. Утилита просто переносит по одному блоку данных указанного размера с одного места в другое. Поскольку в Linux все, в том числе, устройства, считается файлами, вы можете переносить устройства в файлы и наоборот.

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

Команда dd

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

$ dd if= источник_копирования of= место_назначения параметры

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

Теперь давайте рассмотрим дополнительные параметры:

  • bs - указывает сколько байт читать и записывать за один раз;
  • cbs - сколько байт нужно записывать за один раз;
  • count - скопировать указанное количество блоков, размер одного блока указывается в параметре bs;
  • conv - применить фильтры к потоку данных;
  • ibs - читать указанное количество байт за раз;
  • obs - записывать указанное количество байт за раз;
  • seek - пропустить указанное количество байт в начале устройства для чтения;
  • skip - пропустить указанное количество байт в начале устройства вывода;
  • status - указывает насколько подробным нужно сделать вывод;
  • iflag, oflag - позволяет задать дополнительные флаги работы для устройства ввода и вывода, основные из них: nocache, nofollow.

Это были все основные опции, которые вам могут понадобиться. Теперь перейдем ближе к практике и рассмотрим несколько примеров как пользоваться утилитой dd linux.

Как пользоваться dd?

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

sudo dd if=/dev/sr0 of=

/CD.iso bs=2048 conv=noerror

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

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

Очень важная и полезная опция - это bs. Она позволяет очень сильно влиять на скорость работы утилиты. Этот параметр позволяет установить размер одного блока при передаче данных. Здесь нужно задать цифровое значение с одним из таких модификаторов формата:

Команда dd linux использует именно такую систему, она сложная, но от этого никуда не деться. Ее придется понять и запомнить. Например, 2b - это 1 килобайт, и 1k, это тоже 1 килобайт, 1М - 1 мегабайт. По умолчанию утилита использует размер блока - 512 байт. Например, чтобы ускорить копирование диска можно брать блоки размером по 5 мегабайт. Для этого применяется такая команда:


Следующий параметр - это count. С помощью него можно указать сколько блоков необходимо скопировать. Например, мы можем создать файл размером 512 мегабайт, заполнив его нулями из /dev/zero или случайными цифрами из /dev/random:

sudo dd if=/dev/zero of=file.img bs=1M count=512


Обратите внимание, что этот параметр указывает не размер в мегабайтах, а всего лишь количество блоков. Поэтому, если вы укажите размер блока 1b, то для создания файла размером 1Кб нужно взять только два блока. С помощью этого параметра также можно сделать резервную копию таблицы разделов MBR. Для этого скопируем в файл первые 512 байт жесткого диска:

sudo dd if=/dev/sda of=mbr.img bs=1b count=1

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

dd if =/dev/sda2 | bzip2 disk.img.bz2

Также можно использовать утилиту dd linux для копирования файлов, хотя это и не является ее прямым предназначением:

dd if=/home/sergiy/test.txt of=/home/sergiy/test1.txt

Как вы знаете, команда dd linux пишет данные на диск непосредственно в двоичном виде, это значит, что записываются нули и единицы. Они переопределяют то, что было раньше размещено на устройстве для записи. Поэтому чтобы стереть диск вы можете просто забить его нулями из /dev/zero.

sudo dd if=/dev/zero of=/dev/sdb

Такое использование dd приводит к тому что весь диск будет полностью стерт.

Выводы

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

Некоторые особенности использования системной утилиты dd и её модифицированных версий. В UNIX системах есть одна очень древняя команда, которая называется dd. Она предназначена для того, чтобы что-то куда-то копировать побайтово. dd (dataset definition) — программа UNIX, предназначенная как для копирования, так и для конвертации файлов. Название унаследовано от оператора DD (Dataset Definition) из языка JCL.

Несколько слов о резервном копировании файлов

Бэкапы (от английского «Backup») – это метод создания запасной копии важной информации на компьютере либо сервере. Его можно проводить ручным способом или автоматическим в соответствии с регулярным расписанием.

Утилитой DD можно воспользоваться для ОС семейства Линукс, ее команды помогают с копированием файлов через определенные операнды. Это одна из наиболее давних утилит, ее бэкапы можно открыть разнообразным софтом. Версия под операционную систему Виндовс отличается меньшим функционалом, чем версия для Линукс. К примеру, в ней отсутствует поддержка конвертации файлоы и использования блочных устройств.

Что такое утилита dd?

Резервное копирование (backup) — создание запасных копий серверов, может быть настроено по регулярному расписанию, а может выполняться однократно в удобный для пользователя момент.

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

Примеры использования dd

Если вы работали с командой dd в Linux, то у вас не возникнет сложностей при её использовании в операционной системе Windows.

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

Чтобы сделать запасную копию вашего жесткого диска используйте следующую команду:

./dd.exe if=<исходный_диск> of=<полное_имя_копии> bs=1440k

Пример создания образа диска f на диск e:

./dd.exe if=\.f: of=e:tempdisk1.img bs=8M

rawwrite dd for windows version 0.5. Written by John Newbigin <jn@it.swin.edu.au>This program is covered by the GPL. See copying.txt for details 7279+1 records in 7279+1 records out

Примечание: на целевом диске должно быть достаточно места, т.е. не менее того объема, который занимает исходный диск.

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

./dd.exe if=<полное_имя_копии> of=<целевой_диск> bs=8M

./dd.exe if=e:tempdisk1.img of=\.f: bs=8M

rawwrite dd for windows version 0.5. Written by John Newbigin <jn@it.swin.edu.au>This program is covered by the GPL. See copying.txt for details 1279+1 records in 1279+1 records out

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

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

Команда dd

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

$ dd if=источник_копирования of=место_назначенияпараметры

Теперь давайте рассмотрим дополнительные параметры:

Это были все основные опции, которые вам могут понадобиться. Теперь перейдем ближе к практике и рассмотрим несколько примеров как пользоваться утилитой dd linux.

Почему dd?

Мы выбрали dd как первого соискателя в нашей серии, потому что это очень полезная утилита, имеющая, как вы увидите ниже, множество опций. Это делает ее практически швейцарским армейским ножом в мире Linux.

Как работает команда dd?

Сначала нужно понять как работает команда dd и что она делает. Фактически, это аналог утилиты копирования файлов cp только для блочных данных. Утилита просто переносит по одному блоку данных указанного размера с одного места в другое.

Поскольку в Linux все, в том числе, устройства, считается файлами, вы можете переносить устройства в файлы и наоборот.

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

Как загрузить утилиту dd

Скачиваем утилиту DD со специального сайта, ведь это стороннее программное обеспечение, широко доступное для пользователей.

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

Синтаксис команды dd

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

dd if=[что копировать] of=[куда копировать] параметры

Выше описаны наиболее популярные функции, которые могут потребоваться вам при использовании программы dd Linux.

Примеры команды linux dd

Утилита чаще всего применяется для формирования образов DVD- и CD-дисков. Для их сохранения в виде образа iso существуют определенные команды. Чтобы программа не реагировала на ошибки, можно запустить фильтр noerror. Далее создается образ, который в последующем сохраняется на диск.

Чтобы сделать образ, узнаем разметку диска, с помощью dh.

dd if=/dev/sda6 of=/root/home.iso bs=4096 conv=noerror

Таким образом делаются образы жестких дисков, флешек, оптических приводов.

Как видно из примера выше, в каталоге /root появился файл home.iso. В дальнейшем его можно развернуть. Он позволит восстановить испорченную в ходе использования систему, в нашем случае файлы каталога home.

Весьма полезный параметр – «bs». Он в значительной мере влияет на скорость работы самой программы. Этот аргумент дает возможность установить размер блока во время передачи информации. Предварительно задается цифровое значение, где указывается один из модификаторов.

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

Создадим образ диска. Пусть /dev/cdrom1 это наш оптический привод, cdrom.

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

Как пользоваться dd?

Обычные пользователи используют команду dd чаще всего для создания образов дисков DVD или CD.

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

В вашей домашней папке будет создан файл с именем disk1.img, который в будущем можно будет развернуть и восстановить испорченную систему.

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

Команда dd linux

/disk.img bs=5M

Следующий параметр — это count. С помощью него можно указать сколько блоков необходимо скопировать.

Например, мы можем создать файл размером 512 мегабайт, заполнив его нулями из /dev/zero или случайными цифрами из /dev/random:

Команда dd linux

$ sudo dd if=/dev/sda of=mbr.img bs=1b count=1

Использование параметров, управляющих размерами и количеством блоков

Важными параметрами команды dd являются bs (block size) и count. Первый упрвляет размером блока, второй — количеством блоков, подвергающихся обработке. Например, можно выполнить следующую команду

Другое, более полезное применение параметров изменения размера и количества блоков — создание образа MBR (Master Boot Record):

dd if=/dev/sda of=/home/user/archive/MBR.image bs=512 count=1

С помощью dd можно также при необходимости тестировать и анализировать производительность жёсткого диска при выполнении операций последовательного чтения/записи с блоками заданного размера, например, с блокми по 1024 байта

dd if=/dev/zero bs=1024 count=1000000 of=/home/user/tmp/1Gb.file dd if=/home/user/tmp/1Gb.file bs=64k | dd of=/dev/null

Параметры пропуска блоков

Например, информацию в BIOS, располагающууюся по адресам с C:0000 по F:FFFF можно просмотреть следующим образом:

dd if=/dev/mem bs=1k skip=768 count=256 2>/dev/null | strings -n 8

А вот пример преобразования файла образа диска, созданного программой Nero (Nero Image File) в обычный ISO-формат (команда просто удаляет 300-килобайтный заголовок при записи нового образа):

dd if=nero_image.nrg bs=1k skip=300 of=image.iso

dd if=small.file seek=100 of=pseudo_big.file

Параметр conv в данной статье не рассматривается в подробностях, а упомянут он здесь лишь для того, чтобы отметить один из его аргументов, noerror — продолжать после ошибок чтения. Дело в том, что при указании conv=noerror при наличии слишком большого количества ошибок во входных файлах (на устройствах) возникают затруднения и даже потенциальные опасности для оборудования при выполнении команды dd.

Утилита dd_rescue

Программа dd_rescue выполняет те же задачи, что и dd, но делает это более эффективно и с меньшим риском. В общем виде её выполнение выглядит так:

dd_rescue /dev/sda1 local_sda1.img

Ещё один пример, с передачей файла образа раздела диска по сети:

Описание всех ключей можно получить, выполнив команду dd_rescue -h.

Чтение и запись файлов и устройств

В предыдущем примере мы вводили текст в stdin (стандартный поток ввода). Однако, всегда можно использовать входные и выходные файлы. Чтобы указать имена входного и выходного файла, используются опции if и of, соответственно. Например, если вам нужно перевести в верхний регистр текст из файла file1 и записать его в файл file2, можно выполнить следующую команду:

dd if=file1 of=file2 conv=ucase

Командой dd также можно создавать файлы различных объемов, например для тестов. Следующая команда создаст файл объемом 1 ГБ заполненный случайными данными

dd if=/dev/urandom of=bigfile bs=1M count=1000


Или файл заполненный нулями

dd if=/dev/null of=bigfile bs=1M count=1000

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

Например, следующая команда полностью копирует диск /dev/sda на диск /dev/sdb:

dd if=/dev/sda of=/dev/sdb bs=4096 conv=noerror,sync

Аргумент noerror опции conv позволяет программе продолжать копирование даже при наличии ошибок, а sync задаёт использование синхронизированного ввода/вывода. Размер блока должен быть кратным 1 Кб (1024 байта), а выходной диск равен по объему входному или больше.

Аналогично можно создать образ CD или DVD, вместе с загрузочным сектором:

dd if=/dev/cdrom of=/mycd.iso

Опция -o loop команды mount позволяет смонтировать файл как обычное устройство. Так можно подключить созданный образ:

mount -o loop /mycd.iso /mnt/cd

Сокращение вывода в stderr

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

dd if=file1 of=file3 status=none

Другие возможные значения — noxfer, исключающее вывод конечной статистики, и progress, исключающее вывод текущей статистики.

Действия с выходными файлами

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

dd if=file1 of=file3 conv=excl


По умолчанию dd перезаписывает выходной файл, если он уже существует. Если требуется обновление с записью в конец файла, укажите значение append для опции oflag и значение notrunc для опции conv, например:

dd if=file1 of=file2 oflag=append conv=notrunc

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

dd if=file1 of=file10 oflag=append conv=nocreat


Изменение регистра текста

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

Допустим, у вас есть несколько строк текста, написанного в нижнем регистре, а вам нужно перевести его в верхний регистр. Для этого можно воспользоваться опцией conv с аргументом ucase:


Здесь мы видим команду и введённый текст. Чтобы показать dd, что ввод текста завершён, мы воспользовались комбинацией клавиш Ctrl+D, и команда вывела следующий результат:


Введённый текст был переведён в верхний регистр, последние три строки — это статистика операции. Аналогичным образом можно перевести текст в нижний регистр.

Пропуск части входных данных

При необходимости можно задать команде пропустить несколько начальных байтов входных данных. Это осуществляется при помощи опции skip с целочисленным аргументом. Например, если значение этого аргумента N, то dd пропустит N блоков размера ibs. Это ещё одна опция команды, которая определяет число байтов, считываемых за раз (по умолчанию 512).

Если вам требуется пропустить первые 4 байта входного файла, нужно задать ibs равным 4, а аргумент skip равным 1. Таким образом при чтении файла команда пропустит один блок размером 4 байта.

dd if=file1 of=file2 ibs=4 skip=1

Сравним файлы командой grep

grep -v -f file1 file2


Видно, что часть текста при считывании файла file1 были пропущены, поэтому в файле file2 их нет.

Утилита dcfldd

Типичный пример использования программы dcfldd на первый взгляд может показаться несколько ошеломляющим, но при проходе по каждому параметру всё становится гораздо проще:

dcfldd if=/dev/sdb4 hash=md5,sha256 hashwindow=10G md5log=md5.txt sha256log=sha256.txt hashconv=after bs=512 conv=noerror,sync split=10G splitformat=aa of=sdb4image.dd

Здесь считываются 10 Гб данных с устройства /dev/sdb4, и эти данные записываются в файл sdb4image.dd.aa. При этом также вычисляется MD5-хэш и sha256-хэш для копируемого фрагмента данных. Затем считываются следующие 10 Гб данных и записываются в файл sdb4image.dd.ab и т.д. Вычисленные хэши сохраняются в файлах md5.txt и sha256.txt соответственно. Само вычисление хэш-сумм выполняется после всех прочих преобразований. Размеры блока хэширования и блока, записываемого в выходные файлы (различные), совпадают. Размер блока копирования 512 байтов. После ошибок чтения выполнение команды не прерывается, по умолчанию dcfldd записывает в такие блоки нули.

Заключение

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


Закон Парето применим ко многим сферам, в том числе и к работе с терминалом Linux, ведь всего нескольких десятков команд позволит легко справляться с большинством задач. Мы выбрали 40 наиболее полезных команд, использование которых способно сильно облегчить жизнь при работе с Linux. Статья не претендует на статус истины в последней инстанции или максимально подробного руководства, а очередность команд обусловлена лишь алфавитным порядком.

Джентльменский набор команд Linux Часть 1:

1. alias

Команда alias создает «ярлык» другой команды или последовательности команд Linux.

Синтаксис команды alias:

alias позволяет:

Исправлять частые опечатки.

Использования команды alias для последовательности команд:

В данном алиасе команда ps используется для вывода списка запущенных процессов, в котором grep ищет процессы, соответствующие параметру $1.

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

/.bashrc (в случае использования bash в качестве командной оболочки).

2. cat

Команда cat выводит содержание файлов в окне терминала.

cat позволяет:

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

Синтаксис команды cat:

Чтобы посмотреть содержимое файла .bash_log_out через терминал нужно ввести:

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

Основные опции cat:

  • -b — нумеровать только строки с содержимым;
  • -E — выводить $ в конец каждой строки;
  • -n — нумеровать все строки;
  • -s – удалять повторы пустых строк;
  • -T — выводить табуляции в виде ^I.

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

Синтаксис команды cd:

Чтобы перейти в подкаталог домашней папки нужно просто указать после команды название директории (img для примера):

Если нужно попасть в другой каталог нужно указать путь:

Чтобы быстро попасть в домашний каталог нужно указать вместо имени

Вернуться в предыдущую папку:

Перейти в родительский каталог:

Перемещение в родительский каталог текущего родительского каталога

4. chmod

Команда chmod устанавливает права доступа к файлу или каталогу.

chmod позволяет:

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

Синтаксис команды chmod:

Если вывести список папок и файлов командой ls с параметром –l, то можно увидеть нечто подобное:

Первый символ означает:

  • «-» — является файлом;
  • «d» — является каталогом.

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

  • Первые 3 символа – права доступа к файлам владельца (-rwx------).
  • Вторые 3 символа – права доступа к файлам группы (----rwx---).
  • Последние 3 символа – разрешения для других (-------rwx).

Если какой-то из символов отсутствует и вместо него указан «-», тогда нет доступа к данному действию.

Также задать права доступа можно с помощью цифр:

  • 0 – нет прав (-);
  • 1 – только выполнение (--x);
  • 2 – только запись (-w-);
  • 3 – запись и выполнение (w-x);
  • 4 – только чтение (r--);
  • 5 – чтение и выполнение (r-x);
  • 6 – чтение и запись (rw-);
  • 7 – чтение, запись и выполнение (rwx).

Например, у файла «ex.txt» указаны все права:

Нужно изменить их на:

  • Пользователь – все права (7 или rwx).
  • Группа – чтение и запись (6 или rw-).
  • Другим – чтение и выполнение (5 или r-x).

Тогда вводим следующую команду:

5. chown

Команда chown (change owner) позволяет менять владельца и группу владельца:

Синтаксис команды chown:

Если в поле пользователя указать группу через двоеточие (пользователь: группа), тогда изменится еще и группа.

Основные опции команды chown:

  • -c — детальный вывод всех выполняемых изменений;
  • -f — минимум информации (убирает ошибки из выдачи);
  • -h — изменять права символических ссылок, а файлы к которым они ведут не трогать;
  • -R — рекурсивная обработка всех подкаталогов;
  • -L — переходить по всем символическим ссылкам на директории.

Изменить владельца папки ex1 на user:

Изменить на владельца user и группу users:

Чтобы изменения применялись не только к данному каталогу, но и всем подкаталогам внутри, необходимо добавить опцию -R:

6. curl

Утилита curl извлекает информацию и файлы с url-страниц.

Будет полезна тем, кто часто загружает:

  • Скрипты.
  • Исполняемые файлы программ.
  • Архивы.

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

На самом деле curl является не просто утилитой, а целым набором библиотек, способными реализовать все основные возможности по работе c передачей файлов и url-страницами.

Curl поддерживает работу с протоколами:

Синтаксис утилиты:

curl опции ссылка

Загрузка файлов с помощью curl

Самая распространенная задача для утилиты curl – это загрузка файлов. Чтобы скачать файл достаточно передать утилите имя файла или адрес страницы, например:

Таким образом содержимое файла будет отправлено на стандартный вывод. Для записи его в файл (для примера ex.txt) нужно ввести:

Чтобы скачанный файл назывался так же, как и на сервере необходимо использовать опцию -O:

Стоит отметить, что не во всех дистрибутивах Linux утилита предустановлена по умолчанию.

Команда df позволяет выводить:

  • Список подключенных устройств
  • Информацию о занятом месте
  • Точку монтирования

Синтаксис команды df:

Основные опции df:

  • -h — выводить размеры в читаемом виде Мбайтах или Гбайтах;
  • -x – исключить из вывода указанные файловые системы.

Например, необходимо получить информацию в читаемом виде для раздела /dev/sdb7, тогда вводим:

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

Лучший способ освоить новые команды – больше практиковаться, а лучше всего это делать на серверах компании AlexHost, где:

Команда cat очень полезна в Linux. Она имеет три основные функции связанные с манипулированием текстовыми файлами: создание, отображение и объединение.

Давайте предположим что у вас есть три текстовых файла: file1.txt, file2.txt и file3.txt. Вы хотите объединить их в один текстовый файл содержащий информацию о всех трех в указанном порядке. Вы можете сделать это с помощью команды cat.

Просто откройте терминал и введите следующую команду:

cat file1.txt file2.txt file3.txt


Замените имена файлов в приведенном выше примере своими именами.

Объединенное содержимое трех текстовых файлов появится в вашем терминале.


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

cat file1.txt file2.txt file3.txt> file4.txt


Теперь если вы откроете файл file4.txt с помощью команды cat или с помощью выбранного вами текстового редактора вы обнаружите что он содержит текст первых трех текстовых файлов.


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


cat file1.txt file2.txt file3.txt | sort > file4.txt

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


cat file5.txt >> file4.txt

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

cat >> file4.txt

На следующей строке появится курсор. Начните вводить текст который хотите добавить в файл. Когда закончите нажмите Enter после последней строки а затем нажмите Ctrl + D чтобы скопировать этот текст в конец файла и выйти из cat.

Утилита dd — это программа Unix, утилита командной строки, которую в Linux используют для низкоуровневого копирования и конвертации файлов. Первый прототип программы создан еще в 1974 году, а на Unix она работает с 1984 года. Функции утилиты на самом деле значительно шире и об этом мы более детально расскажем в статье ниже.

На самом деле, команда dd — не единственный инструмент, ведь большинство задач на Linux можно решить в несколько способов. Мы же попытаемся рассказать, почему утилита dd до сих пор популярна среди разработчиков, хоть ее и называют иногда data destroyer .

Назначение команды dd

Мы упоминали, что основная задача dd — обработка файлов. Но в Linux все устройства, порты, оперативная память и память с кодом процессов отображаются как файлы, а это значит, что над ними можно проводить операции в dd . Еще утилита позволяет осуществлять выборочное копирование файлов с диска. Например, переместить фрагмент файла определенного размера или пропустить несколько гигабайт. Эта функция также помогает считать файлы с поврежденного носителя, изменить расположение байтов в файле, создавать файлы фиксированного размера. Кроме этого в dd можно создать дополнительную копию загрузочного сектора жесткого диска или прочитать блоки из системных файлов.

Дисклеймер: работайте осторожно

Разработчики задумывали, что название dd должно отсылать к аббревиатуре языка Job Control Language (JCL), который использовала IBM. В этом языке оператор dd расшифровывался как «Доступ к данным» (Data Access).

Работая с утилитой, помните, что при передаче некорректных аргументов, часть или все данные диска могут быть потеряны. Поэтому крайне важно корректно указывать адреса и имена целевых файлов. В связи с этим dd имеет несколько ироничных расшифровок-прозвищ, таких как data destroyer , « добей диск » и delete data . Но инструмент продолжают применять из-за его мощности, надежности и простоты в использовании.

При работе с dd рекомендуется использовать Live-режим Linux, то есть запускать систему без установки на компьютер, например с USB-носителя. Live-режим работает медленнее из-за копирования каждого байта, даже с неиспользуемого пространства.

Обратите внимание, что dd не отличает занятое и свободное дисковое пространство и копирует все. Поэтому жесткий диск, на который переносятся данные должен быть не меньшим, чем клонируемый.

Стандартный синтаксис команды dd

Обычно синтаксис кода состоит из трех команд:

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

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

Параметры для работы с командой dd

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

  • bs — Установить размер блока ( block size ), который система будет считывать. Оптимально использовать 4–8 MB;
  • cbs — Установить, сколько байт нужно записывать за один раз;
  • count — Выбрать определенное число блоков для копирования. А чтобы обозначить их размер, подключают bs -опцию.
  • ibs — обозначить сколько байт нужно считать за раз. По умолчанию — 512 байт.
  • obs — Обозначить сколько байт нужно записать за раз. По умолчанию — 512 байт.
  • seek — Пропустить определенное количество байт в начале вывода;
  • skip — Пропустить определенное количество байт в начале ввода;
  • conv — Параметр, чтобы преобразовать файл. Параметр conv имеет собственные параметры. С их помощью, например, можно конвертировать систему кодов ASCII в EBCDIC и наоборот. В таблице указаны основные способы конвертации файлов.

Параметры для iflag, oflag:

Также отдельно стоит рассмотреть параметры iflag и oflag . Они позволяют задать дополнительные флаги: iflag — для устройств ввода, а oflag — для вывода.

Наиболее популярные флаги:

  • append — режим дописывания данных в файл. Append применяют только для вывода. Когда вы объедините этот флаг с конструкцией “ of=файл ”, нужно еще указать параметр “ conv=notrunc ”, чтобы выходной файл не был обрезан из-за добавления новых данных.
  • direct — режим обработки данных в обход кэша. Этот флаг повышает скорость.
  • dsync — запись данных с синхронизацией. Этот флаг повышает надежность.
  • sync — так же как и dsync , но и с метаданными.
  • directory — выдавать ошибку, при использовании каталога.
  • fullblock — чтение только полных блоков. Применяется только для iflag .
  • noatime — не обновляет время доступа к элементам файловой системы. Флаг повышает скорость.
  • nofollow — запрет на переход по символическим ссылкам.

Примеры использования dd

Передача образа Linux на флешку

sudo mount /dev/sdc1 /mnt/usb

Дальше нужно определить куда записывать данные: на раздел флешки или на саму флешку. В случае ISO-образа нужно писать на раздел. Если образ диска типа img , то непосредственно на флешку.

Обычно это выглядит так:

В случае записи Linux на флешку, а не на раздел, единицу после имени указывать не нужно. Также после этого этапа обязательно нужно выполнить команду sync , чтобы не потерять часть данных, так как dd завершает работу раньше чем данные записаны на флешку.

Клонирование диска

Скопировать данные можно как и с всего устройства, так и с отдельного диска. Примерный код перемещения жесткого диска ( sda ) на внешнее устройство sdb1 будет выглядеть так:

sudo dd if=/dev/sda of=/dev/sdb1 bs=64K conv=noerror,sync

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

Обычно dd не отображает изменений в ходе исполнения. Но можно передать инструменту опцию status=progress . Тогда система будет отображать информацию о количестве скопированных данных в режиме реального времени.

Передача файла образа диска на другой компьютер

Назовем другой компьютер именем newcomputer . Тогда команда для передачи файла будет выглядеть так:

Архивация образа диска

Часто полезно записать сжатый образ диска, например, чтобы сделать бэкап данных. Архивацию можно реализовать несколькими способами. Наиболее популярные — утилитами bzip2 и gzip .

Вот пример кода с bzip2 сжатием:

Или применять gzip :

$ sudo dd if=/dev/disk3 | gzip -c > /Users/captain/raspberrypi.img.gz

Разные алгоритмы сжатия отличаются по производительности и дают разный размер архива. Также можно добавить дополнительные опции, например, размер блоков ( bs ), наблюдение за статусом ( status=progress ) и запись данных выходного файла ( conv=fsync ).

Извлечение данных из резервной копии

Когда утилита dd завершает работу с клонирования диска, вы получаете образ диска с названием backup_image.img.gz . Чтобы его открыть, сначала нужно получить права суперпользователя.

Например, Ubuntu это выполняется командой sudo su + пароль компьютера. В других дистрибутивах алгоритм действий аналогичный, но применяете команду su . Такую же команду нужно повторить если восстановления из образа данных жесткого диска:

Синтаксис команды:

gunzip/+ Путь кореневой директории диска/ /backup_image.img.gz | dd of=/dev/sda

Создать образ оптического диска формата ISO

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

Восстановить файл с поврежденного устройства или создать образ этого носителя

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

Вот пример кода:

Другой вариант — создать файл образа поврежденного диска и попробовать вытащить данные из него.

Анализ содержания жесткого диска

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

Тестирование скорости чтения и записи дисков

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

Так будет выглядеть синтаксис команд:

При записи мы можем считывать диск /dev/zero , он будет источником бесконечных байтов, а отправляем его по адресу dev/null . Этот раздел нигде физически не существует. Во время передачи dd просто отслеживает скорость передачи файлов и отображает сведения об операции.

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

Файлы с кэша обычно считываются быстрее, поэтому, чтобы протестировать скорость чтения именно из диска, лучше очистить кэш:

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

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

sudo dd if=/dev/zero of=/media/user1/Flashcard/tempfile bs=1M count=1024

Максимальная скорость съемных устройств, которые имеют подключение USB 2.0, — 480 Мбит или 60 МВ в секунду. Но из-за различных ограничений максимальная пропускная способность ограничена на уровне примерно в 35 МВ/с.

Копирование файлов

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

$ dd if=/home/user1/article.txt /home/user1/article_copy.txt

В заключение

Утилита dd предназначена для форматирования, обработки и конвертации файлов. Она работает на «низком» уровне, то есть позволяет взаимодействовать с секторами дисков. Поэтому во время работы важно помнить о соответствии размеров дисков и использовать флаг sync для синхронизации данных. В остальном это быстрый и удобный инструмент для модерации данных на устройствах и его применение ограничивается лишь фантазией пользователя.

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

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