![用于异地滚动备份的 Rsync 命令](https://linux22.com/image/571257/%E7%94%A8%E4%BA%8E%E5%BC%82%E5%9C%B0%E6%BB%9A%E5%8A%A8%E5%A4%87%E4%BB%BD%E7%9A%84%20Rsync%20%E5%91%BD%E4%BB%A4.png)
我读了很多文章,并尝试自己尝试,但是都没有成功,所以需要有关 Rsync 命令的帮助,以便进行异地滚动备份。
我已经在两台 Windows 服务器(均为 2008 R2)上安装了 cwRsync(目前在虚拟机中作为测试运行),并且想要设置从服务器 1 到服务器 2 以及反之亦然的文件夹(其中包含许多文件夹)的滚动备份。
我希望每周推送两次完整备份(周一和周四晚上 8:00),并在第三次备份完成时删除第一次备份,依此类推。(附件时间表为 PNG)
到目前为止,我已经通过在 .cmd 文件上运行以下命令来传输文件夹/文件;非常感谢您的帮助。
REM Set HOMEPATH values
SET HOMEDRIVE=%CD:~0,2%
SET HOMEPATH=%CD:~3%
SET CWRSYNCHOME=%CD%
SET CWOLDPATH=%PATH%
SET PATH=%CWRSYNCHOME%\BIN;%PATH%
SET HOME=%HOMEDRIVE%\%HOMEPATH%
rsync -avrz -ssh "/cygdrive/C/Test-Folder1" "[email protected]:/cygdrive/c/Test-Folder2"
SET PATH=%CWOLDPATH%
答案1
rsync
是一个R
表情SYNC
同步工具——它使目标机器看起来像数据来源机器,并试图使其变得智能和高效。
它可以为您提供源机器最后状态的出色备份,但它不会像您描述的那样进行“滚动备份”,并且如果没有大量外部脚本(或大量浪费的传输),它就无法做到这一点。
为了做你想做的事,你需要:
rsync
每晚- 周一和周四,完整复制目录目标机器到“完整备份”目录
- 在其他所有日子收集更改的文件列表(来自 rsync 输出)并将其复制到“增量备份”目录。
- 根据需要替换/覆盖完整目录和增量目录。
你最好使用真正的备份系统解决方案类似巴库拉将数据备份到磁盘上的“虚拟磁带”,然后rsync
将虚拟磁带文件存储到异地存储。
答案2
看一眼快照它可以满足您的要求并且支持 Windows。
答案3
您的目标机器必须是 Windows 吗?
我曾帮助建立了一个类似的系统。我们将数据 rsync 到 FreeBSD 机器上的 ZFS 文件系统,然后对 ZFS 文件系统进行快照。这为您提供了两全其美的解决方案:rsync 非常智能,只传输更改的数据,而 ZFS 快照仅占用与更改的数据相同的空间。删除不需要的快照非常容易。
不幸的是,我不知道除了 Solaris 和 FreeBSD 之外的其他操作系统是否有成熟的 ZFS 实现。
可能存在某种机制,Windows 机器可以通过该机制进行类似的快照。当然,NTFS 通过卷影服务支持类似的写入时复制功能,但我对 Windows 的了解不够深入,无法判断这样的系统是否可行。
(请注意,我并不建议将 ZFS 快照本身用作备份机制,但它们可以作为像这样的大型系统的一部分。同样,包括 bacula 和 BackupExec 在内的备份软件也使用 Windows/NTFS 卷影服务。)
编辑 :(回复您的评论)听起来您真正想要做的是在两个站点之间设置 DFS 共享。这将在两个方向上(或多或少)实时镜像文件。如果用户有可能在两端打开同一个文件,则需要谨慎行事,但一般来说,对于这种情况,它非常有效。它与备份实际上并不相同,但似乎您想要的是两端的实时文件系统。不确定 DFS 和意外删除,尽管其他 NTFS 功能可能会涵盖您。
答案4
备份工具迪尔维什使用 rsync 作为后端来创建类似于 Time Machine 的旋转备份(没有出色的界面)。