Решение 1 — Объяснение команд tar
Команда 1: tar -cf archive.tar file1.txt file2.txt directory1
-c— создаёт новый архив-f— определяет имя архива (archive.tar)- Результат: архив
archive.tar, содержащий файлыfile1.txt,file2.txtи содержимое директорииdirectory1 - Архив НЕ сжат — tar только объединяет файлы
Команда 2: tar -czf archive.tar.gz directory1
-c— создаёт новый архив-z— сжимает данные с помощью gzip-f— определяет имя архива (archive.tar.gz)- Результат: сжатый архив
archive.tar.gz, содержащий содержимое директорииdirectory1 - Расширение
.tar.gz= сначала tar (объединить), потом gzip (сжать)
Решение 2 — Скрипт: 10 файлов с $RANDOM + архив
Полный скрипт из источника лекции:
# /home/tar/create_random.sh
#!/bin/bash
# Создаем временную директорию
mkdir -p /home/tar
temp_dir="/home/tar"
# Создадим файлы
for i in {1..10}; do echo "Случайное число: $RANDOM" > "$temp_dir/$i.txt"; done
# Создаем архив из временной директории
tar -czf /tmp/RANDOM.tar.gz -C $temp_dir .
# Удаляем временную директорию
rm -r $temp_dir
Разбор строк:
mkdir -p /home/tar— создаёт директорию, если её нетtemp_dir="/home/tar"— задаём переменную с путём к директорииfor i in {1..10}; do ... done— цикл 10 итерацийecho "Случайное число: $RANDOM" > "$temp_dir/$i.txt"— записываем случайное число в файл1.txt,2.txt, ...10.txttar -czf /tmp/RANDOM.tar.gz -C $temp_dir .— создаём gzip-архив;-C $temp_dirменяет директорию перед архивацией,.= текущая (то есть/home/tar)rm -r $temp_dir— удаляем временную директорию
⚠️ ВНИМАНИЕ: rm -r $temp_dir
Если переменная
Если переменная
$temp_dir пустая или неправильная, команда может удалить важные данные. Всегда проверяйте значение переменной перед использованием с rm -r.
Решение 3 — Скрипт: /home/MyDir + время + архив
Полный скрипт из источника лекции:
# /home/mydir_script.sh
#!/bin/bash
set -e
mkdir -p /home/MyDir
for run in {1..10}
do
date '+%T' > /home/MyDir/$run.txt
sleep 0.5
done
tar -cvzf /tmp/mydir.tar.gz /home/MyDir/*
sleep 5
tar -tf /tmp/mydir.tar.gz > /root/mydir-tar.txt
Разбор строк:
set -e— прерывает скрипт при любой ошибкеmkdir -p /home/MyDir— создаёт директорию/home/MyDir, если ещё не существуетfor run in {1..10}— цикл, который будет выполняться 10 разdate '+%T' > /home/MyDir/$run.txt— в каждой итерации записывает текущее время в формате HH:MM:SS в файл в директории/home/MyDirsleep 0.5— приостанавливает выполнение скрипта на 0.5 секундыtar -cvzf /tmp/mydir.tar.gz /home/MyDir/*— создаёт архив с именемmydir.tar.gz, который содержит все файлы из директории/home/MyDir; флаг-vвыводит имена файловsleep 5— приостанавливает выполнение скрипта на 5 секундtar -tf /tmp/mydir.tar.gz > /root/mydir-tar.txt— выводит список файлов в архивеmydir.tar.gzв файл/root/mydir-tar.txt