Распаковка кладёт каждый элемент по его пути от выбранного каталога и молча заменяет файлы с теми же именами.
Ключ -x распаковывает архив в текущий каталог, -C задаёт другой. Место файла — этот каталог плюс путь элемента: app/config/app.conf при -C restore станет restore/app/config/app.conf. Каталог из -C должен уже существовать, иначе tar откажет с ошибкой Cannot open: No such file or directory.
Файл с тем же именем tar заменяет без вопроса. Поэтому копию сначала распаковывают в отдельный промежуточный каталог, проверяют и только потом подменяют ею рабочую. Распаковка прямо в live затёрла бы и то, что в рабочей копии новее архива.
Владельцем распакованных файлов становится тот, кто распаковывает: у student — student, даже если в архиве записан root. Владельцев из архива восстанавливает только root. Права tar берёт из архива, но без ключа -p может их урезать: из rw-rw-rw- получится rw-rw-r--. С -p права будут ровно как в архиве.
Архив в /srv лежит на том же диске, что и приложение. От испорченного файла такая резервная копия спасёт, от потери диска — нет: копию на этот случай хранят на другом носителе — диске или машине.
В архиве есть элемент app/config/app.conf. Где окажется файл после этой команды?
tar -xpf app.tar -C restore
-
Откуда файл архивировали, tar не помнит: место задают каталог из
-Cи путь элемента. -
-C restoreменяет каталог распаковки, и путь элемента дописывается к нему целиком, сapp/config/. -
Путь элемента начинается с
app/: этот каталог появится внутриrestore.
Место файла — каталог из -C плюс путь элемента. До распаковки путь виден в tar -tf app.tar, после — в ls -R restore.
Главное в шаге
-
Файл ложится в каталог из
-Cпо своему пути из архива, а одноимённый файл tar заменяет молча. -
Владельцем распакованного становится тот, кто распаковывает;
-pпереносит права ровно как в архиве.