ekstrak yang mungkin tanpa direktori pertama


29

Ketika mengekstraksi file tar.gz di ansible saya berakhir dengan direktori pertama

- name: Extract archive
  unarchive: src=file.tar.gz
             dest=/foo/bar

yang menghasilkan /foo/bar/bar-version-someFirstLevelFolder/contentOfArchive Bagaimana saya bisa mencegah membuat level hirarki tambahan ini?


Mungkin tidak relevan tetapi saya tahu Anda kadang-kadang perlu berhati-hati dalam menambahkan garis miring ke direktori tujuan. Apakah itu membantu?
SauceCode

Jawaban:


40

Untuk menghapus, bar-version-someFirstLevelFolderAnda harus menggunakan --strip-components=1opsi ini tar. Jadi buku pedoman Anda akan terlihat seperti

- name: Extract archive
  unarchive:
    src: file.tar.gz
    dest: /foo/bar
    extra_opts: [--strip-components=1]

1
Ini sepertinya jawaban yang benar, tetapi saat ini dapat menyebabkan crash. Lihat laporan bug ini: github.com/ansible/ansible/issues/29657 solusi perantara adalah dengan menghapus untar di direktori induk dan kemudian memilikicommand: mv /foo/bar-version-someFirstLevelFolder/* foo/bar/
TheAtomicOption

Diuji dalam versi terakhir, itu berhasil. Tapi, unarchive bukan idempoten.
Jérôme B
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.