2

Я хочу просто глупую, простую вещь. ZIP весь контент данного каталога.

Что я получаю в результате:

zip -r /home/andi/MEDIA_DUMPS/xyz_media.zip /home/andi/xyz/mega_backend/mega_www/media

Является следующее:

➜  home  tree -L 5
.
└── andi
    └── xyz
        └── mega_backend
            └── mega_www
                └── media
                    ├── csv
                    ├── editor
                    └── img

пока хочу именно этого:

➜  media  tree -L 1
.
├── csv
├── editor
└── img

МОЙ AD-HOC ПУТЬ ВОСПОЛЬЗОВАТЬСЯ TAR:

tar -cjf /home/andi/MEDIA_DUMPS/xyz_media.tar.gz -C /home/andi/xyz/mega_backend/mega_www/media .

на основе: https://stackoverflow.com/questions/18681595/tar-a-directory-but-dont-store-full-absolute-paths-in-the-archive

3 ответа3

2

Как мне сжать только файлы, а не всю структуру каталогов?

Используйте опцию -j (нежелательные пути).


zip: упаковывать и сжимать (архивировать) файлы

-j
--junk-paths
      Store  just the name of a saved file (junk the path), and do not
      store directory names. By default, zip will store the full  path
      (relative to the current directory).

...

Вы можете создать zip-архив, содержащий файлы в foo, без записи имени каталога, foo.

Вы можете использовать опцию -j, чтобы не указывать пути, как в:

zip -j foo foo/*

Исходный zip: Пакет и сжатие (архив) файлов:

1
Zip command is:
zip -jr /home/jack/Desktop/Backup/20180314/032256.zip /home/jack/Desktop/bopy`

Это создает почтовый файл без целой папки в нем. Флаг "-jr" или "zip -j -r .... zip /.."/..»

1

Пытаться

find /home /andi /xyz /backend /media -type f -print | zip -j name.zip - @

найти ищет файлы и отправляет их в архив. -j означает нежелательный путь & - @ говорит zip читать со стандартного ввода.

Надеюсь, это было полезно.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .