Tar - Hapus Awalan Umum Saat Membuat Arsip

1

Saya mencoba untuk menambah konten sistem file root, yang terletak di $rootfs. Masalahnya adalah, ketika saya mencoba tar -c $rootfs > $dest, direktori antara direktori saya saat ini dan sistem file yang sebenarnya tetap ada. Jadi alih-alih etc/fstab, saya punya fun/rootfs/path/etc/fstabwaktu rootfs=fun/rootfs/path, untuk setiap file tunggal.

Saya tahu --strip, tetapi masalahnya adalah $rootfsvariabel relatif-jalur, jadi saya tidak tahu berapa banyak direktori antara sistem file dan direktori saya saat ini. Saya tidak bisa cdkarena alasan yang sama; $destadalah variabel relatif-jalur dan saya harus tetap di direktori saat ini untuk membuat arsip di lokasi yang tepat.

Apakah ada cara saya bisa mengabaikan rootfsjalur saat membuat arsip?

Tanaki
sumber

Jawaban:

2

Anda bisa membuat daftar file relatif ke $rootfsjalur dan kemudian gunakan -C $rootfs -T <file-of-filenames>untuk membuat arsip. Anda tidak dapat menggunakan wildcard untuk menghasilkan daftar file pada baris perintah tar karena itu tidak akan selesai dengan benar. Anda bisa menggunakan sesuatu seperti find atau ls untuk melakukannya.

Etan Reisner
sumber
2

Saya tidak yakin saya mengerti pertanyaannya, tetapi bagaimana

(cd "$rootfs"; tar -c .) > "$dest"

jadi tarberjalan di $rootfsdirektori, tetapi $destdibuat relatif ke direktori saat ini.

Scott
sumber