代码之家  ›  专栏  ›  技术社区  ›  StuR

如何从命令行更新一个巨大的zip存档,删除任何删除的文件?

  •  1
  • StuR  · 技术社区  · 14 年前

    我正在将文件夹从一个主机同步到另一个主机。然后我压缩镜像文件夹,以便可以将其传输到磁带。

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

    这是因为我用的是 -u (更新)标志,它不会从存档中删除丢失的文件。

    --delete ,删除远程服务器上不再存在的文件。有没有类似的方法来处理zip存档?

    1 回复  |  直到 13 年前
        1
  •  3
  •   Dennis Williamson    13 年前

    我不知道有什么办法可以这样做。下面是一个简单的脚本,您可以将其用作更强大的基础:

    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