目前我做了一个简单的邮件备份:服务器上有一个 Maildir,我使用 rsync 将 Maildir 从服务器同步到备份。
所以我删除了服务器上所有超过一个月的文件。因此,服务器上只有最新的邮件,其余的邮件只在备份中。因此,我不会占用太多的服务器空间,如果有人入侵我,他只会得到一个月的邮件,而不是整个存档。
我使用的命令是:
rsync -avz Maildir/ backupserver:backup/Mails/
cd Maildir
touch -d 2011-07-30 dummy
find -type f \! -newer dummy -delete
这样做效果很好,但是当我移动已在备份中的邮件时,备份中会有两份邮件副本。一份来自旧备份作业,一份来自新备份作业。或者我甚至可以决定删除邮件,但它不会在备份中删除。
我可以使用带有 --delete 的 rsync,但是我需要在服务器上拥有完整的存档,否则它也会删除备份中的旧邮件。
所以现在我的问题是:如何以某种方式同步邮件,以保留移动和删除?
答案1
好的,我想我找到了解决方案:
使用同步邮件目录,我将本地邮件目录中的电子邮件与远程邮件目录保持同步。当我想从服务器中删除旧邮件,但不从备份中删除时,我首先进行最后一次同步,同步已添加/已删除/已移动的邮件,然后从本地和远程 .smd/ 文件夹中删除邮件数据库并删除旧邮件。
详细步骤:
- 使用 smd-pull 同步邮件
- 从服务器删除旧邮件时:
- 最后一次与 smd-pull 同步
- 使用 find-cmdline 删除旧邮件。
- 本地/远程删除 .smd/profilename__Mail.db.txt* 文件
- 再次同步,因此数据库会为剩余的文件重建,因此可以检测到移动/删除。
- 像往常一样同步邮件