Вывести архив tar в определенный путь в bash-скрипте - PullRequest
0 голосов
/ 11 апреля 2019

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

Следующая команда tar выводит файл в нужную папку, но делает полученный архив вложенным с полным путем, ведущим к нему.

например, Insideмой tar-файл У меня есть следующие папки: full / path / to / file

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

Вот код:

...
local PROJECTS=(~/path/to/folder/*)
...
local PROJECT_PATH="${PROJECTS[$i]}"
local BACKUP_NAME=`date +%d%b%y`.tar.gz
echo Making folder "${PROJECT_PATH}"/backups
tar -czvf $PROJECT_PATH/backups/$BACKUP_NAME $PROJECT_PATH --exclude="${PROJECT_PATH}"/node_modules --exclude="${PROJECT_PATH}"/backups

1 Ответ

1 голос
/ 12 апреля 2019

Если вы хотите, чтобы tar сохранял пути относительно некоторого каталога, используйте -C, чтобы перейти к этому каталогу, и укажите относительные пути:

tar -czvf "$PROJECT_PATH/backups/$BACKUP_NAME" -C "$PROJECT_PATH" . --exclude=./node_modules --exclude=./backups

-C "$PROJECT_PATH" указывает tar изменить накаталог $PROJECT_PATH, а следующий . указывает ему архивировать текущий каталог.

...