Как я могу обновить огромный zip-архив, удалив все удаленные файлы, из командной строки? - PullRequest
1 голос
/ 19 августа 2010

Я пересылаю папку с одного хоста на другой.Затем я заархивировал зеркальную папку, чтобы ее можно было перенести на ленту.

Теперь, когда я заархивирую папку (имея в виду, что папка ~ 300 ГБ), используя следующий скрипт, он сохраняет файлыбыл удален из каталога, который я заархивировал.

zip -ru /home/rsync/www.zip /home/rsync/www/

Это потому, что я использую флаг -u (обновление), который не удалит отсутствующие файлы из архива.

В rsync я использую флаг --delete, который удаляет файлы, которых больше нет на удаленном сервере.Есть ли подобный способ сделать это с zip-архивом?

1 Ответ

3 голосов
/ 19 августа 2010

Я не знаю ни одного варианта сделать это. Вот простой скрипт, который вы можете использовать как основу для чего-то более надежного:

unzip -lqq archive | cut -c 31- |
while read -r line
do if [[ ! -f $line ]]
   then
      zip -d archive "$line"
   fi
done

Вот однострочная версия:

unzip -lqq archive | cut -c 31- | while read -r line; do if [[ ! -f $line ]]; then zip -d archive "$line"; fi; done
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...