Состояния страницы справочника
-C directory
In c and r mode, this changes the directory before adding the following files.
Однако tar не изменяется на каталог, который я указываю, но вместо этого сообщает
tar: <folder name>: Cannot stat: No such file or directory
для каждой папки в каталоге я выполняю команду tar в.
Сделайте я действительно должен сделать что-то как
cd <folder> && tar ... && cd -
или есть ли способ получить эту работу?
Я думаю, что Вы не можете использовать -C
опция как Вы предполагает в этом вопросе.
Раздел 6.10.1 Changing the Working Directory
в руководстве GNU для tar
описывает -C
опция как это,
Изменить рабочий каталог посреди списка имен файлов, или на командной строке или в файле, указанном с помощью ‘-файлов - от’ (‘-T’), использование ‘-каталог’ (‘-C’). Это изменит рабочий каталог на указанный каталог после той точки в списке.
‘--directory=directory’
‘-C directory’
Изменяет рабочий каталог посреди командной строки.
Например,
$ tar -c -f jams.tar grape prune -C food cherry
поместит файлы 'виноград' и 'чернослив' из текущего каталога в архив ‘jams.tar’, сопровождаемый файлом 'вишня' из каталога 'еда'. Эта опция особенно полезна, когда у Вас есть несколько широко разделенных файлов, которые Вы хотите хранить в том же архиве.
Обратите внимание, что файл 'вишня' зарегистрирован в архиве под точным именем 'вишня', не 'еда/вишня'. Таким образом архив будет содержать три файла, что все, кажется, произошли из того же каталога; если архив будет извлечен с простым ‘tar - извлечение’, то все три файла будут записаны в текущем каталоге.
Существует еще несколько примеров в странице руководства...
Обновление:
Я обычно не перепутываю файлы от различных путей к единственному шару tar.
Однако, если, именно это Вы требуете, существует две вещи, которые могут быть сделаны,
-T
опция со списком каталогов/файлов Вы хотите упаковать вместе.-h
опция на 'ссылке отображает' каталог-h
опция, используемая на таком каталоге, создаст единственный шар tar, который представляет расположение файла в соответствии с тем каталогом.Лично, я предпочитаю использовать подоболочки для получения tar в "положение". Я никогда не учился -C
опция, таким образом, я не уверен, как она работает.
Предположите, что мой CWD является/path/a, и я хочу создать tarball/path/b/foo без продвижения/path/b:
user@host:/path/a$ ( cd /path/b && tar czf ~/tarball.tgz foo )
user@host:/path/a$
Получающийся tarball содержит каталог, foo/и все его содержание, но не продвижение/path/b. Подоболочка выполняет CD, затем tar, если CD успешно выполняется, то выходы назад к моей исходной оболочке в том же CWD.