使用Python备份目录及其子目录:使用os.walk、filecmp.dircmp或其他方法

1 投票
1 回答
607 浏览
提问于 2025-04-17 07:12

我是一名刚接触Python的新手。 我想知道我应该用什么方法来设置一个文件/目录备份的例程,具体如下(是用os.walk还是filecmp.dircmp,或者其他什么方法)。

我想设置的备份流程如下:

  1. 每晚,我想把“bakup_dir_a1”(以及它的所有子目录)变成“local_dir_a”(以及它的所有子目录)的镜像;但是,每晚都要这样做……

  2. 首先,我想比较local_dir_a(以及它的所有子目录)和bakup_dir_a1(以及它的所有子目录),找出它们之间的不同之处。

  3. 接下来,我想列出bakup_dir_a1(以及它的所有子目录)中那些将被从local_dir_a(以及它的所有子目录)复制过来的新文件替换的文件(包括完整路径和文件名),以及新旧文件的最后修改日期;

  4. 然后,我想列出bakup_dir_a1(以及它的所有子目录)中那些将从bakup_dir_a(以及它的所有子目录)中删除的文件(包括完整路径和文件名);

  5. 接下来,我想在bakup_dir_a2中创建一个压缩文件(.rar或.zip),里面包含上面第3和第4段中提到的所有文件的副本。

  6. 最后,我会执行上面第1段中描述的镜像操作。

我花了一些时间试着学习如何使用os.walk和filecmp.dircmp。
我觉得os.walk可能更适合我的需求。

任何建议都将非常感谢。 谢谢, Marc

1 个回答

1

第一步,先看看 shutil模块,可以从 shutil.copytree 开始。

第二步,filecmp.dircmp 是一个不错的选择。

第五步,查看一下 tarfile模块zipfile模块 中的归档选项。

撰写回答