как я использую tar-C на Snow Leopard при создании архива?

Состояния страницы справочника

-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 -

или есть ли способ получить эту работу?

4
задан 06.06.2010, 10:09

2 ответа

Я думаю, что Вы не можете использовать -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.
Однако, если, именно это Вы требуете, существует две вещи, которые могут быть сделаны,

  1. Используйте -T опция со списком каталогов/файлов Вы хотите упаковать вместе.
    Это соберет все вещи вместе с дополнительными префиксами пути.
  2. Используйте -h опция на 'ссылке отображает' каталог
    (Вы делаете одного из тех, которые имеют сценарий для создания ссылок на файлы и каталогов интереса в соответствии с новым и пустым каталогом),
    -h опция, используемая на таком каталоге, создаст единственный шар tar, который представляет расположение файла в соответствии с тем каталогом.
2
ответ дан 07.12.2019, 20:47

Лично, я предпочитаю использовать подоболочки для получения 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.

1
ответ дан 07.12.2019, 20:47

Теги

Похожие вопросы