在打包文件夹之前 rm zip 文件是一个好习惯吗?

在打包文件夹之前 rm zip 文件是一个好习惯吗?

我有一个包含一些文件的文件夹。我需要每天备份它们。

我正在使用 Debian 和 zsh,并使用zip该工具来备份它们。

我不时更新文件夹,添加新文件,删除旧文件并更新旧文件。

我注意到 zip 可以自动更新 zip 文件。例如:

当我zip -r backup.zip my-folder/第一次运行时,它会添加所有文件。

但是当我再次运行相同的命令时zip -r backup.zip my-folder/,它将更新所有文件。

那可靠吗?或者我rm每次打包文件夹之前都需要 zip 文件吗?

答案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,这就像 aFull 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

相关内容