|
|
| virtual_backup_with_zipping
|
function virtual_backup_with_zipping
% Virtual Backup: Back up "Virtually" all your data and save them as zipped files.
%
%
% Notes:- 1. If the file has no extension, it will be saved with .mat extension.
%
% 2. Select the destination directory to be as close as main drives as possible, like "C:\TP" rather than "C:\TP\main\here\getit\".
%
% 3. Only english fonts are accepted, so if any file/directory is named in different font, will give error.
warning( 'off', 'all');
dir_name_char_source=uigetdir('/home', 'Pick a Source Directory/Drive');
name=dir_name_char_source(find(not(dir_name_char_source-92), 1, 'last' )+1:length(dir_name_char_source));
if isempty(name)
name=['Drive ' dir_name_char_source(1)];
end
dir_name_char_dest_org=uigetdir('/home', 'Save the Backup Directory as a zipped file:');
zip_filename=[dir_name_char_dest_org '/' name '.zip'];
dir_name_char_dest=[pwd '\' name '\'];
mkdir(dir_name_char_dest);
[yes_subdir_addr_list1,no_subdir_addr_list] = find_dir_inside(cellstr(dir_name_char_source));
daa1=length(yes_subdir_addr_list1)+length(no_subdir_addr_list);
while (1)
yes_subdir_addr_list2=[];
for i=1:length(yes_subdir_addr_list1)
[yes_subdir_addr,no_subdir_addr] = find_dir_inside(yes_subdir_addr_list1(i));
no_subdir_addr_list=[no_subdir_addr_list no_subdir_addr]; %#ok<AGROW>
yes_subdir_addr_list2 = [yes_subdir_addr_list2 yes_subdir_addr]; %#ok<AGROW>
end
daa2=length(yes_subdir_addr_list2)+length(no_subdir_addr_list);
if daa2==daa1
break,end
daa1=daa2;
yes_subdir_addr_list1=yes_subdir_addr_list2;
end
complete_dir_list=[yes_subdir_addr_list2 no_subdir_addr_list];
for j=1:length(complete_dir_list)
source_dir_address=char(complete_dir_list(j));
dest_dir_address=[dir_name_char_dest source_dir_address(length(dir_name_char_source)+1:length(source_dir_address))];
mkdir(dest_dir_address);
copy_files(source_dir_address,dest_dir_address);
end
zip(zip_filename,dir_name_char_dest );
rmdir(dir_name_char_dest,'s');
function [dir_list,alt_dir_list]=find_dir_inside(dir_name_cell)
% This code gets the list of all directories inside "dir_name_cell" and
% thats in cell class.
alt_dir_list=[];
dir_name=char(dir_name_cell);
listing = dir(dir_name);
dir_list=[];
for i=1:size(listing,1)
name_item=listing(i).name;
comp_dir_name=[dir_name '\' name_item];
if isdir(comp_dir_name) && name_item(1)~='.'
dir_list = [dir_list cellstr(comp_dir_name)]; %#ok<AGROW>
end
end
if isempty(dir_list)
dir_list=dir_name_cell;
else
alt_dir_list=dir_name_cell;
end
function copy_files(dir_name_char_source,dir_name_char_dest)
% This code copies all files from source to destination directories.
datazero=0; %#ok<NASGU>
dir_name=dir_name_char_source;
listing = dir(dir_name);
for i=1:size(listing,1)
name_item=listing(i).name;
comp_dir_name=[dir_name '\' name_item];
if ~isdir(comp_dir_name) && name_item(1)~='.'
dest_address=[dir_name_char_dest '\' name_item];
save(dest_address,'datazero');
end
end
|
|
Contact us at files@mathworks.com