用 Matlab 脚本同步和备份资料

作者: , 共 1958 字

基于将工作文件在家里电脑和公司电脑上的转移、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.

类似文章:
相似度: 0.141
编程 » Matlab, 代码准则
我所在部门也不是 IT 部门,职位也不是开发职位,但平时工作还是需要大量处理和分析数据、计算和开发各种指标等,还是需要写很多程序,语言以 VBA 和 Matlab。但同时,部门里像着我这种写程序的人并不多,别人并不看我的代码而只关心我提交的结果(说实话,大多数时候即便我写错了也不会有人知道),工作环境也不像专业的 IT 公司或部门,有严格的流程控制和工作平台。我这里没有版本控制、没有自动测试环境、没有代码格式和注释要求,也不需要去 Linux 下干活。我相信国内金融行业有不少人与我处于同样的状态。
编程 » Matlab
Matlab 在启动时会自动运行脚本startup.m。在这个脚本里可以自动修改当前目录,修改显示方式等等。比如
前面几篇文章已经提到,我同时买了iPadKindle DXG。其中 Kindle 只能用来看书, iPad 还能用来上网、玩游戏等。不过这里只比较一下它们的电子书功能。
现在相机的像素实在是太高了,上次去泰山玩,朋友的 1200 万像素的 D90 照出来的照片分辨率高达 4288×2848 ,即使转为 jpg 格式,每张都在 5M 以上。而现在电脑屏幕的分辨率最高也在 1920 以下吧,超高分辨率的照片除了打印大照片之外没什么用处,反而不方便传输、流通、保存。
在工作中定期或不定期会收到一些数据文件,然后要将它们的附件保存到自己的电脑上,下面演示如何让 Outlook 自动做这件事情。
最近做一些优化问题,找到了 YALMIP 工具包。在其帮助文件里看到如何使用该工具包求解 sudoku,整个思路是将问题转化为整数规划问题。这样的思路以前也想到过,但总觉得整数规划问题的求解会更复杂。但是下面的 Matlab 代码,显示它可以非常简洁,思路见程序的注释(程序运行需要安装 YALMIP 工具包):
编程 » Matlab
第一步,which函数可用来获取 Matlab 函数的全路径(包含路径和文件名)。
编程 » dll, Matlab, VB
这里放两个在实际工作中遇到的问题,还没找到解决的方法,向广大网友求助。
相似度: 0.059
编程 » Matlab
写了一个统计代码量的函数,函数已上传到 Matlab Central File Exchange下载地址,使用方法:
编程 » vbs, 办公自动化
工作中或多或少有些琐碎的事情,比如每天要发送和接受数据,很多是通过邮件的方式传递的。之前写过如何在 Outlook 里自动保存附件,这里再发一个如何更方便地发送带附件的邮件。
投资 » 凯利判据
凯利判据(英文 wikipedia)是一种人们在面对不确定事物时的选择标准,更准确地说,凯利判据是效应函数为「log 函数」的投资者(或赌徒)的决策方式。下面直接用一个例子来说明:
刚看到操盘手 Peder Veiby、Anders Brosveet 与电脑交易算法的智斗的报道,两个挪威的交易员通过预测 Timber Hill 电脑算法对特定交易的反应来赚钱,结果被告上了法庭,被裁定为操纵市场。