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

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

Bashをゆっくり学習しようとしていますが、実際に使用したい例がなければ、より技術的な側面を理解するのは難しいです。これを行うには、オンライン保存を準備するためにbash(および7zip)を使用していくつかの写真を保存する方法を知りたいです。

本質的に、各ディレクトリに.7zアーカイブを作成し、各アーカイブに問題のディレクトリと同じ名前を割り当てるのと同じくらい「簡単」だと思います。重要な場合、すべてのディレクトリの名前はスペースなしで指定されます。

すべての提案に感謝します。

答え1

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

7z a foo.7z foo

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

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

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

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

7z ドキュメントでは所有権情報を保存しないため、Unix でのアーカイブに 7z 形式の使用について警告します。これはあなたにとって重要かもしれませんし、重要ではないかもしれません。

関連情報