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

30.6. Утилита cpio

Утилита (Copy Input and Output) значительно отличается от утилит tar и dump. Она может принимать список имен файлов от сторонней утилиты, но при этом осуществляет последовательное копирование оригиналов этих файлов. Это обстоятельство позволяет достаточно просто использовать данную утилиту в сочетании с утилитой find! Некоторые примеры ее использования приведены ниже.

Утилита find передает имена файлов утилите cpio, которая, в свою очередь, помещает файлы в архив.

find /etc -depth -print | cpio -oaV -O archive.cpio

Аналогичная команда со сжатием результирующего архива с помощью утилиты gzip.

find /etc -depth -print | cpio -oaV | gzip -c > archive.cpio.gz 

Теперь данные архива передаются по протоколу ssh (осуществляется резервное копирование файлов в сжатый архив на другой машине).

find /etc -depth -print|cpio -oaV|gzip -c|ssh server "cat - > etc.cpio.gz"

Утилита find передает имена файлов утилите cpio | утилита cpio передает файлы в архиве клиенту ssh | клиент ssh передает файлы в архиве утилите cpio ‘утилита cpio извлекает файлы из архива’.

find /etc -depth -print | cpio -oaV | ssh user@host 'cpio -imVd'

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

ssh user@host "find path -depth -print | cpio -oaV" | cpio -imVd

Практическое задание: работа с файлами

1. Выведите список файлов директории /bin.

2. Выведите информацию о типах файлов /bin/cat, /etc/passwd и /usr/bin/passwd.

3a. Загрузите файлы wolf.jpg и LinuxFun.pdf с ресурса http://linux-training.be (с помощью команд wget http://linux-training.be/files/studentfiles/wolf.jpg и wget http://linux-training.be/files/books/LinuxFun.pdf)

3b. Выведите информацию о типах файлов wolf.jpg и LinuxFun.pdf.

3c. Переименуйте файл wolf.jpg в wolf.pdf (с помощью команды mv).

3d. Выведите информацию о типах файлов wolf.pdf и LinuxFun.pdf.

4. Создайте директорию ~/touched и перейдите в нее.

5. Создайте файлы today.txt и yesterday.txt в директории touched.

6. Измените дату создания файла yesterday.txt таким образом, чтобы она совпадала с датой прошлого дня.

7. Создайте копию файла yesterday.txt с именем copy.yesterday.txt.

8. Переименуйте файл copy.yesterday.txt в kim.

9. Создайте директорию с именем ~/testbackup и скопируйте все файлы из директории ~/touched в нее.

10. Используйте одну команду для удаления директории ~/testbackup и всех файлов из нее.

11. Создайте директорию ~/etcbackup и скопируйте файлы с расширением .conf (*.conf) из директории /etc в нее. Проверьте, был ли осуществлен обход всех поддиректорий директории /etc?

12. Используйте утилиту rename для переименования всех файлов с расширением .conf (*.conf) таким образом, чтобы расширения всех этих файлов изменились на .backup. (Если у вас есть возможность работы более чем со одним дистрибутивом, попробуйте выполнить эту операцию во всех этих дистрибутивах!).

Корректная процедура выполнения практического задания: работа с файлами

1. Выведите список файлов директории /bin.

ls /bin

2. Выведите информацию о типах файлов /bin/cat, /etc/passwd и /usr/bin/passwd.

file /bin/cat /etc/passwd /usr/bin/passwd

3a. Загрузите файлы wolf.jpg и LinuxFun.pdf с ресурса http://linux-training.be (с помощью команд wget http://linux-training.be/files/studentfiles/wolf.jpg и wget http://linux-training.be/files/books/LinuxFun.pdf)

wget http://linux-training.be/files/studentfiles/wolf.jpg
wget http://linux-training.be/files/books/LinuxFun.pdf

3b. Выведите информацию о типах файлов wolf.jpg и LinuxFun.pdf.

file wolf.jpg LinuxFun.pdf

3c. Переименуйте файл wolf.jpg в wolf.pdf (с помощью команды mv).

mv wolf.jpg wolf.pdf

3d. Выведите информацию о типах файлов wolf.pdf и LinuxFun.pdf.

