我正在编写一个备份脚本,它使用硬链接来不为未修改的文件占用空间。在
我想检查一个给定的文件系统(从特定的目录中确定)是否支持脚本的开始处的硬链接-否则,在需要创建第一个硬链接之前,它可能会执行到一半(复制多个文件),导致脚本因异常而退出(我可以通过恢复更改或悄悄地把硬链接改成完整的拷贝,但我也不想这样——如果这会影响到这个问题,我宁愿不开始)。在
那么,如果唯一可用的输入是一个包含目录位置的字符串(例如"F:\\Backups"
或类似的字符串),我如何检查文件系统是否支持硬链接?在
否则,有没有一种好方法可以检查特定目录所在的文件系统的类型?
我想可以把它拉出来,然后从那里计算出它是否有支撑?在
我可以这样解决这个问题:复制文件有三种选择:
在Windows上,可以使用如下函数:
(免责声明:我还没有测试过。我们的想法是使用kernel32api。)
shutil.copy2
)。在然后,您可以在脚本开始时用一个临时文件(稍后删除)测试这3个函数。这3个函数中的第一个成功(即第一个不引发
Exception
)是制作实际备份副本的一个很好的候选函数。在这个思想遵循一个strategy pattern,其中您必须选择一个函数,该函数接受源文件名和目标文件名,并尽最大努力以您想要的方式复制。在
让我再补充一件事:为了选择复制策略而检测文件系统并不是一个很好的实践,同样地,检测浏览器不是在Javascript中执行不同操作的好实践。最好尝试使用一个特性,并准备好捕捉异常或处理错误,以产生另一个结果。在
相关问题 更多 >
编程相关推荐