如何给出使用 tar -cvf 压缩文件的条件

如何给出使用 tar -cvf 压缩文件的条件

如果我想用 压缩文件tar -cvf,是否有任何选项可以给出如下条件?

磁盘 0:/centos/user0 - 15G 可用磁盘 1:/centos/user1 - 1G 可用

cd /centos/user0/
 
tar -cvf /centos/user1/test01.tar *

由于可用磁盘空间很小,如果可用磁盘空间小于300M,/centos/user1我想停止压缩。/centos/user1

tar功能上有这样的选项吗?或者有什么办法可以做到这样吗?

答案1

与大多数 Unix 实用程序一样,tar它实现一项功能,即创建档案。它不具有有条件地创建档案或根据条件中止的功能。后者在正常情况下效率相对较低,因为它可能涉及定期轮询外部命令。

您可以检查数据的大小您可以使用 对其进行压缩du,然后确定是否创建存档。您还可以在子 shell 中创建一个后台作业,tar如果检测到磁盘空间不足,则会终止进程并删除文件。然而,后一种方法可能不够快,无法在系统耗尽磁盘之前终止操作。

最后,您可以创建一个特定用户并在小磁盘上添加配额,如果超出配额,这将阻止操作完成。您仍然需要删除部分存档,但这将是一种有效的方法。

答案2

tar我的例子可能无法解决这个问题的原始问题,但是,我想间接分享使用条件的想法。

  1. 创建一个 tar 存档:

    tar cf sample.tar sample.txt
    
  2. find使用结合的力量tar,例如,仅添加CSS文件:

    find . -name "*.css" -exec tar rf sample.tar {} \;
    

    或者仅添加可执行文件:

    find . -executable -exec tar rf sample.tar {} \;
    
  3. 检查存档文件:

    tar tf sample.tar
    

相关内容