file wolf.pdf LinuxFun.pdf

4. Создайте директорию ~/touched и перейдите в нее.

mkdir ~/touched ; cd ~/touched

5. Создайте файлы today.txt и yesterday.txt в директории touched.

touch today.txt yesterday.txt

6. Измените дату создания файла yesterday.txt таким образом, чтобы она совпадала с датой прошлого дня.

touch -t 200810251405 yesterday.txt (замените 20081025 на дату, соответствующую вчерашнему дню)

7. Создайте копию файла yesterday.txt с именем copy.yesterday.txt.

cp yesterday.txt copy.yesterday.txt

8. Переименуйте файл copy.yesterday.txt в kim.

mv copy.yesterday.txt kim

9. Создайте директорию с именем ~/testbackup и скопируйте все файлы из директории ~/touched в нее.

mkdir ~/testbackup ; cp -r ~/touched ~/testbackup/

10. Используйте одну команду для удаления директории ~/testbackup и всех файлов из нее.

rm -rf ~/testbackup

11. Создайте директорию ~/etcbackup и скопируйте файлы с расширением .conf (*.conf) из директории /etc в нее. Проверьте, был ли осуществлен обход всех поддиректорий директории /etc?

cp -r /etc/*.conf ~/etcbackup

Будут скопированы исключительно файлы с расширением .conf (*.conf), находящиеся непосредственно в директории /etc/.

12. Используйте утилиту rename для переименования всех файлов с расширением .conf (*.conf) таким образом, чтобы расширения всех этих файлов изменились на .backup. (Если у вас есть возможность работы более чем со одним дистрибутивом, попробуйте выполнить эту операцию во всех этих дистрибутивах!).

В дистрибутиве RHEL: touch 1.conf 2.conf ; rename conf backup *.conf
В дистрибутиве Debian: touch 1.conf 2.conf ; rename 's/conf/backup/' *.conf
Предыдущий раздел: Оглавление Следующий раздел:
Глава 6. Работа с директориями   Глава 8. Работа с содержимым файлов

Утилита rename

Об утилите rename

Утилита является одним из редких случаев, когда в рамках книги «Фундаментальные основы Linux» приходится делать разделение между дистрибутивами Linux. Практически каждая из описанных в данной книге утилит работает практически на каждом компьютере под управлением Linux. Но реализации утилиты в различных дистрибутивах отличаются.

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

Утилита rename в дистрибутиве Debian/Ubuntu

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

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

paul@debian7:~/test42$ ls
abc.txt  file33.txt  file42.txt
paul@debian7:~/test42$ rename 's/\.txt/\.png/' *.txt
paul@debian7:~/test42$ ls
abc.png  file33.png  file42.png

Во втором примере производится замена всех (первых) вхождений слов на во всех файлах с расширением .png.

paul@debian7:~/test42$ ls
abc.png  file33.png  file42.png
paul@debian7:~/test42$ rename 's/file/document/' *.png
paul@debian7:~/test42$ ls
abc.png  document33.png  document42.png
paul@debian7:~/test42$

Утилита rename в дистрибутиве CentOS/RHEL/Fedora

В Red Hat Enterprise Linux синтаксис утилиты немного отличается. В первом примере, представленном ниже, осуществляется переименование всех файлов с расширением .conf (*.conf) путем замены всех вхождений .conf на .backup.

$ touch one.conf two.conf three.conf
$ rename .conf .backup *.conf
$ ls
one.backup  three.backup  two.backup
$

Во втором примере производится переименование всех файлов (*) путем замены всех вхождений one на ONE.

$ ls
one.backup  three.backup  two.backup
$ rename one ONE *
$ ls
ONE.backup  three.backup  two.backup
$

Удаление файлов в терминале Linux.

Для удаления файлов используется команда «rm» (от англ. remove).

Работает очень просто, пишете команду rm и путь к файлу, который хотите удалить:

Удалить файл с именем «file1»:

Удалить директорию с именем «dir1» и рекурсивно всё её содержимое:

Удалить две директории и рекурсивно их содержимое:

Также можно добавить параметр -f, который означает, что при удалении не будет запрашиваться подтверждение на удаление. Команды будут выглядеть так:

Перемещение и переименование файлов и директорий в терминале Linux.

Для перемещения и переименовывания файлов и директорий (каталогов) используется команда «mv» (от англ. move).

Всё очень просто. Чтобы переименовать файл, выполняем команду:

Чтобы переместить файл:

Копирование файлов и директорий в терминале Linux.

Для копирования используется команда «cp» (от англ. copy).

Скопировать файл file1 и назвать его file2:

Копировать директорию dir1 в директорию dir2:

Копировать файл с именем file1 в директорию c именем dir1:

Справка о командах.

У каждой команды присутствует множество параметров, чтобы узнать их, просто наберите команду и параметр —help:

Например:

Команда find в Linux

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

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

В этой статье мы поговорим о поиске с помощью очень мощной команды find Linux, подробно разберем ее синтаксис, опции и рассмотрим несколько примеров.

Создать файл в командной строке Linux

Существуют различные способы создания нового файла в терминале Linux. Мы покажем вам команды одну за другой.

1. Создайте пустой файл с помощью команды touch

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

Если файл еще не существует, он создаст новый пустой файл. Если файл с таким именем уже существует, он обновит временные метки файла .

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

2. Создайте файлы с помощью команды cat

Другой популярный способ создания нового файла – использование команды cat в Linux. Команда cat в основном используется для просмотра содержимого файла, но вы также можете использовать ее для создания нового файла.

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

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

3. Создайте новый файл с помощью команды echo

Основное использование команды echo – просто повторить (echo) то, что вы печатаете на экране. Но если вы используете перенаправление с echo, вы можете создать новый файл.

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

echo "Это образец текста" > filename.txt

Вновь созданный файл filename.txt будет иметь следующий текст: Это пример текста. Вы можете просмотреть файл в Linux, используя cat или другие команды просмотра.

Вы не обязаны помещать образец текста с эхом. Вы можете создать (почти) пустой файл, используя команду echo:

echo> file.txt

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

4. Создайте новый файл с помощью текстового редактора, такого как Vim

Последний метод в этой серии – использование текстового редактора. Текстовый редактор на основе терминала, такой как Emacs , Vim или Nano, несомненно, может быть использован для создания нового файла.

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

Допустим, вы собираетесь использовать редактор Vim. Убедитесь, что вы знакомы с основными командами vim , а затем откройте новый файл, например:

Какая ваша любимая команда?

Итак, мы только что поделились 4 различными способами создания файла в Linux. Лично мы предпочитаем использовать touch для создания пустого файла и Vim, если нам нужно отредактировать файл.

Какую команду вы предпочитаете здесь? Пожалуйста, поделитесь своим мнением в разделе комментариев ниже.

30.9. Практическое задание: резервные копии данных

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

1. Создайте директорию (или раздел жесткого диска, если желаете) для хранения резервных копий данных. Используйте путь (или смонтируйте файловую систему из созданного раздела жесткого диска в директорию) /mnt/backup.

2a. Используйте утилиту tar для создания файла резервной копии данных директории /etc с именем /mnt/backup/etc_<дата>.tgz, причем этот файл должен быть сжат с использованием алгоритма gzip. (Замените <дата> на текущую дату.)

2b. Используйте утилиту tar для создания файла резервной копии данных директории /bin с именем /mnt/backup/bin_<дата>.tar.bz2, причем этот файл должен быть сжат с использованием алгоритма bzip2.

2с. Выберите по файлу из директорий /etc и /bin и проверьте, была ли создана резервная копия этих файлов.

2d. Извлеките два выбранных файла из архивов в вашу домашнюю директорию.

3a. Создайте директорию для хранения файлов резервных копий данных вашего соседа и сделайте ее доступной по пути /mnt/<имя_компьютера_соседа>.

3b. Используйте комбинацию из клиента ssh и утилиты tar для сохранения резервной копии данных вашей директории /boot на компьютере вашего соседа в директории /mnt/<имя_вашего_компьютера>.

4a. Используйте комбинацию из утилит find и cpio для создания архива содержимого директории /etc формата cpio.

4b. Выберите файл из директории /etc и извлеките его из архива формата cpio в вашу домашнюю директорию.

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

6. (Задание должно выполняться на реальном компьютере.) Создайте и смонтируйте файл образа установочного диска Ubuntu с расширением .iso.

7. Используйте комбинацию из утилит dd и gzip для создания ‘виртуального’ образа одного из ваших разделов жесткого диска в другом разделе.

8. Используйте утилиту dd для создания файла размером в пять мегабайт в директории ~/testsplit с именем biggest. После этого разделите этот файл на файлы размером до двух мегабайт.

mkdir testsplit
dd if=/dev/zero of=~/testsplit/biggest count=5000 bs=1024
split -b 2000000 biggest parts
Предыдущий раздел: Оглавление Следующий раздел:
Глава 29. Работа с разделяемыми библиотеками   Приложение A. Дисковые квоты

30.8. Утилита split

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

paul@laika:~/test$ ls -l
итого 8
-rw-r--r-- 1 paul paul 5000 2007-09-09 20:46 bigfile1
paul@laika:~/test$ split -b 2000 bigfile1 splitfile.
paul@laika:~/test$ ls -l
итого 20
-rw-r--r-- 1 paul paul 5000 2007-09-09 20:46 bigfile1
-rw-r--r-- 1 paul paul 2000 2007-09-09 20:47 splitfile.aa
-rw-r--r-- 1 paul paul 2000 2007-09-09 20:47 splitfile.ab
-rw-r--r-- 1 paul paul 1000 2007-09-09 20:47 splitfile.ac

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

Поиск файла по имени

1. Простой поиск по имени:

find / -name «file.txt»

* в данном примере будет выполнен поиск файла с именем file.txt по всей файловой системе, начинающейся с корня .

2. Поиск файла по части имени:

find / -name «*.tmp»

* данной командой будет выполнен поиск всех папок или файлов в корневой директории /, заканчивающихся на .tmp

3. Несколько условий. 

а) Логическое И. Например, файлы, которые начинаются на sess_ и заканчиваются на cd:

find . -name «sess_*» -a -name «*cd»

б) Логическое ИЛИ. Например, файлы, которые начинаются на sess_ или заканчиваются на cd:

find . -name «sess_*» -o -name «*cd»

в) Более компактный вид имеют регулярные выражения, например:

find . -regex ‘.*/\(sess_.*cd\)’

