进行 zip 备份的理想方式

进行 zip 备份的理想方式

我每周都会尝试压缩文件夹中的文本、csv 文件。根据我先前的问题,我让这个代码运行起来。

sudo find . -mtime +7 | sudo zip -m archive-$(date +%Y-W-%U).zip -@

我想对此进行进一步的微调,以便:

  • 含有特定字符串的文件被排除。
  • zip 输出保存到不同的位置

我以为我已经使用以下命令获得了第一部分,但是它一直冻结。

sudo find . -mtime +7 | sudo zip -m -x /*excludestring1* /*excludestring2* archive-$(date +%Y-W-%U).zip -@

我无法找到将其保存到其他位置的方法。我可以将“*.zip”作为排除项,但我更愿意将其保存到其他位置。有人能帮我找出我做错的地方吗?

答案1

  1. 要排除某些模式,请使用-x末尾的选项并在模式周围使用单引号,以便模式zip不会被 shell 扩展:

    sudo find . -mtime +7 | sudo zip -m  archive-$(date +%Y-W-%U).zip -@ -x '/*excludestring1*' '/*excludestring2*'
    
  2. 要将 zip 文件保存到其他位置,请使用要保存文件的位置的绝对路径(或相对路径)zip

    sudo find . -mtime +7 | sudo zip -m -x /*excludestring1* /*excludestring2* /where/to/save/archive-$(date +%Y-W-%U).zip -@
    

    替换/where/to/save为您想要保存 zip 文件的实际路径。

    例如,将其保存在/tmp/spam/目录中:

    sudo find . -mtime +7 | sudo zip -m -x /*excludestring1* /*excludestring2* /tmp/spam/archive-$(date +%Y-W-%U).zip -@
    

答案2

手册页指出\应使用来避免 shell 文件名替换,并让其zip本身扩展通配符。

或者,您可以使用-x开关指定一个文件,列出以下格式的所有排除项[email protected]

稍微不同的是,该find命令具有-not-path选项,可以用于类似的效果。

相关内容