【问题标题】:How to access "locked" files for backup program如何访问备份程序的“锁定”文件
【发布时间】:2016-06-06 07:15:49
【问题描述】:

我正在尝试使用 python 创建一个类似于 google 驱动器的备份程序,该程序备份到 Linux 机器,该机器将进一步备份到异地位置待定。在此过程中,我遇到了一些有趣的编码和计算机挑战。

我现在正在处理的一项与“锁定”文件有关。那我说这个是什么意思?在 Windows 7 中,如果您创建一个 .txt 文件,您可以在记事本(任何程序)中打开它,同时您可以在 python 程序中打开它。如果您在 .txt 文件中进行更改并保存更改,但在关闭它之前,您仍然可以打开并查看 pythn 中的更改。现在将文件更改为 .docx windows 文件并使用 word 2007 打开它。在 word 中打开时,您无法在 python 中访问它,直到用户关闭它。

现在,如果您查看 google 驱动器,桌面安装而不是仅网络版本,您可以打开一个 .docx 文件并进行更改。一旦你保存它,但在关闭谷歌驱动器之前已经同步了文件。

Google 驱动器必须对文件具有某种比简单的 python file.open() 命令更低级别的访问权限。

所以问题来了。有谁知道一种在 python 中访问文件的方法,以使我不必等待用户关闭文件。

编辑 1: 让我进一步解释一下。一旦我创建了一个包含所有文件和目录的 sqlite 数据库,我将使用 win32file.ReadDirectoryChangesW() 函数来监视更改。我的问题源于这样一个事实,即在设置第一次安装/运行的应用程序时,它必须对所有文件进行编目,并且在 windows office 中打开的文件被锁定并且无法编目。有没有解决的办法?

【问题讨论】:

  • 但是到目前为止您尝试过什么?你看过win32api吗?你搜索过this之类的东西吗?
  • 您尝试通过网络还是本地打开word文件?这是一个很大的不同。
  • 文件在本地打开,就像在备份程序正常运行期间一样。

标签: python windows locking backup


【解决方案1】:

许多备份工具都使用快照。然后,他们将直接从快照复制锁定的文件,而不是直接从文件系统复制它。如果您使用的是 Windows,则应检查 Windows VSS,有关详细信息,请参阅 Microsoft documentation。否则,如果您所在的文件系统支持快照,请同时检查其文档。

第三方工具

您可以使用subprocess Python 模块运行第三方工具,这些工具将为您拍摄快照。

微软 VSS

如果您想自己做,您可能需要来自 Win32 API 的模块,例如 win32com 模块。

Github 上还有一个似乎可以完成这项工作的项目:pyshadowcopy

文件系统快照

根据文件系统功能,您可能会发现 python 模块或工具允许您拍摄快照。

【讨论】:

    猜你喜欢
    • 2010-09-18
    • 1970-01-01
    • 1970-01-01
    • 2021-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多