find . -regex ‘.*/\(sess_.*\|.*cd\)’

* где в первом поиске применяется выражение, аналогичное примеру а), а во втором — б).

4. Найти все файлы, кроме .log:

find . ! -name «*.log»

* в данном примере мы воспользовались логическим оператором !.

Поиск по дате

1. Поиск файлов, которые менялись определенное количество дней назад:

find . -type f -mtime +60

* данная команда найдет файлы, которые менялись более 60 дней назад.

2. Поиск файлов с помощью newer. Данная опция доступна с версии 4.3.3 (посмотреть можно командой find —version).

а) дате изменения:

find . -type f -newermt «2019-11-02 00:00»

* покажет все файлы, которые менялись, начиная с 02.11.2019 00:00.

find . -type f -newermt 2019-10-31 ! -newermt 2019-11-02

* найдет все файлы, которые менялись в промежутке между 31.10.2019 и 01.11.2019 (включительно).

б) дате обращения:

find . -type f -newerat 2019-10-08

* все файлы, к которым обращались с 08.10.2019.

find . -type f -newerat 2019-10-01 ! -newerat 2019-11-01

* все файлы, к которым обращались в октябре.

в) дате создания:

find . -type f -newerct 2019-09-07

* все файлы, созданные с 07 сентября 2019 года.

