ルートディレクトリからtar.gzでファイルをパックする


8

ルートディレクトリにいるときに、tar.gzで.csvファイルをパックしようとしました。

ファイルmyfile.csvは次の場所にあります。/mnt/sdb1/ 完全なファイル名は/mnt/sdb1/myfile.csv

私はtar.gzを下に保存しようとします /mnt/sdb1/old_files

私はこのようにしてみました:

tar -czf /mnt/sdb1/old_files/new.tar.gz mnt/sdb1/myfile.csv

しかし、ファイルを抽出すると、「mnt」という名前のフォルダーが抽出されます。このフォルダーには、ファイルを含む「sdb1」という別のフォルダーが含まれています。

すべてのディレクトリをコピーするのではなく、ファイルのみを圧縮することは可能ですか?

回答:


12

次の--directoryオプションを使用しますman tar

-C、--ディレクトリDIR

ディレクトリDIRに移動します

つまり:

tar -C /mnt/sdb1/ -czf /mnt/sdb1/old_files/new.tar.gz myfile.csv

フィクシーマンありがとう!これで問題は解決しました。私は15の評判があるとすぐに賛成票を投じます。
ブラック

3

最初にcd /mnt/sdb1、次にtarコマンドを起動する必要があります。

参考までtarに、tarball内のいくつかのファイルを凝集させることを目的としているため、ここで使用する必要はありません。ここにはファイルが1つしかないので、を使用してくださいgzip


わかっていますが、スクリプトからコマンドを実行するため、ルートディレクトリから実行する必要があります。
ブラック

1
だから、cdtarにコマンドを追加するだけで、前に戻るか、cd /mnt/sdb1 && tar -czf new.tar.gz myfile.csv && cd /1行のcmdを使用したい場合に使用できます。
McSinyx

@McSinyx問題は、ディレクトリが保存されないことcd /mnt/sdb1/です。実行しても、コマンドの次の実行時に再びルートディレクトリに移動します。しかし、あなたの2番目の解決策は私にとって論理的に見えます。私はそれを試します。
ブラック

@McSinyx NICE!それは動作します:)ありがとう、これは非常に便利です!
ブラック

@EdwardBlackどこからでもスクリプトを実行できます。関連する絶対パスを追加するだけです。一般に、相対パスを使用すると、物事が簡単に壊れる可能性があるため、お勧めできません。
dr_

1

-Cオプションを使用してtar します。

   -C Directory
        Causes the tar command to perform a chdir subroutine to the
        directory specified by the Directory variable.
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.