selama membongkar dengan tar sembunyikan pesan kesalahan: 'tar: Menghapus awalan `/' dari nama anggota 'untuk arsip yang dibuat dengan --absolute-names

1

Itu bukan duplikat, pertanyaan lain tentang stackexchange adalah tentang menyingkirkan pesan ini saat arsip dibuat.

Apakah mungkin, mengingat arsip yang dibuat dengan -Popsi (dengan memimpin `/ ')?

Saya memiliki arsip yang dibuat dengan " --absolute-names" ( -Popsi) - dengan leading /.

Saya ingin membongkarnya, dengan / dilucuti (tar melakukannya secara default).

Ini hampir ideal, tetapi saya ingin membungkam:

tar: Removing leading `/' from member names.

tanpa menghapus pesan lain (jadi kekerasan dalam bentuk 2>/dev/nullbukan solusi).

Saya menemukan beberapa solusi bagaimana membungkam pesan ini selama membuat arsip tetapi tidak ada untuk membongkar. Saya tahu tentang grep -vtetapi itu akan (a) menyembunyikan kode kesalahan dari tar (b) menambahkan kode kesalahan sendiri jika pesan tentang / tidak dilucuti.

Situasi ini dapat direplikasi dengan

cd /home/user/tmp
touch a.txt
mateusz@Grisznak:~/Desktop/tmp$ tar --create -P /home/user/tmp > a.tar
mateusz@Grisznak:~/Desktop/tmp$ tar --extract --file=a.tar 

Untuk menghindari masalah XY: Saya membongkar arsip yang dibuat oleh backupgem ( http://backup.github.io/backup/v4/ ).

Mateusz Konieczny
sumber

Jawaban:

1

Ini tampaknya melakukan apa yang Anda inginkan:

tar --extract --xform 's/^\///' --file=a.tar

Per halaman manual:

--transform, --xform EXPRESSION
      use sed replace EXPRESSION to transform file names

Jadi masih menghapus garis miring, tetapi tidak membicarakannya.

Tom Zych
sumber