web-dev-qa-db-ja.com

ディレクトリ内のすべてのファイルを個別のZipファイルに再帰的に圧縮します...ただし、別のディレクトリに保存します

同様の質問がありましたが、探しているものが正確に見つかりませんでした。基本的に、サブディレクトリと多数のファイルを含む大きなディレクトリがあり、各ディレクトリとサブディレクトリに再帰的に移動して、各ファイルを個別に圧縮したいと思います。私はこの解決策を見つけましたが、それは私が望むものではありません:

find . -type f -execdir Zip '{}.Zip' '{}' \;

ソース

これにより、Zipファイルが元のディレクトリに出力されます。ただし、Zipファイルは完全に別のディレクトリにありますが、ディレクトリ構造は同じで、結果のZipファイルのみが必要です。誰かがこれを手伝うことができますか?

2
Aweston

次のように、Zipファイルの場所への相対パスを前に付けることができます。

find . -type f -exec Zip -D '../zipdir/{}.Zip' '{}' \; 

必要に応じて、ディレクトリ構造を作成するには、次のようにします。

find . -type d -exec mkdir -p '../zipdir/{}' \;
2
Stephen Rauch

Zipファイルと結婚していない場合は、マウント可能なディレクトリツリー全体のsquashfsイメージを作成することもできます(特定のZipファイルを開いて調べてそこにあるものを確認する必要はありません)。多数の個別のZipファイルではなく、「ソリッド」アーカイブのようにツリー全体をまとめて表示するため、圧縮率も向上する可能性があります。

基本的には、squashfs-toolsパッケージ(Debian/Ubuntuではこれと呼ばれています。Linuxファミリごとに異なる名前である可能性があります)が必要です。

mksquashfs /some/directory  archive.squashfs

そしてそれをマウント/表示/閲覧するには:

mount archive.squashfs /mnt/mountpoint -t squashfs

-tフラグはオプションの場合もあり、mountはタイプを自動的に把握するのに非常に優れています。 -o loopフラグも必要ありませんが、必要な場合に備えて試してください。

http://tldp.org/HOWTO/SquashFS-HOWTO/creatingandusing.html を参照するか、 squashfsの使用方法 を検索してください。

0
Xen2050