Tarを使用して絶対パスを相対パスに変換するには?

Tarを使用して絶対パスを相対パスに変換するには?

これはマイコンピュータにファイルとして保存されますが、先生も自分のコンピュータにコンパイルする必要があります。これまでのコードです。 3つのファイルをTARファイルに圧縮しようとしています。

#!/bin/bash

dd if=/dev/zero of=file.txt  bs=1701KB  count=1
dd if=/dev/zero of=filee.txt  bs=1780KB  count=1
dd if=/dev/zero of=fileee.txt  bs=1800KB  count=1

echo 'i dont really care at all about any of this' >> file.txt

echo 'just trying things out for fun' >> filee.txt

echo 'this is really boring i dont like it' >> fileee.txt

tar -czvf archive.tar.gz  /home/melwhiteastonia/file.txt /home/melwhiteastonia/filee.txt /home/melwhiteastonia/fileee.txt


gzip -l archive.tar.gz

答え1

-Cオプションを使用してtar関連する作業ディレクトリに変更し、ファイル名を指定します。

tar -C /home/melwhitesastonia -cvzf archive.tar.gz file.txt filee.txt fileee.txt

$PWD/archive.tar.gzアーカイブを同じディレクトリに配置したくない場合は、アーカイブへの絶対パス(たとえば)を指定する必要があります。また、-ztarのフラグはすでにそうしているので、gzipで圧縮する必要はないことに注意してください。

また、ファイルをアーカイブのルートに直接配置するのではなく、適切な名前のディレクトリにファイルを配置するのが慣例的であり、ユーザーにとっては優れています。ファイルの代わりにディレクトリ名を指定し、オプションからディレクトリコンポーネントを削除するだけです-C

答え2

引数を使用すると、--transform次の操作を実行できます。

tar -czv --transform 's:home/melwhiteastonia/::g' -f archive.tar.gz \
    /home/melwhiteastonia/file.txt \
    /home/melwhiteastonia/filee.txt \
    /home/melwhiteastonia/fileee.txt

正規表現はとにかく先行が削除されるhome/melwhiteastonia/からです。tar/

関連情報