約 200 GB の大容量の tar ファイルにつながる URL があり、Linux システムでそのファイルの 1 つのフォルダーを抽出する必要があります。ファイル サイズが大きいため、ファイル全体を Linux システムにダウンロードしたくありません。また、ソース システムへの shh アクセスもありません。
tar.gz ファイルの一部だけを抽出する方法はありますか?
答え1
特定のディレクトリのみを抽出するには、正確なファイル名を知る必要があります。ワイルドカードはtarでは機能しません。コマンドは次のようになります。
curl -s -o - <URL>|tar xz /path/file1 /path/file2 ...
答え2
このtar
フォーマットでは、ファイル(またはディレクトリ)を直接指定することはできません。これは、t猿archives はバックアップ メディアから順番に読み取られることを目的としていました。
もちろん、関連部分を抽出した後でプロセスを停止することもできます。次のようなことをします。
curl -o - 'http://your/url' | tar -xvz your_filter
これにより、ファイルが最初からダウンロードされ、関連する部分が抽出されます。必要なものがすべて揃ったら、プロセスを停止して残りのダウンロードを回避することができます。
ソース サーバーへのアクセス権の種類によっては、さらに良い方法があるかもしれません: 保存モードのない PHP をお持ちですか? そうであれば、必要なものを およびshell_exec
フレンド経由で抽出できます。