私の環境を展開可能にするために、時には便利なファイルとスクリプトを圧縮します。
tar -czvf env.tgz .vimrc .vim/ bin/lsl bin/s
ここに追加したいのですが、.bashrc
その中に機密情報があるので、.bashrc-deploy
その情報を保持してから新しいサーバーにタールボールがある場合は、単に名前を変更できます。しかし、私はタールボールが.bashrc
最初から正しい名前を持つことを望んでいるので、名前を変更する必要はありません。私は一時的にファイル名を変更し、次のようにタルボールを作成するスクリプトを書くことを検討しました。
#!/bin/bash
mv .bashrc .bashrc-real
mv .bashrc-deploy .bashrc
tar -czvf env.tgz .bashrc .vimrc .vim/ bin/lsl bin/s
mv .bashrc .bashrc-deploy
mv .bashrc-real .bashrc
しかし、名前をタールボールに保存するtar
内部方法はありますか?someFile
anotherName
ベストアンサー1
pax
(tar
標準(POSIX)コマンドを使用してアーカイブを作成)を使用してオプションをbsdtar
確認します。-s
pax -s '/\.bashrc-deploy/.bashrc/' -w -x ustar . | gzip > a.tar.gz
bsdtar -s '/\.bashrc-deploy/.bashrc/' -zcf a.tar.gz .
ただし、上記のコードは、.bashrc-deploy
文字列を.bashrc
アーカイブに追加したいメンバーのファイルパスに置き換えることに注意してください。./.bashrc-deploy
現在のディレクトリにあるものだけを置き換えるには、次のように作成する必要があります。
pax -s '|^\./\.bashrc-deploy$|./.bashrc|' -w -x ustar .
(POSIX pax仕様を読んでみましたが、すべてのpax実装がこのように動作することを保証することはできません。実装は1つだけなので、bsdtarでも機能する必要があります。)