создать плоский архив tar: игнорирование всех родителей при добавлении папок

Я хочу добавить несколько папок (рекурсивно) в новый tar-архив. Все папки должны находиться на корневом уровне полученного архива. Есть ли способ добавить все папки без их родителей и без использования cd in в свои каталоги и добавить их шаг за шагом?

Рассмотрим следующую структуру каталогов

  • операция tar '-u'
  • tar-экстракт зависает от несуществующего файла
  • Как проверить архив tar, который уже написан?
  • Создать tar-архив каталога, кроме скрытых файлов?
  • tar --exclude флаг, не исключая каталог, если я добавляю конечную косую черту '/' в конце пути
  • Эффективность tar -xf для большого количества файлов
  •  . ├── bar │  ├── bar-file │  └── barsub │  └── barsub-file └── foo ├── foo-file └── foosub └── foosub-file 

    Я хотел бы добавить bar и foosub в tar-архив.

     # add folders with different parents # could be eg /some/foo/foosub and /other/bar as well $ tar cvf archive.tar bar foo/foosub a bar a bar/bar-file a bar/barsub a bar/barsub/barsub-file a foo/foosub a foo/foosub/foosub-file 

    но я хотел

     . ├── bar │  ├── bar-file │  └── barsub │  └── barsub-file └── foosub └── foosub-file 

    Есть ли простой способ создания такого плоского tar-архива?

  • Что делает параметр -f в команде tar
  • Как отобразить индикатор выполнения для инкрементных архивов tar?
  • tar-архив с определенным порядком распаковки
  • Создать tar-архив каталога, кроме скрытых файлов?
  • как добавить файлы из папки в архив вместо самих папок?
  • tar без опции -f при извлечении
  • 2 Solutions collect form web for “создать плоский архив tar: игнорирование всех родителей при добавлении папок”

    С помощью GNU или FreeBSD tar вы можете применить преобразование к именам файлов при добавлении их в архив (или извлечении их).

     tar czf foo.tgz --transform='!^bar/!!' bar/ foo 

    В переносном режиме вы можете сделать то же самое с pax .

     pax -w -pe -s'!^bar/!!' foo bar/ 

    tar cvf archive.tar bar -C /path/to/foo/ .

    Linux и Unix - лучшая ОС в мире.