web-dev-qa-db-ja.com

tarでフォルダを圧縮しますか?

フォルダ(/var/www/)を~/www_backups/$time.tarに圧縮しようとしています。ここで、$timeは現在の日付です。

これは私が持っているものです:

cd /var/www && Sudo tar -czf ~/www_backups $time"

私は完全に迷子になっていて、ここに何時間もいます。 -czfが正しいかどうか不明です。 /var/wwwのすべてのコンテンツを$time.tarファイルにコピーするだけで、すべてのファイルのファイル権限を維持したいと思います。誰かが私を助けてくれますか?

298
qwerty

フォルダをtarおよびgzipする場合、構文は次のとおりです。

tar czf name_of_archive_file.tar.gz name_of_directory_to_tar

-はオプションです。現在のディレクトリをtarしたい場合は、.を使用して指定します。

ファイル名を作成するには、dateユーティリティを使用します(使用可能なフォーマットオプションについては、そのmanページをご覧ください)。例えば:

cd /var/www && Sudo tar czf ~/www_backups/$(date +%Y%m%d-%H%M%S).tar.gz .

これにより、20120902-185558.tar.gzのような名前のファイルが作成されます。

Linuxでは、tarオプションではなくjオプションを使用してzがBZip2圧縮もサポートしている可能性があります。そしておそらく他の人。ローカルシステムのマニュアルページを確認してください。

412
Mat

最も一般的な圧縮アルゴリズムの例

これに対する質問のタイトルは、単に「tarでフォルダを圧縮しますか?」です。このタイトルは非常に一般的ですが、質疑応答はより具体的であり、この質問は非常に多くの見解を集めているため、両方の例の最新のリストを追加することは有益だと感じました一般的に使用されるさまざまな圧縮アルゴリズムを使用したアーカイブ/圧縮および抽出/解凍。

これらはUbuntu 18.04.4でテストされています。これらは一般的に使用する場合は非常にシンプルですが、上記の承認された回答と役立つコメントの手法を使用して、OPのより具体的な質問コンテンツに簡単に統合できます。

より一般的な読者向けの注意点の1つは、tarが必要な拡張子(.tar.gzなど)を自動的に追加しないことです。以下のコマンドに示すように、ユーザーは明示的に追加する必要があります。

# 1: tar (create uncompressed archive) all files and directories in the current working directory recursively into an uncompressed tarball
tar cvf filename.tar *

# 2: Untar (extract uncompressed archive) all files and directories in an uncompressed tarball recursively into the current working directory
tar xvf filename.tar

# 3: tar (create gzipped archive) all files and directories in the current working directory recursively into a tarball compressed with gzip
tar cvzf filename.tar.gz *

# 4: Untar (extract gzipped archive) all files and directories in a tarball compressed with gzip recursively into the current working directory
tar xvf filename.tar.gz # Note: same options as 2 above

# 5: tar (create bzip2'ed archive) all files and directories in the current working directory recursively into a tarball compressed with bzip2
tar cvjf filename.tar.bz2 * # Note: little 'j' in options

# 6: Untar (extract bzip2'ed archive) all files and directories in an tarball compressed with bzip2 recursively into the current working directory
tar xvf filename.tar.bz2 # Note: same options as 2 and 4 above

# 7: tar (create xz'ed archive) all files and directories in the current working directory recursively into a tarball compressed with xz
tar cvJf filename.tar.xz * # Note: capital 'J' in options

# 8: Untar (extract xz'ed archive) all files and directories in an tarball compressed with xz recursively into the current working directory
tar xvf filename.tar.xz # Note: same options as 2, 4, and 6 above

詳細については、tar man page (特定のマシンでman tarを使用するのが最適)を参照してください。以下では、上記のオプションをmanページから直接要約しています。

-c、-create
新しいアーカイブを作成します

-x、-extract、-get
アーカイブからファイルを抽出

-v、-verbose
処理されたファイルの詳細なリスト

-z、-gzip
gzipでアーカイブをフィルタリングします

-j、-bzip2
bzip2でアーカイブをフィルタリングします

-J、-xz
xzでアーカイブをフィルタリングします

-f、-file = ARCHIVE
アーカイブファイルまたはデバイスARCHIVEを使用

結合されたオプションの前に-を追加したり、fオプションとファイル名の間に=記号を追加したりする必要はありません。

これはすべて、最近の article から取得したものであり、作業する時間があるので、より包括的な記事にさらに拡張されます。

3
Xitalogy