我有 2 个相同的驱动器。我们称源为“S:”,目标为“D:”
S: 是我保存所有文件(图像、音乐、视频、文档等)的驱动器,D: 是我每周日晚上(手动)备份的备份 HD。
我想做的是,按照一些规则将 S: 备份到 D:。
就像,我说过,我每周做一次备份。这意味着在一周内,文件会被添加、删除以及从一个文件夹移动到另一个文件夹。
仅复制新文件或已修改的文件(需要检查文件的元数据)
在备份结束时,D: 最终必须与 S: 相同。
意思是,如果我将一个文件从文件夹“A”移动到文件夹“B”中的 S:,后面会看到该文件不再位于文件夹“A”中,并且必须删除它,才能做到这一点与 S: 相同的文件夹。
第 2 步可能没有得到很好的解释。,所以这里有一个更好的解释。如果 rsync 做不到,这就是我计划做的事情。
在 python 中,我会创建一个脚本来执行以下操作(按顺序):
将 D: 与 S: 进行比较 - 脚本将首先遍历 D:。每次进入目录时,它都会查看 S: 中的同一目录。然后它会查看文件。如果文件在 D: 但不在 S: 中,则意味着该文件已被删除或重命名或在 S: 中移动。因此,从 D: 中删除该文件(对所有文件夹重复此过程)
现在 D: 有完全相同的文件(如果在上面的步骤中被删除,则更少),开始复制。首先检查S:中的当前文件是否存在于D:中,如果不存在,则复制。如果是,请检查元数据。如果已被修改,则复制并覆盖。
最佳答案
这是我编写的用于将我的 Linux 机器备份到 USB 驱动器的脚本。
#!/bin/sh
rsync -a \
--progress \
--hard-links \
--whole-file \
--delete \
--delete-after \
--delete-excluded \
--stats \
--filter='- *.log' \
--filter='- /dev' \
--filter='- /boot' \
--filter='- /media/' \
--filter='- /mnt' \
--filter='- /net' \
--filter='- /proc' \
--filter='- /tmp/' \
--filter='- /var/log/' \
/ /media/disk/middle-earth
--filter 行排除了我不想同步的文件/子目录。
您可以以此为起点来制作您自己的作品。
关于linux - 使用 rsync 备份,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1118246/