find . -type f -newerct 2019-09-07 ! -newerct «2019-09-09 07:50:00»

* файлы, созданные с 07.09.2019 00:00:00 по 09.09.2019 07:50

Искать в текущей директории и всех ее подпапках только файлы:

find . -type f

* f — искать только файлы.

Поиск по правам доступа

1. Ищем все справами на чтение и запись:

find / -perm 0666

2. Находим файлы, доступ к которым имеет только владелец:

find / -perm 0600

Поиск файла по содержимому

find / -type f -exec grep -i -H «content» {} \;

* в данном примере выполнен рекурсивный поиск всех файлов в директории и выведен список тех, в которых содержится строка content.

С сортировкой по дате модификации

find /data -type f -printf ‘%TY-%Tm-%Td %TT %p\n’ | sort -r

* команда найдет все файлы в каталоге /data, добавит к имени дату модификации и отсортирует данные по имени. В итоге получаем, что файлы будут идти в порядке их изменения.

Лимит на количество выводимых результатов

Самый распространенный пример — вывести один файл, который последний раз был модифицирован. Берем пример с сортировкой и добавляем следующее:

find /data -type f -printf ‘%TY-%Tm-%Td %TT %p\n’ | sort -r | head -n 1

Поиск с действием (exec)

1. Найти только файлы, которые начинаются на sess_ и удалить их:

