Forum     

Go Back   Digit Technology Discussion Forum > Software > Programming
Register FAQ Calendar Mark Forums Read

Programming The destination for developers - C, C++, Java, Python and the lot


Reply
 
LinkBack Thread Tools Display Modes
Old 01-06-2011, 11:28 PM   #1 (permalink)
Linux Struggler
 
uniquerockrz's Avatar
 
Join Date: Feb 2011
Location: Kolkata
Posts: 15
Default BackupHelper using C - helps to take your backups easily


This is a simple program I wrote using C because I was too lazy to see individual folders to take my backup. Most backup program allow you to sync your hard disk with external rewritable drive, such as pen drives, external hard drive or a upload server. This one will help you to sync your drive (or a part of it) with non-rewriteable media such as DVDs which are cheapest for taking backups.

Using this program, you can:
  • Check what files you need to add in your backup drive
  • Check what files have been modified since the last backup
  • Know if two directory structure are synced or not.
  • Check what files have been deleted since the last backup

The program works with the help of two input files, an old filelist text file and a new file list text file. This would work in Linux systems (I have tested it individually), sorry I dont know about windows as i dont have that installed. 8)

Copy and save the program as BackupHelper.c, compile the program using gcc using the following code
Code:
$ gcc -Wall BackupHelper.c -o BackupHelper
Now, first take a backup of your hard disk (or a folder in it, say music) in a DVD. Now cd to that folder and create a filelist of that folder and save it in any name (say a.txt)

Code:
$ cd music
$ tree -fis > a.txt
Copy this file in the folder the program executable is present.
Note: If you dont use the -s option, the program wont check for file modifications or changes, it will only check for content added.

Now after some days (maybe when you have added more content in your music folder) cd to the folder you want to take the backup. Again create a filelist of that folder using the following commands.
Code:
$ cd music
$ tree -fis > b.txt
Copy the b.txt to the program's executable folder. Now you need to compare the both the files to see the changes in music folder. For that, type ./BackupHelper oldfilelist.txt newfilelist.txt and press enter.
Code:
$ ./BackupHelper a.txt b.txt
The program would display all the files and folders that have been added after your last backup. Now you can burn the changed or added files in your backup dvd.



Uploaded with ImageShack.us

Delete the old filelist file. Keep the new. Next time you want to take backup, cd to the folder and create the filelist file using tree -fis >filelist.txt command. Compare the older file with new one and you are done.

Please note: This program doesnt takes your backups, but rather helps you to, so the name is BackupHelper. For encryption or more advanced options, you can use deja dup. However you have to write another DVD everytime you backup, thus increasing file-redundancy and costs. This will help you keeping the directories synced, the backup, however, you have to do manually.

If no changes have been made since the last backup, the program would display a message saying so. It also displays the files that were present earlier but have been recently deleted. You can also use it to know if two folders are synced.

Code:
// Program BackupHelper.c
#include <stdio.h>
char oldfile[10000][200], newfile[10000][200]; // stores the file content
int nold, nnew; // number of files in each file list
int main(int argc, char *argv[]){
	int copytoarray(char filename[100], char arr[10000][200]);
	void comparefiles();
	// copying the file content in an array
	nold=copytoarray(argv[1], oldfile);
	nnew=copytoarray(argv[2], newfile);
	printf("\n");
	// comparing the files and displaying the differences
	comparefiles(newfile, oldfile);
	return 0;
}
int copytoarray(char filename[100], char arr[10000][200]){
	FILE *fp;
	int i,n;
	fp=fopen(filename,"r");
	i=0;
	while(fgets(arr[i],200,fp)!=NULL)
		i++;
	n=i;
	return n;
}
void comparefiles(){
	int i,j,n=0;
	int comparestr(char str1[200], char str2[200]);
	for(i=0,j=0;i<(nnew-1);){
		if(j>(nold-1)){
			n++;
			printf("%d Changed/Added %s\n",n, newfile[i]);
			i++;
			j=0;
		}
		if(comparestr(newfile[i], oldfile[j])){
			i++;
			oldfile[j][0]='\0';
			j=0;
		}
		else j++;
	}
	if(n==0)
		printf("Backup is up to date! No notable difference found.\n");
	for(i=0;i<(nold-2);i++){
		if(oldfile[i][0]!='\0'){
			n++;
			printf("%d Deleted : %s\n", n, oldfile[i]);
		}
	}
}
int comparestr(char str1[200],char str2[200]){
	int i;
	if(str2[0]=='\0'){
		return 0;
	}
	else{
		for(i=0;str1[i]!='\n';i++){
			if(str1[i]!=str2[i])
				return 0;
			}
		}
	return 1;
}
__________________
My blog -> http://intoanotherdawn.tk
uniquerockrz is offline   Reply With Quote
Advertisements. Register and be a member of the community to get rid of them.
Advertisement

Old 02-06-2011, 12:12 AM   #2 (permalink)
Mozilla Rep
 
sygeek's Avatar
 
Join Date: Apr 2011
Location: Lucknow
Posts: 1,470
Default Re: BackupHelper using C - helps to take your backups easily

Seems interesting and simple, I'll try it soon. However I guess there may be other softwares that serves this purpose too..
sygeek is online now   Reply With Quote
Reply

Bookmarks

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On


 
Latest Threads
- by Charan
- by Sarath
- by clmlbx

Advertisement




All times are GMT +5.5. The time now is 12:29 AM.


Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2012, vBulletin Solutions, Inc.

Search Engine Optimization by vBSEO 3.3.2