Практика. Написание Bash скриптов
Задача. Расширение относительного пути к файлу
Напишите скрипт, который принимает в качестве аргумента относительный путь к файлу или каталогу. В результате своей работы скрипт должен выводить на стандартный поток вывода абсолютный путь.
Для решения задачи предлагается использовать следующие приложения:
dirnamebasenamepwd
Учтите, что приложение должно корректно обрабатывать пути, имеющие пробелы в названии каталогов.
Задача. Архивирование резервных копий
Доработайте последний скрипт из предыдущей практической работы. Каталог для резервных копий должен содержать tar-архивы. Данные архивы не сжимают информацию, а только собирают файлы внутрь одного архива. Архив должен содержать каталог с резервными данными.
Ранее при выполнении backup.sh структура каталогов выглядела так:
$ tree -F info
info
├── backups/
│   └── 2020-10-25-15-36-57/
│       └── info.md
└── data/
    └── info.md
После внесения изменений каталог должен выглядеть так:
$ tree -F info
info
├── backups/
│   └── 2020-10-25-15-36-57.tar
└── data/
    └── info.md
В архиве 2020-10-25-15-36-57.tar должен находиться каталог 2020-10-25-15-36-57:
$ tar tf info/backups/2020-10-25-15-36-57.tar
2020-10-25-15-36-57/
2020-10-25-15-36-57/info.md
Не забудьте проверить скрипт с помощью ShellCheck.
Задача. Выполнение сжатия созданного архива
tar-архивы только собирают внутри себя данных, но их сжатие не происходит по умолчанию. Доработайте скрипт, чтобы он выполнял сжатие данных.
Для сжатия данных используйте одно из следующих приложений:
bzip2gzipxz
После выполнения скрипта структура каталога должна выглядеть следующим образом:
$ tree -F info
info
├── backups/
│   └── 2020-10-25-15-36-57.tar.xz
└── data/
    └── info.md
Расширение файла должно соответствовать средству, которое использовалось для создания архива
bzip2:.tar.bz2gzip:.tar.gz,.tgzxz:.tar.xz,txz
Не забудьте проверить скрипт с помощью ShellCheck.
Задача. Использование tar для архивирования и сжатия файлов
Приложение tar позволяет одновременно собирать приложения в архив с последующим сжатием с помощью соответствующих приложений. Измените скрипт таким образом, чтобы tar и создавал архив и сжимал его. Необходимую информацию получите в руководстве tar.
Не забудьте проверить скрипт с помощью ShellCheck.
Задача. Создание скрипта для восстановления информации
Создайте скрипт restore.sh. Данный скрипт должен иметь следующую сигнатуру:
./restore.sh --archive ARCHIVE --destination PATH
  --archive ARCHIVE  path to the backup archive
  --destination PATH path to the directory to put the archive contents
С помощью аргумента --archive указывается путь к архиву, который надо использовать.
С помощью аргумента --destination указывается путь к каталогу, в котором следует развернуть содержимое архива. Перед разворачиванием архива целевой каталог должен быть очищен от содержимого.
Проверьте написанный скрипт с помощью ShellCheck.