用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.

类似文章:
现在相机的像素实在是太高了,上次 去泰山玩 ,朋友的 1200 万像素的 D90 照出来的照片分辨率高达 4288×2848 ,即使转为 jpg 格式,每张都在 5M 以上。而现在电脑屏幕的分辨率最高也在 1920 以下吧,超高分辨率的照片除了打印大照片之外没什么用处,反而不方便传输、流通、保存。
最近做一些 优化问题 ,找到了 YALMIP 工具包。在其帮助文件里看到如何使用该工具包 求解 sudoku ,整个思路是将问题转化为整数规划问题。这样的思路以前也想到过,但总觉得整数规划问题的求解会更复杂。但是下面的 Matlab 代码,显示它可以非常简洁,思路见程序的注释(程序运行需要安装 YALMIP 工具包):
投资 » 凯利判据
凯利判据( 英文 wikipedia )是一种人们在面对不确定事物时的选择标准,更准确地说,凯利判据是 效应函数 为「log 函数」的投资者(或赌徒)的决策方式。下面直接用一个例子来说明:
刚看到 操盘手 Peder Veiby、Anders Brosveet 与电脑交易算法的智斗 的报道,两个挪威的交易员通过预测 Timber Hill 电脑算法对特定交易的反应来赚钱,结果被告上了法庭,被裁定为操纵市场。