いくつかのファイルを含むフォルダがあります。毎日バックアップする必要があります。
私はDebianとzshを使っており、zip
このツールを使ってバックアップしています。
時々フォルダを更新し、新しいファイルを追加し、古いファイルを削除し、古いファイルを更新します。
zipがzipファイルを自動的に更新できることがわかりました。たとえば、
zip -r backup.zip my-folder/
初めて実行すると、すべてのファイルが追加されます。
ただし、同じコマンドを再実行すると、すべてのzip -r backup.zip my-folder/
ファイルが更新されます。
信じる?それとも、rm
フォルダをパッケージ化する前に毎回ファイルを圧縮する必要がありますか?
答え1
~によるとman zip
zip will replace identically named entries in the zip archive
したがって、実際に既存のファイルを置き換えると表示されるたびにzip
似ていますが、そうではありません。以下の例を確認してください。updating: my-folder/<file> (in=0) (out=0) (stored 0%)
archive
Full backup
Incremental or Defferential Backup
# du -b dir/*
1073741824 dir/file.txt
2 dir/x
0 dir/xx
0 dir/xy
0 dir/y
0 dir/z
# time zip -rv dir.zip dir
adding: dir/ (in=0) (out=0) (stored 0%)
adding: dir/xy (in=0) (out=0) (stored 0%)
adding: dir/x (in=2) (out=2) (stored 0%)
adding: dir/file.txt ...................................................................................................... (in=1073741824) (out=1042051) (deflated 100%)
adding: dir/xx (in=0) (out=0) (stored 0%)
adding: dir/y (in=0) (out=0) (stored 0%)
adding: dir/z (in=0) (out=0) (stored 0%)
total bytes=1073741826, compressed=1042053 -> 100% savings
real 0m10.990s
user 0m10.827s
sys 0m0.160s
# dd if=/dev/zero of=dir/file.txt count=1040 bs=1048576
1040+0 records in
1040+0 records out
1090519040 bytes (1.1 GB) copied, 8.95635 s, 122 MB/s
# du -b dir/file.txt
1090519040 dir/file.txt
これでファイルがdir/file.txt
追加バイトに更新されました。それではzip
もう一度やりましょう。
# time zip -rv dir.zip dir
updating: dir/ (in=0) (out=0) (stored 0%)
updating: dir/xy (in=0) (out=0) (stored 0%)
updating: dir/x (in=2) (out=2) (stored 0%)
updating: dir/file.txt ........................................................................................................ (in=1090519040) (out=1058320) (deflated 100%)
updating: dir/xx (in=0) (out=0) (stored 0%)
updating: dir/y (in=0) (out=0) (stored 0%)
updating: dir/z (in=0) (out=0) (stored 0%)
total bytes=1090519042, compressed=1058322 -> 100% savings
real 0m11.246s
user 0m11.021s
sys 0m0.223s
これはdir/file.txt
、同じ名前の最後に変更されたファイルに置き換えられます。これは、ファイルに新しいコンテンツがない場合でも同様です。フルバックアップ、増分バックアップ、差分バックアップなど、さまざまな種類のバックアップがあります。Incremental and Differential
これは通常、データのバックアップメカニズムが設計され実装されている場合に発生します。
この場合、@kusalanandaが述べたように、より一般的なバックアップツールの使用を検討してください。
たとえば、rsync
役に立ちます。
また、毎回既存のアーカイブファイルに対してコマンドを実行するrm
必要はありません。zip
持続したい場合は、zip
歩いてくださいzip's
add, update, freshen
。実例Update
:
# time zip -ruv dir.zip dir
zip diagnostic: dir/ up to date
zip diagnostic: dir/xy up to date
zip diagnostic: dir/x up to date
zip diagnostic: dir/xx up to date
zip diagnostic: dir/y up to date
zip diagnostic: dir/z up to date
updating: dir/file.txt .......................................................................................................... (in=1111490560) (out=1078679) (deflated 100%)
total bytes=1111490562, compressed=1078681 -> 100% savings
real 0m11.351s
user 0m11.178s
sys 0m0.171s
再実行する場合zip
:
# time zip -ruv dir.zip dir
zip diagnostic: dir/ up to date
zip diagnostic: dir/xy up to date
zip diagnostic: dir/x up to date
zip diagnostic: dir/file.txt up to date
zip diagnostic: dir/xx up to date
zip diagnostic: dir/y up to date
zip diagnostic: dir/z up to date
real 0m0.003s
user 0m0.002s
sys 0m0.001s