É um bom hábito para rm zip arquivo antes de empacotar pastas?

0

Eu tenho uma pasta com alguns arquivos. Eu preciso fazer backup deles diariamente.

Estou usando o Debian e o zsh e uso zip para a ferramenta para fazer o backup deles.

Estou atualizando a pasta de tempos em tempos, adicionando novos arquivos, removendo arquivos antigos e atualizando arquivos antigos.

Percebi que o zip pode atualizar automaticamente um arquivo zip. Por exemplo:

Quando eu executo zip -r backup.zip my-folder/ no começo, ele adicionará todos os arquivos.

Mas quando eu executo o mesmo comando zip -r backup.zip my-folder/ novamente, ele atualizará todos os arquivos.

Isso é confiável? Ou eu preciso de rm do arquivo zip toda vez antes de empacotar minha pasta?

    
por AGamePlayer 05.08.2018 / 09:28

1 resposta

1

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
    
por 06.08.2018 / 11:24

Tags