GNU/Linux >> Linux の 問題 >  >> Linux

圧縮 tar 内の単一ファイルの更新

更新するファイルがテキスト ファイルの場合。次に、 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


Linux
  1. 1 つのコマンドで .tar.gz ファイルを開く

  2. 1TB のスパース ファイルのコピー

  3. 単一のファイルを RSYNC するには?

  1. filename.tar.gz ファイルを抽出する方法

  2. 無効な圧縮データ -- 形式に違反していますか?

  3. ワイルドカード ファイル パターンを指定した tar -C

  1. Tar:サブフォルダーを作成せずに単一のファイルをディレクトリに抽出しますか?

  2. *.tar.bz2 ファイルを抽出していますか?

  3. rsync による単一ファイルの転送の再開