更新するファイルがテキスト ファイルの場合。次に、 vim
を使用できます vim エディターを使用してフォルダーを開くのと同じように、エディターを直接使用してファイルを含む tarball を開き、それを開きます。次に、ファイルを変更して保存し、終了します。
ただし、ファイルがバイナリの場合。解決策がわかりません。
ええと、答えが見つかりました。
tar -u
は使用できません 圧縮されたアーカイブで。したがって、私が使用した解決策は次のとおりです。 z.jar
を移動したことに注意してください ファイルを application/x/y
という現在のディレクトリに作成したフォルダーに
gzip -d application.tar.gz
tar -uf application.tar application/x/y/z.jar
gzip application.tar
tar -tf application.tar
をしたとき (更新後、gzip の前) 正しく表示されました。
私の場合、ファイルを削除してから、次の手順で新しいファイルを追加する必要がありました:
私のtarファイル
file.tar
└── foo.json
└── bar.json
└── dir
└── zoo.json
foo.json
のみを変更/更新したかった tar ファイル全体を抽出して再作成せずにファイル file.tar
、コマンドは次のとおりです:
tar -x -f file.tar foo.json # extract only foo.json file to my current location
# now modify the file foo.json as you want ...
tar --delete -f file.tar foo.json # delete the foo.json file from the file.tar
tar -uf file.tar foo.json # add the specific file foo.json to file.tar
圧縮ファイル:
file.tar.gz
のような圧縮ファイルの場合 gunzip file.tar.gz
を使用して、圧縮ファイル (この例では gzip) から tar ファイルを抽出する必要があります。 これにより、tar ファイル file.tar
が作成されます .その後、上記を行うことができます
最後に gzip file.tar
を使用して、tar ファイルを再度圧縮する必要があります。 file.tar.gz
という名前の圧縮ファイルが作成されます
サブ ディレクトリ:
サブ ディレクトリを処理するには、ファイル システムでも同じ構造を維持する必要があります:
tar -x -f file.tar dir/zoo.json
# now modify the file dir/zoo.json as you want ...
tar --delete -f file.tar dir/zoo.json
tar -uf file.tar dir/zoo.json
ファイル構造を表示:
less
を使用して コマンドを使用すると、ファイルの構造を表示できます:
less file.tar
drwxr-xr-x root/root 0 2020-10-18 11:43 foo.json
drwxr-xr-x root/root 0 2020-10-18 11:43 bar.json
drwxr-xr-x root/root 0 2020-10-18 11:43 dir/zoo.json