web-dev-qa-db-ja.com

bashを使用してすべてのディレクトリをアーカイブする方法は?

私はbashをゆっくりと学ぼうとしていますが、私が使いたいものに合う実際の単語の例がなければ、より技術的な側面を把握するのは難しいと感じています。そのために、bash(および7Zip)を使用して、オンラインで保存する準備として写真をアーカイブする方法を知りたいと思います。

基本的に、これは各ディレクトリの.7zアーカイブを作成し、各アーカイブに関連するディレクトリと同じ名前を割り当てるのと同じくらい「単純」だと思います。重要な場合は、すべてのディレクトリにスペースなしで名前が付けられています。

すべてのアドバイスに感謝します。

1
Tay

foo.7zを使用してディレクトリfoo7zという名前のアーカイブに圧縮する方法は、コマンドa( "add")を使用することです。

7z a foo.7z foo

複数のディレクトリに対してこれを行うには、ループを使用できます。

for dir in foo bar baz; do
    7z a "$dir".7z "$dir"
done

(これは、スペースを含むディレクトリ名に対しては安全です。$dirが引用符で囲まれているためですが、ダッシュで始まるディレクトリ名に対しては安全ではありません。その結果、7zはそれらをオプションとして解釈しようとします。)

アーカイブするディレクトリの名前がパターンを共有している場合は、すべてのディレクトリを明示的にリストする代わりに、forループでそれを使用できます。 for dir in [0-9][0-9][0-9][0-9][0-9][0-9]-*; ...

7zのドキュメントでは、所有権情報が保持されていないため、Unixでのアーカイブ目的で7z形式を使用しないように警告されていることに注意してください。これはあなたにとって重要かもしれないし、そうでないかもしれません。

4
dhag