如果我想用tar -cvf压缩文件,是否有任何选项可以提供如下条件?
磁盘0:/centos/user0-15g可用磁盘1:/centos/user1-1G abailable
cd /centos/user0/
tar -cvf /centos/user1/test01.tar *由于/centos/user1有很小的可用磁盘空间,所以如果/centos/user1的可用磁盘空间小于300米,我希望停止压缩。
在tar函数上有这样的选项吗?或者有办法这样做吗?
发布于 2021-12-22 01:20:47
与大多数Unix实用程序一样,tar实现了一种功能,即创建存档。它不具备有条件地创建档案或在条件下中止的功能。在正常情况下,后者的效率相对较低,因为它可能涉及定期轮询外部命令。
您可以在用du压缩数据之前检查数据的大小,然后确定是否要创建归档文件。您还可以在子subshell中创建一个后台作业,如果检测到较低的磁盘空间,该作业将杀死tar进程,并删除该文件。但是,后一种方法可能不够快,无法在系统出盘之前终止操作。
最后,您可以创建一个特定的用户并在小磁盘上添加一个配额,这将阻止操作在超出配额的情况下完成。您仍然需要删除部分存档,但这将是一种有效的方法。
发布于 2023-05-17 02:39:42
我的示例可能无法解决这个问题的最初问题,但是,我想分享间接使用带有条件的tar的想法。
find的功能与tar相结合,只添加CSS文件: find。-name "*.css“-exec tar rf sample.tar {} \;或仅添加可执行文件:查找。-executable -exec焦油rf sample.tar {};https://unix.stackexchange.com/questions/683120
复制相似问题