フォルダー名に含まれるディレクトリーなしでフォルダー(tar)を圧縮する


21

tarコマンドでフォルダーを圧縮しようとしています。

私がそれを圧縮しようとしているとき、それはうまく働きます。問題はファイル名にあります。

ソースパス:

/data/file/

宛先パス:

/data/repo/temp/file.tar.gz

tar zcvf $srcpath $destinationpath

私は別のフォルダーからコマンドを実行していますが、フォルダーを抽出している間、ファイルフォルダーだけではなく、すべてのサブディレクトリを取得しています。


1
tar構文は次のとおりです。tar zcvf file.tar.gz /path/dir/to/compressコマンドを変更する必要があるかもしれませんが、必要tar zcvf $destinationpath $srcpathなものがわかりません。tarコマンドに期待するものの例を使用して、質問を詳しく説明していただけますか?
レティ14年

コメントのおかげで、私の問題は、ここで共有したコメント「tar zcvf file.tar.gz / path / dir / to / compres」に従うことです。同じディレクトリ「file」にいる場合、これはうまくいくはずですたとえば、/ home / testuser1 / file:fileは圧縮するフォルダーであり、ホームではなくルートからコマンドを実行しているため、フォルダーへのパス全体を指定する必要がある場合がありますファイルフォルダーではなく/ home / testuser1 / fileからすべてのサブディレクトリを取得しています
Seetha Raman 14年

おそらくタイプミスですが、あなたの例では、ソースと宛先を混同しました。
ジェイコブVlijm 14年

回答:


49

これを行う最も簡単な方法は、最初にディレクトリにcdすることです:

cd /path/to/containing/folder && tar -zcvf tarfile.tar.gz foldername_tocompress

(含む)フォルダーのディレクトリが圧縮ファイルのルートディレクトリになるようにします。

もう少し高度なのは、-Cオプションを使用することです。

tar -zcvf tarfile.tar.gz -C /path/to/foldername_tocompress .

これによりtar.gz、現在の(作業中の)ディレクトリにファイルが作成され、その中にfoldername_tocompressすべてのファイル/フォルダーが含まれます(ドットに注意して、すべてのファイル/フォルダーを含める必要があります)。


4
2番目のコマンドの最後にあるドットには、現在のディレクトリ内のすべてのファイルが含まれます...
David Duncan
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.