如果我想用 压缩文件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
我的例子可能无法解决这个问题的原始问题,但是,我想间接分享使用条件的想法。
创建一个 tar 存档:
tar cf sample.tar sample.txt
find
使用结合的力量tar
,例如,仅添加CSS文件:find . -name "*.css" -exec tar rf sample.tar {} \;
或者仅添加可执行文件:
find . -executable -exec tar rf sample.tar {} \;
检查存档文件:
tar tf sample.tar