De acordo com man zip
zip will replace identically named entries in the zip archive
Portanto, sempre que zip
disser updating: my-folder/<file> (in=0) (out=0) (stored 0%)
, ele realmente substituirá o arquivo existente no archive
, que é como um Full backup
, mas não um Incremental or Defferential Backup
. Veja o exemplo abaixo:
# 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
Agora, o arquivo dir/file.txt
foi atualizado com alguns bytes extras. Agora vamos executar zip
novamente:
# 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
Apenas substituiu o dir/file.txt
pelo arquivo modificado recentemente com o mesmo nome. Este é o mesmo caso, mesmo que o arquivo não tenha novo conteúdo. Existem diferentes tipos de backups como Full, Incremental, Differential available. Normalmente, Incremental and Differential
entrará na imagem se o mecanismo de backup for criado e colocado em vigor para os dados.
Nesse caso, como @kusalananda mencionou, seria bom se você visse ferramentas mais versáteis disponíveis para fazer backups.
Por exemplo, rsync
pode ajudar.
Além disso, rm
não precisa ser executado no arquivo arquivado existente toda vez que você executar o comando zip
.
Se você quiser ficar com zip
, passe por zip's
add, update, freshen
. Por exemplo, Update
case:
# 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
Se zip
for executado novamente:
# 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