我正在尝试详细说明一个命令,该命令将查找超过6个月内未修改过的文件,并使用一个命令对其进行压缩。之后我想删除所有这些文件,我刚刚存档。
我当前查找包含文件的目录的命令是
find /var/www -type d -mtime -400 ! -mtime -180 | xargs ls -l > testd.txt
这给了我所有目录,包括超过6个月的文件 现在我想知道是否有办法压缩所有结果并在之后删除它们。
之类的东西find /var/www -type f -mtime -400 ! -mtime -180 | gzip -c archive.gz
如果有人知道实现这一目的的正确语法,我很想知道。 Thakns!
编辑,经过几次测试后,此命令会导致文件损坏
find /var/www -mtime -900 ! -mtime -180 | xargs tar -cf test4.tar
有什么想法吗?
答案 0 :(得分:0)
将其分解为几个不同的步骤,您可以实施并分别进行彻底测试:
在测试可能造成不可逆转损坏的脚本时,始终使用前导echo
对危险命令进行编码并保持这种状态,直到您确定一切正常为止。然后才删除echo
。
答案 1 :(得分:0)
考虑zip
,它应该符合您的要求。
find ... | zip -m@ archive.zip
-m(move)在创建指定的zip存档后删除输入的目录/文件。
- @从标准输入中获取输入文件列表。
您可以在zip
手册中找到更多对您有用的选项,例如:克。
-r(recurse)以递归方式传递目录结构。
-sf(show-files)显示将要操作的文件,然后退出。
-t或--from-date对未在指定日期之前修改的文件进行操作。
-tt或--before-date对未在指定日期之后或之后修改的文件进行操作。
这可能会导致find
消耗殆尽。
zip -mr --from-date 2012-09-05 --before-date 2013-04-13 archive /var/www