用Matlab脚本同步和备份资料

作者:, 发表于

生活中的Matlab

查看该系列所有文章

基于将工作文件在家里电脑和公司电脑上的转移、Kindle上电子书的管理的需求,我用Matlab写了几个函数,用来实现这些需求。

1.主要有两个函数:

1、syncfolder用来同步文件夹。syncfolder(p1, p2, direction)可将文件夹p1和p2进行同步,direction控制同步的方向。比如direction为0时为双向同步,direction为1时将p1中的新文件同步到p2,direction为2时将p1中的新文件同步到p2,并且将p2中多余的文件删除;direction为-1或-2时含义类似,不过方向相反而已。

2、backupfolder用来备份文件夹。backupfolder(p1, p2)将文件夹p1备份到p2目录。每次备份时,将在p2下建立一个以当天日期命名的文件夹,并且将p1目录下在上次备份后更新或新增文件都备份到该新建的文件夹中。

为配合backupfolder的使用,另外还有两个功能函数,其一为getbackups。getbackups(fileName, backupPath)可以返回备份目录backupPath下所有fileName的历史版本,其中fileName为相对于备份根目录的相对路劲,也可以文件夹名字。

另一个功能函数为revertbackup,用来恢复历史文件。使用方法为revertbackup(revertPath, backupPath, savePath, begDate),其中revertPath为所需要恢复的文件或文件夹(用在备份目录backupPath下的相对路径表示)。revertPath上所有文件的在begDate之后的最新版本都被保存到savePath目录下。

2.同步Matlab工作文件

每天下班后都需要将文件copy到U盘带回家去做,我的工作文件位于'D:\My Documents\MATLAB\',需要将这些文件复制到U盘更目录下的matlab目录下。这时候只需要运行

for i = 1:10
    matlabpath= [char(i+'D'), ':\matlab\'];
    if isdir(matlabpath), break; end
end
syncfolder('D:\My Documents\MATLAB\', matlabpath);

3.同步Kindle的电子书

我已经收集了上百本几百M的电子书,这些电子书被归类整理到电脑分类文件夹中。在之前,我只能选择将所有电子书复制粘贴到Kindle中,尽管可能只新增几本书,也需要将所有书都传输一遍。而用上面的函数,只需要运行下面代码,每次自动只传输新增加的书

for i = 1:10
    kindlepath = [char(i+'D'), ':\DK_Documents\'];
    if isdir(kindlepath), break; end
end

syncfolder('D:\My Documents\ebooks\', kindlepath, 1);

4.备份工作文档

比如我将所有Matlab代码都保存在D:\My Documents\MATLAB\。但我担心不小心误删自己的代码,所以我将下面这行代码放在startup.m里面,Matlab每次打开时会自动帮我备份

backupfolder('D:\My Documents\MATLAB\', 'D:\backup\Matlab');

如果我误删了文件夹'D:\My Documents\MATLAB\tools\',这时候我只需要运行

revertbackup('tools', 'D:\backup\Matlab', 'D:\My Documents\MATLAB\tools\')

便会恢复tools目录下的所有备份过的文件。也可以通过getbackups查看某文件比如startup.m在历史上所有版本(相当于wikipedia的历史版本的概念)

a = getbackups('startup.m', 'D:\backup\Matlab')

然后通过visdiff(a{1}, a{2})可以查看历史版本的差异。

Q.E.D.


上一篇:批量修改图片大小的Matlab脚本2010年10月1日
现在相机的像素实在是太高了,上次去泰山玩,朋友的1200万像素的D90照出来的照片分辨率高达4288×2848,即使转为jpg格式,每张都在5M以上。而现在电脑

下一篇:相关文章的算法2010年10月17日
好多blog都会在文章后面提供相关文章列表,也有很多插件实现这种功能,它们的算法基本上是,抽取关键词(多数插件是利用tags数据),然后根据关


  • 支持使用微薄、微信和QQ的账户登陆进行评论。由各自网站直接认证,不会泄露你的密码。
  • 登陆后可选择分享评论到所绑定的社交网络,如微薄、人人和QQ空间。
  • 评论提交后无法修改。如需修改,请删除原评论再重新提交。
  • 评论支持LaTeX代码,行内公式请用\(a+b=c\),行间公式请用\[a+b=c\]。公式只支持英文字符。