返回首頁

如何利用Matlab腳本同步和備份資料

時間:2014-04-30 01:10來源:知行網www.wtckvq.live 編輯:麥田守望者

基于將工作文件在家里電腦和公司電腦上的轉移、Kindle上電子書的管理的需求,我用Matlab寫了幾個函數,用來實現這些需求。

sync-backup.zip10.2 KiB
用來同步和備份文件的Matlab函數。使用方法可help backupfolder, help syncfolder。

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})可以查看歷史版本的差異。

------分隔線----------------------------
標簽(Tag):MATLAB
------分隔線----------------------------
推薦內容
猜你感興趣
深蓝海域APP