定期的なバックアップの一部として、ext4
ファイルシステムのコンテンツをrsync
ingする効率的な方法を見つけようとしていますが、適切な圧縮と最小限の必要なスペースを考慮しています。
プレーンなrsync
を使用してからtar
/gzip
を使用して結果のディレクトリを作成できますが、圧縮自体は前のrsyncよりも桁違いに遅くなります。
squashfs
などは読み取り専用であるため、使用できません。
btrfs
やreiser4
などの組み込みの圧縮を使用して、このバックアップ用に特別なタイプのパーティションを作成できますが、特定のサイズで作成する必要があり、拡張できません。
圧縮機能が組み込まれたコンテナで、サイズを透過的かつ自動的に調整するデータの量に応じて同期されるテクノロジーがあるのだろうか?
ちなみに私はDebianGNU/Linuxを使っています。
@Tetsujinは私に正しい方向を教えてくれました、OS X
のsparse
バンドル/イメージLinuxではアナログがあり、これは スパースファイル です。
スパースファイルは、その中のデータが大きくなるにつれて大きくなります。 btrfs など、圧縮機能が組み込まれた最新のバリアントを含む、任意のLinuxファイルシステムを含めることができます。
以下に、スパース圧縮btrfsイメージを作成する方法を示します。 btrfs Debianおよびその派生物(Ubuntuなど)でのサポートは、btrfs-toolsパッケージ(Sudo apt-get install btrfs-tools
)。速度とサイズを比較するために、まばらなext4画像も追加しました。すべての操作はDebian7.8 Wheezy(2015年4月30日時点で旧安定)で実行されました。
任意のサイズの空のスパースファイルを作成します。 5テラバイトとします。
me@wheezy:~$ truncate -s 5T ext4.sparse btrfs.sparse
それらをフォーマットします
to ext4:
me@wheezy:~$ mkfs.ext4 ext4.sparse
mke2fs 1.42.5 (29-Jul-2012)
<...>
Allocating group tables: done
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done
to btrfs:
me@wheezy:~$ mkfs.btrfs btrfs.sparse
WARNING! - Btrfs Btrfs v0.19 IS EXPERIMENTAL
WARNING! - see http://btrfs.wiki.kernel.org before using
fs created label (null) on btrfs.sparse
nodesize 4096 leafsize 4096 sectorsize 4096 size 5.00TB
Btrfs Btrfs v0.19
マウントポイントを作成します。
me@wheezy:~$ mkdir ext4_mount btrfs_mount
それらをマウントします。 loop
オプションを忘れないでください:
ext4:
me@wheezy:~$ Sudo mount -o loop -t ext4 ext4.sparse ext4_mount/
btrfs(compress
オプションを忘れないでください(zlib
またはlzo
の場合があります)):
me@wheezy:~$ Sudo mount -o loop,compress=lzo -t btrfs btrfs.sparse btrfs_mount/
これで、ファイルシステムが作成およびマウントされ、OSには5 TB)と表示されますが、実際にはほとんどスペースを取りません。
df:
me@wheezy:~$ df -h | grep _mount
/dev/loop0 5.0T 189M 4.8T 1% /home/a/ext4_mount
/dev/loop1 5.0T 120K 5.0T 1% /home/a/btrfs_mount
d:
me@wheezy:~$ du -h *.sparse
4.3M btrfs.sparse
169M ext4.sparse
テストの目的で、繰り返しパターンを持つ巨大な1.3GBのテキストファイルを作成しました。新しく作成された両方のファイルシステムにcp
されます。
ext4:
me@wheezy:~$ time Sudo cp /store/share/bigtextfile ext4_mount/
real 0m12.344s
user 0m0.008s
sys 0m1.708s
btrfs:
me@wheezy:~$ time Sudo cp /store/share/bigtextfile btrfs_mount/
real 0m3.714s
user 0m0.016s
sys 0m1.204s
前のステップで見たように、btrfsは、古き良きext4よりも、高度に圧縮可能なデータの転送中にはるかに高速であることが証明されました。それらのサイズを確認しましょう:
me@wheezy:~$ df -h | grep _mount
/dev/loop0 5.0T 1.5G 4.8T 1% /home/a/ext4_mount
/dev/loop1 5.0T 46M 5.0T 1% /home/a/btrfs_mount
btrfsスペース効率がはるかに高いことが証明されました。最後に、スパースファイルのサイズも確認しましょう。
me@wheezy:~$ du -h *.sparse
50M btrfs.sparse
1.4G ext4.sparse
それでおしまい。必要に応じて、スパースファイルをさらに拡大することができます。 btrfsはオンラインでもサイズ変更できます。
定期的なrsync
バックアップのためのクールなソリューション。ただし、btrfs
はまだ実験的なファイルシステムであるため、これらのファイルもバックアップすることを忘れないでください。
Arch Wikiの詳細情報: https://wiki.archlinux.org/index.php/Sparse_file および https://wiki.archlinux.org/index.php/Btrfs ==
.sparsebundleまたは.sparseimageがおそらく必要なものです...
スパースバンドルは、Mac OSX10.5Leopard®(.sparsebundle)で導入されたディスクイメージ形式です。スパースイメージ(.sparseimage)と同様に、スパースバンドルは読み取り/書き込み形式であり、ディスクイメージは、作成時に定義された制限まで、含まれるデータと同じ量のスペースしか占有しません。スパースバンドルは、スパースイメージよりも効率的に圧縮されます。つまり、スパースバンドルでは、同等のスパースイメージよりも未使用の空き領域を再利用する方が高速です。
スパースイメージとスパースバンドルの両方にファイルシステムが含まれていますが、スパースバンドルはバンドルバックされています。つまり、関連するリソースをグループ化するために、特殊な階層ディレクトリ構造を採用しています。スパースバンドル内のbandsサブディレクトリには、ディスクイメージ内に保存された実際のデータが含まれています。
Leopardでは、ホームフォルダーでFileVault®を有効にすると、そのホームフォルダーが暗号化されたスパースバンドルに変換されます。 Mac OS X10.4Tiger®以前では、FileVaultは暗号化されたスパースイメージを採用していました。
スパースバンドルは、TimeCapsule®などのTimeMachine®によって作成されたネットワークベースのバックアップディスクにも使用されます。
Linuxは通常のTime Machineスパースバンドルディスクイメージディレクトリをマウントできますか? 私がnixについて知っている以上のことについては、Macベースです。申し訳ありません。