我需要部署一个自动过程(通过1分钟的cron脚本),该过程在特定目录中查找tar文件。如果找到tar文件,则将其解压缩到适当的位置,然后删除该tar文件。
tar文件会通过SSH自动从另一台服务器复制到此服务器。在某些情况下,tar文件非常大,其中包含很多文件。
我期望遇到的问题:如果将tar文件复制到服务器上花费的时间超过1分钟,并且cron脚本每分钟运行一次,它将看到.tar.gz文件并尝试执行解压缩它,即使tar文件仍在写入过程中。
有什么方法(通过bash命令)测试当前是否正在写入文件,或者仅是部分文件等?
我想到的一种替代方法是,将文件复制为其他文件扩展名(如.tar.gz.part
),然后.tar.gz
在传输完成后重命名为。但是我认为我会尝试找出是否只有一种方法可以首先在命令行上确定文件是否完整...有任何线索吗?
rsync
在传输过程中使用临时文件名(默认情况下),并且只有在文件完全传输后才将其重命名为实际文件名。