폴더를 패키징하기 전에 zip 파일을 rm하는 것이 좋은 습관입니까?

폴더를 패키징하기 전에 zip 파일을 rm하는 것이 좋은 습관입니까?

일부 파일이 포함된 폴더가 있습니다. 매일 백업해야 해요.

저는 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%)archiveFull backupIncremental 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

관련 정보