Data Backup With Robocopy
信息时代发展到今日,电子产品也越来越精细和强大,但是依然存在着一个永恒不变的真理——没有不会坏的电子产品。
当我们把越来越多的资料塞进移动硬盘、光盘、闪存或者是其他电子设备中,无论这个设备多昂贵,口碑多好,我们多少总会担心,设备会不会出问题而导致数据的丢失,尤其当里面的数据是很重要的时候。
话说前几天,毕业答辩的时候,我就遇到了尴尬。我的U盘里面拷贝出来的 PPT ,竟然在演示 PC 中无法打开。幸亏事先带了两个 U 盘,把我的 PPT 各拷贝了一份,才没有让我的答辩成了个大笑话!
这种对数据丢失的不安感,使得备份变成了数据保存非常重要的一个环节。
近期,由于一些原因,我需要对几个站子进行集中备份,因此用到了在 Windows 下的一个复制神器—— Robocopy !
根据 Wikipedia 提到:
Robocopy, or “Robust File Copy”, is a command-line directory replication command. It has been available as part of the Windows Resource Kit starting with Windows NT 4.0, and was introduced as a standard feature of Windows Vista, Windows 7 and Windows Server 2008.
也许有朋友会认为,备份站子的话,用 SVN 的之类的源代码管理就OK了。其实不然!SVN毕竟只是个源代码管理工具,但是一个站点所包含的除了代码之外,还有媒体文件、数据库等等数据,这些都不是 SVN 所能驾驭的。我相信极少有人会用 SVN 备份媒体文件和数据库文件,当然非要有人这么做,那我也无话可说。
接下来我们就以站子备份为例:
- 站点备份必然是需要将其备份到另外一个服务器上(备份在本机就失去了备份的意义了),所以我们为了方便需要将另外服务器映射到本地盘符,方便以后的操作。
net use n: \\10.167.174.60\ironfeet "password" /user:"ironfeet" /persistent:yes rem n: 为目标服务器共享文件夹所要映射的盘符 rem \\10.167.174.60\ironfeet 为目标服务器共享文件夹的地址 rem "password" 目标服务器共享文件夹登录密码 rem /user:"ironfeet" ironfeet 是目标服务器共享文件夹的用户名 rem /persistent:yes 对提问始终选择 yes
这样子目标服务器的共享文件夹就映射到了 n 盘。
- 数据备份要开始了,也就是说 robocopy 就要登场了!
robocopy E:\PHP\newfiles\public_html n:\public_html /mir /e robocopy "D:\Program Files\MySQL" n:\MySQL /mir /e rem E:\PHP\newfiles\public_html 页面文件、媒体文件等等文件的目录; n:\public_html 备份的目标位置。 rem "D:\Program Files\MySQL" 数据库文件目录(如果路径有空格,需要用双引号包围); n:\MySQL 备份的目标位置。
- 为了方便我们可以将这些操作放入一个批处理文件 Autobk.bat 。将以上内容都写入。
rem Autobk.bat 自动备份文件 net use n: \\10.167.174.60\ironfeet "password" /user:"ironfeet" /persistent:yes robocopy E:\PHP\newfiles\public_html n:\public_html /mir /e robocopy "D:\Program Files\MySQL" n:\MySQL /mir /e - 人总有忘事的时候,所以建立一个批处理文件,但不能定时去执行,那这个文件和废物没分别。这个时候会发现 Windows 的计划任务真是好东西啊。我们可以在 Windows 建立一个计划任务,设定每天 Windows 在凌晨一点自动运行该批处理文件,然后一切就不需要管他了。当然值得注意的是,凌晨一点,这两台机器可一定要处于开机状态哈
Robocopy 在进行下一次备份时候,会和前一次备份的文件进行比对。如果有不同的他会在目标文件夹下建立一个 trash 文件夹,将有变化的原文件进行备份。
如果需要对多个服务器中的数据集中备份到一个服务器,而且这些服务器并非都是 Windows 的,我的方法是找一个装有带 Robocopy 的 Windows 机器作为中介来实现。其中非 Windows 系统的文件夹可以利用 Samba 来实现和 Windows 之间的共享。
我将几台源服务器和目标服务器都映射到中介PC中,进行计划任务的集中备份。如下:
rem Autobk.bat 自动备份文件
net use n: \\10.167.174.60\ironfeetA "password" /user:"ironfeet" /persistent:yes
net use o: \\10.167.174.60\ironfeetB "password" /user:"ironfeet" /persistent:yes
net use p: \\10.167.174.60\backup "password" /user:"ironfeet" /persistent:yes
robocopy n: p:\A /mir /e
robocopy o: p:\B /mir /e本文并没有对 Robocopy 进行详解,此文的目的仅仅是希望能起到一个抛砖引玉的作用。
Robocopy 还有很多参数开关值得挖掘,如 /LOG+: 可以实现日志文件的追加导出等等,都可以从官方技术页面找到。
值得提到的是, XP 目前还属于用户群很大的 Windows 操作系统,遗憾的是 XP 并不自带 Robocopy 。当然把其他 Windows 系统中的 robocopy.exe 拷贝到 XP 的 windows\system32 文件夹中,一样可以运行。但是我觉得这个会涉及到一个版权问题。
一般情况下,微软操作系统中工具,如扫雷等等,都是在您购买了正版的系统才认为您有使用它的权利。即使您用的是正版 XP ,但是用的却是 7、 Vista 或者其他 Windows 系统的工具,一样构成侵权。
不扯版权问题了,我可不想这篇博文的评论区,变成正版用户和盗版用户的口水战!
Push








其实,我想说,有些资料就让它丢失吧,没什么不好,丢失有丢失的好处,不过,不是人人都能发现
@没有翅膀的鸟
无所谓的东西就不会备份了
@没有翅膀的鸟
避免XX门?或者学就是为了忘?这位仁兄已得独孤九剑的奥义~
@Fanofun
呃,”没有翅膀的鸟”是女孩,不是仁兄
linux 能用不呢 ~
@疾风
Robocopy 无法在 Linux 下运行。如果想备份 Linux 系统的数据,需要用 Windows 系统的 PC 做中介,具体方法文中已经提到了。
一般 Linux 下的话,我比较喜欢用 Conduit ,个人觉得挺不错的同步备份工具!
学长,又来学习了。。虽然今天这篇我看不懂。。。。嘿嘿
偶的手机又挂了,幸好里面的数据都在outlook中,要不然此刻喊天天不灵啊
@蛋挞
嚯嚯,欢迎,哈哈
@Jaffachu
我现在用 Google Contacts 同步了,只要 Google 服务器能访问就没问题!