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?

Georg Heiler
sumber
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]
GMaster
sumber
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