find . -name «sess_*» -type f -print -exec rm {} \;

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

2. Переименовать найденные файлы:

find . -name «sess_*» -type f -exec mv {} new_name \;

или:

find . -name «sess_*» -type f | xargs -I ‘{}’ mv {} new_name

3. Вывести на экран количество найденных файлов и папок, которые заканчиваются на .tmp:

find . -name «*.tmp» | wc -l

4. Изменить права:

find /home/user/* -type d -exec chmod 2700 {} \;

* в данном примере мы ищем все каталоги (type d) в директории /home/user и ставим для них права 2700.

5. Передать найденные файлы конвееру (pipe):

find /etc -name ‘*.conf’ -follow -type f -exec cat {} \; | grep ‘test’

* в данном примере мы использовали find для поиска строки test в файлах, которые находятся в каталоге /etc, и название которых заканчивается на .conf. Для этого мы передали список найденных файлов команде grep, которая уже и выполнила поиск по содержимому данных файлов.

6. Произвести замену в файлах с помощью команды sed:

find /opt/project -type f -exec sed -i -e «s/test/production/g» {} \;

* находим все файлы в каталоге /opt/project и меняем их содержимое с test на production.

30.3. Утилита tar

Название утилиты расшифровывается как (ленточный архив). Данный инструмент используется для приема и передачи данных (обмен данными обычно осуществляется с ленточными накопителями или обычными фалами). Параметр c используется для создания архива формата tar (или файла формата tar), а параметр f — для указания имени . С помощью команды из примера ниже создается резервная копия директории /etc, которая сохраняется в файл /backup/etc.tar.

root@RHELv4u4:~# tar cf /backup/etc.tar /etc
root@RHELv4u4:~# ls -l /backup/etc.tar 
-rw-r--r--  1 root root 47800320 май 12 11:47 /backup/etc.tar
root@RHELv4u4:~#

Для сжатия данных не потребуются программные каналы, ведь утилита tar поддерживает параметр z, предназначенный для сжатия данных с использованием алгоритма gzip, а также параметр j для сжатия данных с использованием алгоритма bzip2.

root@RHELv4u4:~# tar czf /backup/etc.tar.gz /etc
root@RHELv4u4:~# tar cjf /backup/etc.tar.bz2 /etc
root@RHELv4u4:~# ls -l /backup/etc.ta*
-rw-r--r--  1 root root 47800320 май 12 11:47 /backup/etc.tar
-rw-r--r--  1 root root  6077340 май 12 11:48 /backup/etc.tar.bz2
-rw-r--r--  1 root root  8496607 май 12 11:47 /backup/etc.tar.gz
root@RHELv4u4:~# 

Параметр t используется для . Режим подробного вывода активируется с помощью параметра v (данный параметр также полезен в том случае, если вы хотите видеть информацию об обрабатываемых файлах в процессе их архивации).

root@RHELv4u4:~# tar tvf /backup/etc.tar
drwxr-xr-x root/root         0 2007-05-12 09:38:21 etc/
-rw-r--r-- root/root      2657 2004-09-27 10:15:03 etc/warnquota.conf
-rw-r--r-- root/root     13136 2006-11-03 17:34:50 etc/mime.types
drwxr-xr-x root/root         0 2004-11-03 13:35:50 etc/sound/
...

Для , следует использовать параметр t с передачей имени интересующего файла (без начального символа /).

root@RHELv4u4:~# tar tvf /backup/etc.tar etc/resolv.conf
-rw-r--r-- root/root        77 2007-05-12 08:31:32 etc/resolv.conf
root@RHELv4u4:~# 

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

root@RHELv4u4:~# tar xvf /backup/etc.tar etc/resolv.conf
etc/resolv.conf
root@RHELv4u4:~# ls -l /etc/resolv.conf
-rw-r--r-- 2 root root 40 май 12 12:05 /etc/resolv.conf
root@RHELv4u4:~# ls -l etc/resolv.conf
-rw-r--r-- 1 root root 77 май 12 08:31 etc/resolv.conf
root@RHELv4u4:~# 

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

root ~# tar cpzf /backup/etc_with_perms.tgz /etc
root ~# tar cpzf /backup/etc_no_sysconf.tgz /etc --exclude /etc/sysconfig
root ~# ls -l /backup/etc_*
-rw-r--r--  1 root root 8434293 май 12 12:48 /backup/etc_no_sysconf.tgz
-rw-r--r--  1 root root 8496591 май 12 12:48 /backup/etc_with_perms.tgz
root ~# 

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

root@RHELv4u4:~# find /etc -name *.conf > files_to_archive.txt
root@RHELv4u4:~# find /home -name *.pdf >> files_to_archive.txt
root@RHELv4u4:~# tar cpzf /backup/backup.tgz -T files_to_archive.txt 

Утилита tar может принимать имена файлов от утилиты find посредством специальной утилиты xargs.

find /etc -type f -name "*.conf" | xargs tar czf /backup/confs.tar.gz

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

(cd /etc; tar -cf - . ) | (cd /backup/copy_of_etc/; tar -xpf - )

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

(cd /etc;tar -cf - . )|(ssh user@srv 'cd /backup/cp_of_etc/; tar -xf - ')

Утилита tar может использоваться совместно с утилитой gzip и клиентом ssh для копирования файла на удаленный сервер по протоколу ssh.

cat backup.tar | gzip | ssh [email protected] "cat - > backup.tgz"

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

cat backup.tar | gzip | ssh [email protected] "gunzip|cat - > backup.tar"

Аналогичная предыдущей команда со сжатием данных силами клиента ssh.

cat backup.tar | ssh -C [email protected] "cat - > backup.tar"

Узнать расположение файла

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

ls -lF $(which lsb_release)

-rwxr-xr-x. 1 root root 15929 Mar 27 2015 /usr/bin/lsb_release*

Опция -F означает показать тип файлов. Поэтому нам удалось увидеть * после lsb_release. * означает, что файл
исполняемый.

Чтобы узнать откуда взялся файл можно воспользоваться командой rpm с опциями
q (query) и f (file)

rpm -qf $(which lsb_release)

redhat-lsb-core-4.1-27.el7.centos.1.x86_64

Чтобы скопировать файл в интерактивном режиме воспользуйтесь командой cp с опцией i (interactive)

interactive означает, что если файл с таким имененм существует, вас спросят прежде чем затирать его

cp -i /etc/hosts .

cp -i /etc/hosts .

cp: overwrite ‘./hosts’?

Чтобы создать директорию сразу же с поддиректорией внутри воспользуйтесь командлой
mkdir с опцией p (parent)

mkdir -p sites/heiheiru

ls -l sites

total 0

drwxrwxr-x. 2 andrei andrei 6 Nov 19 13:40 heiheiru

Основные параметры команды find

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

-P никогда не открывать символические ссылки

-L – получает информацию о файлах по символическим ссылкам

Важно для дальнейшей обработки, чтобы обрабатывалась не ссылка, а сам файл.

-maxdepth – максимальная глубина поиска по подкаталогам, для поиска только в текущем каталоге установите 1.

-depth – искать сначала в текущем каталоге, а потом в подкаталогах

-mount искать файлы только в этой файловой системе.

-version – показать версию утилиты find

-print – выводить полные имена файлов

-type f – искать только файлы

-type d – поиск папки в Linux

Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Мой редактор ОС
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: